PageSourceSearch

https://stkipahlussunnahbukittinggi.ac.id/src/components/ui/FileUpload.vue

js stkipahlussunnahbukittinggi.ac.id collected 2026-10-06 21:24:43 UTC 17,835 bytes, 166 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/ui/FileUpload.vue");import { ref } from "/node_modules/.vite/deps/vue.js?v=825bfe78"
2
3
4const _sfc_main = {
5  __name: 'FileUpload',
6  props: {
7  label: String,
8  accept: {
9    type: String,
10    default: '*/*'
11  },
12  acceptLabel: String,
13  loading: {
14    type: Boolean,
15    default: false
16  },
17  maxSizeMb: {
18    type: Number,
19    default: 5
20  },
21  error: String
22},
23  emits: ['upload'],
24  setup(__props, { expose: __expose, emit: __emit }) {
25  __expose();
26
27const props = __props
28
29const emit = __emit
30
31const fileInput = ref(null)
32const isDragging = ref(false)
33const localError = ref('')
34
35const validateAndEmit = (file) => {
36  localError.value = ''
37  if (!file) return
38
39  const maxBytes = props.maxSizeMb * 1024 * 1024
40  if (file.size > maxBytes) {
41    localError.value = `Ukuran berkas melebihi batas maksimum (${props.maxSizeMb}MB)`
42    return
43  }
44
45  emit('upload', file)
46}
47
48const handleDrop = (e) => {
49  isDragging.value = false
50  const files = e.dataTransfer.files
51  if (files.length > 0) {
52    validateAndEmit(files[0])
53  }
54}
55
56const handleFileSelect = (e) => {
57  const files = e.target.files
58  if (files.length > 0) {
59    validateAndEmit(files[0])
60    // Reset file input so same file can be uploaded again if needed
61    if (fileInput.value) fileInput.value.value = ''
62  }
63}
64
65const __returned__ = { props, emit, fileInput, isDragging, localError, validateAndEmit, handleDrop, handleFileSelect, ref }
66Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })
67return __returned__
68}
69
70}
71import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass } from "/node_modules/.vite/deps/vue.js?v=825bfe78"
72
73const _hoisted_1 = { class: "space-y-2" }
74const _hoisted_2 = {
75  key: 0,
76  class: "block text-xs font-bold text-slate-700"
77}
78const _hoisted_3 = ["accept"]
79const _hoisted_4 = { class: "text-[10px] text-slate-400 mt-1" }
80const _hoisted_5 = {
81  key: 0,
82  class: "w-full max-w-xs bg-slate-100 rounded-full h-1.5 overflow-hidden mt-2"
83}
84const _hoisted_6 = {
85  key: 1,
86  class: "text-[11px] font-semibold text-rose-600 mt-1"
87}
88
89function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
90  return (_openBlock(), _createElementBlock("div", _hoisted_1, [
91    ($props.label)
92      ? (_openBlock(), _createElementBlock("label", _hoisted_2, _toDisplayString($props.label), 1 /* TEXT */))
93      : _createCommentVNode("v-if", true),
94    _createCommentVNode(" Drag & Drop Zone "),
95    _createElementVNode("div", {
96      onDragover: _cache[0] || (_cache[0] = _withModifiers($event => ($setup.isDragging = true), ["prevent"])),
97      onDragleave: _cache[1] || (_cache[1] = _withModifiers($event => ($setup.isDragging = false), ["prevent"])),
98      onDrop: _withModifiers($setup.handleDrop, ["prevent"]),
99      onClick: _cache[2] || (_cache[2] = $event => (_ctx.$refs.fileInput.click())),
100      class: _normalizeClass(["border-2 border-dashed rounded-xl p-6 text-center cursor-pointer transition-all flex flex-col items-center justify-center space-y-2 group", [
101        $setup.isDragging ? 'border-academic bg-academic/5' : 'border-slate-300 hover:border-academic bg-slate-50/50 hover:bg-slate-50'
102      ]])
103    }, [
104      _createElementVNode("input", {
105        type: "file",
106        ref: "fileInput",
107        class: "hidden",
108        accept: $props.accept,
109        onChange: $setup.handleFileSelect
110      }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_3),
111      _createCommentVNode(" Upload Icon "),
112      _cache[5] || (_cache[5] = _createElementVNode("div", { class: "p-3 bg-white rounded-full shadow-sm group-hover:scale-110 transition-transform" }, [
113        _createElementVNode("svg", {
114          class: "h-6 w-6 text-slate-400 group-hover:text-academic",
115          xmlns: "http://www.w3.org/2000/svg",
116          fill: "none",
117          viewBox: "0 0 24 24",
118          stroke: "currentColor"
119        }, [
120          _createElementVNode("path", {
121            "stroke-linecap": "round",
122            "stroke-linejoin": "round",
123            "stroke-width": "2",
124            d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
125          })
126        ])
127      ], -1 /* CACHED */)),
128      _createElementVNode("div", null, [
129        _cache[3] || (_cache[3] = _createElementVNode("p", { class: "text-xs font-bold text-slate-700" }, " Klik untuk unggah atau seret berkas ke sini ", -1 /* CACHED */)),
130        _createElementVNode("p", _hoisted_4, " Format: " + _toDisplayString($props.acceptLabel || $props.accept) + " (Maks. " + _toDisplayString($props.maxSizeMb) + "MB) ", 1 /* TEXT */)
131      ]),
132      _createCommentVNode(" File Preview / Loading "),
133      ($props.loading)
134        ? (_openBlock(), _createElementBlock("div", _hoisted_5, [...(_cache[4] || (_cache[4] = [
135            _createElementVNode("div", {
136              class: "bg-academic h-1.5 rounded-full animate-pulse",
137              style: {"width":"70%"}
138            }, null, -1 /* CACHED */)
139          ]))]))
140        : _createCommentVNode("v-if", true)
141    ], 34 /* CLASS, NEED_HYDRATION */),
142    _createCommentVNode(" Error Display "),
143    ($props.error || $setup.localError)
144      ? (_openBlock(), _createElementBlock("p", _hoisted_6, _toDisplayString($props.error || $setup.localError), 1 /* TEXT */))
145      : _createCommentVNode("v-if", true)
146  ]))
147}
148
149
150_sfc_main.__hmrId = "163a71b1"
151typeof __VUE_HMR_RUNTIME__ !== 'undefined' && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main)
152import.meta.hot.on('file-changed', ({ file }) => {
153  __VUE_HMR_RUNTIME__.CHANGED_FILE = file
154})
155import.meta.hot.accept(mod => {
156  if (!mod) return
157  const { default: updated, _rerender_only } = mod
158  if (_rerender_only) {
159    __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render)
160  } else {
161    __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated)
162  }
163})
164import _export_sfc from "/@id/__x00__plugin-vue:export-helper"
165export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',"G:/xampp82/htdocs/project/siakad-stkip-ahlussunnah/frontend/src/components/ui/FileUpload.vue"]])
166//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiRmlsZVVwbG9hZC52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic3BhY2UteS0yXCI+XG4gICAgPGxhYmVsIHYtaWY9XCJsYWJlbFwiIGNsYXNzPVwiYmxvY2sgdGV4dC14cyBmb250LWJvbGQgdGV4dC1zbGF0ZS03MDBcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgXG4gICAgPCEtLSBEcmFnICYgRHJvcCBab25lIC0tPlxuICAgIDxkaXYgXG4gICAgICBAZHJhZ292ZXIucHJldmVudD1cImlzRHJhZ2dpbmcgPSB0cnVlXCJcbiAgICAgIEBkcmFnbGVhdmUucHJldmVudD1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gICAgICBAZHJvcC5wcmV2ZW50PVwiaGFuZGxlRHJvcFwiXG4gICAgICBAY2xpY2s9XCIkcmVmcy5maWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICBjbGFzcz1cImJvcmRlci0yIGJvcmRlci1kYXNoZWQgcm91bmRlZC14bCBwLTYgdGV4dC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1hbGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteS0yIGdyb3VwXCJcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgaXNEcmFnZ2luZyA/ICdib3JkZXItYWNhZGVtaWMgYmctYWNhZGVtaWMvNScgOiAnYm9yZGVyLXNsYXRlLTMwMCBob3Zlcjpib3JkZXItYWNhZGVtaWMgYmctc2xhdGUtNTAvNTAgaG92ZXI6Ymctc2xhdGUtNTAnXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aW5wdXQgXG4gICAgICAgIHR5cGU9XCJmaWxlXCIgXG4gICAgICAgIHJlZj1cImZpbGVJbnB1dFwiIFxuICAgICAgICBjbGFzcz1cImhpZGRlblwiIFxuICAgICAgICA6YWNjZXB0PVwiYWNjZXB0XCIgXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVGaWxlU2VsZWN0XCIgXG4gICAgICAvPlxuICAgICAgXG4gICAgICA8IS0tIFVwbG9hZCBJY29uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMyBiZy13aGl0ZSByb3VuZGVkLWZ1bGwgc2hhZG93LXNtIGdyb3VwLWhvdmVyOnNjYWxlLTExMCB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LXNsYXRlLTQwMCBncm91cC1ob3Zlcjp0ZXh0LWFjYWRlbWljXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTcgMTZhNCA0IDAgMDEtLjg4LTcuOTAzQTUgNSAwIDExMTUuOSA2TDE2IDZhNSA1IDAgMDExIDkuOU0xNSAxM2wtMy0zbTAgMGwtMyAzbTMtM3YxMlwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxkaXY+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC1zbGF0ZS03MDBcIj5cbiAgICAgICAgICBLbGlrIHVudHVrIHVuZ2dhaCBhdGF1IHNlcmV0IGJlcmthcyBrZSBzaW5pXG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXNsYXRlLTQwMCBtdC0xXCI+XG4gICAgICAgICAgRm9ybWF0OiB7eyBhY2NlcHRMYWJlbCB8fCBhY2NlcHQgfX0gKE1ha3MuIHt7IG1heFNpem
166VNYiB9fU1CKVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGaWxlIFByZXZpZXcgLyBMb2FkaW5nIC0tPlxuICAgICAgPGRpdiB2LWlmPVwibG9hZGluZ1wiIGNsYXNzPVwidy1mdWxsIG1heC13LXhzIGJnLXNsYXRlLTEwMCByb3VuZGVkLWZ1bGwgaC0xLjUgb3ZlcmZsb3ctaGlkZGVuIG10LTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJnLWFjYWRlbWljIGgtMS41IHJvdW5kZWQtZnVsbCBhbmltYXRlLXB1bHNlXCIgc3R5bGU9XCJ3aWR0aDogNzAlXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRXJyb3IgRGlzcGxheSAtLT5cbiAgICA8cCB2LWlmPVwiZXJyb3IgfHwgbG9jYWxFcnJvclwiIGNsYXNzPVwidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXJvc2UtNjAwIG10LTFcIj57eyBlcnJvciB8fCBsb2NhbEVycm9yIH19PC9wPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnXG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICBsYWJlbDogU3RyaW5nLFxuICBhY2NlcHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJyovKidcbiAgfSxcbiAgYWNjZXB0TGFiZWw6IFN0cmluZyxcbiAgbG9hZGluZzoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgbWF4U2l6ZU1iOiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIGRlZmF1bHQ6IDVcbiAgfSxcbiAgZXJyb3I6IFN0cmluZ1xufSlcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsndXBsb2FkJ10pXG5cbmNvbnN0IGZpbGVJbnB1dCA9IHJlZihudWxsKVxuY29uc3QgaXNEcmFnZ2luZyA9IHJlZihmYWxzZSlcbmNvbnN0IGxvY2FsRXJyb3IgPSByZWYoJycpXG5cbmNvbnN0IHZhbGlkYXRlQW5kRW1pdCA9IChmaWxlKSA9PiB7XG4gIGxvY2FsRXJyb3IudmFsdWUgPSAnJ1xuICBpZiAoIWZpbGUpIHJldHVyblxuXG4gIGNvbnN0IG1heEJ5dGVzID0gcHJvcHMubWF4U2l6ZU1iICogMTAyNCAqIDEwMjRcbiAgaWYgKGZpbGUuc2l6ZSA+IG1heEJ5dGVzKSB7XG4gICAgbG9jYWxFcnJvci52YWx1ZSA9IGBVa3VyYW4gYmVya2FzIG1lbGViaWhpIGJhdGFzIG1ha3NpbXVtICgke3Byb3BzLm1heFNpemVNYn1NQilgXG4gICAgcmV0dXJuXG4gIH1cblxuICBlbWl0KCd1cGxvYWQnLCBmaWxlKVxufVxuXG5jb25zdCBoYW5kbGVEcm9wID0gKGUpID0+IHtcbiAgaXNEcmFnZ2luZy52YWx1ZSA9IGZhbHNlXG4gIGNvbnN0IGZpbGVzID0gZS5kYXRhVHJhbnNmZXIuZmlsZXNcbiAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICB2YWxpZGF0ZUFuZEVtaXQoZmlsZXNbMF0pXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlKSA9PiB7XG4gIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICB2YWxpZGF0ZUFuZEVtaXQoZmlsZXNbMF0pXG4gICAgLy8gUmVzZXQgZmlsZSBpbnB1dCBzbyBzYW1lIGZpbGUgY2FuIGJlIHVwbG9hZGVkIGFnYWluIGlmIG5lZWRlZFxuICAgIGlmIChmaWxlSW5wdXQudmFsdWUpIGZpbGVJbnB1dC52YWx1ZS52YWx1ZSA9ICcnXG4gIH1cbn1cbjwvc2NyaXB0PlxuIl0sIm1hcHBpbmdzIjoiQUFtREEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFrQmQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFYixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUV6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWxCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1Qs
166Q0FBQyxDQUFDOztBQUVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCOztBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUNGOztBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFDRjs7Ozs7Ozs7OztxQkF4R08sS0FBSyxFQUFDLFdBQVc7OztFQUNBLEtBQUssRUFBQyx3Q0FBd0M7OztxQkFnQzNELEtBQUssRUFBQyxpQ0FBaUM7OztFQU14QixLQUFLLEVBQUMsc0VBQXNFOzs7O0VBTXBFLEtBQUssRUFBQyw4Q0FBOEM7Ozs7d0JBN0NwRixvQkE4Q00sT0E5Q04sVUE4Q007S0E3Q1MsWUFBSzt1QkFBbEIsb0JBQXNGLFNBQXRGLFVBQXNGLG1CQUFoQixZQUFLOztJQUUzRSx5Q0FBeUI7SUFDekIsb0JBc0NNO01BckNILFVBQVEsc0RBQVUsaUJBQVU7TUFDNUIsV0FBUyxzREFBVSxpQkFBVTtNQUM3QixNQUFJLGlCQUFVLGlCQUFVO01BQ3hCLE9BQUssdUNBQUUsVUFBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLO01BQzdCLEtBQUssbUJBQUMsMklBQTJJO1FBQy9ILGlCQUFVOzs7TUFJNUIsb0JBTUU7UUFMQSxJQUFJLEVBQUMsTUFBTTtRQUNYLEdBQUcsRUFBQyxXQUFXO1FBQ2YsS0FBSyxFQUFDLFFBQVE7UUFDYixNQUFNLEVBQUUsYUFBTTtRQUNkLFFBQU0sRUFBRSx1QkFBZ0I7O01BRzNCLG9DQUFvQjtnQ0FDcEIsb0JBSU0sU0FKRCxLQUFLLEVBQUMsZ0ZBQWdGO1FBQ3pGLG9CQUVNO1VBRkQsS0FBSyxFQUFDLGtEQUFrRDtVQUFDLEtBQUssRUFBQyw0QkFBNEI7VUFBQyxJQUFJLEVBQUMsTUFBTTtVQUFDLE9BQU8sRUFBQyxXQUFXO1VBQUMsTUFBTSxFQUFDLGNBQWM7O1VBQ3BKLG9CQUFrSztZQUE1SixnQkFBYyxFQUFDLE9BQU87WUFBQyxpQkFBZSxFQUFDLE9BQU87WUFBQyxjQUFZLEVBQUMsR0FBRztZQUFDLENBQUMsRUFBQyx1RkFBdUY7Ozs7TUFJbkssb0JBT007a0NBTkosb0JBRUksT0FGRCxLQUFLLEVBQUMsa0NBQWtDLElBQUMsK0NBRTVDO1FBQ0Esb0JBRUksS0FGSixVQUVJLEVBRnVDLFdBQ2pDLG9CQUFHLGtCQUFXLElBQUksYUFBTSxJQUFHLFVBQVEsb0JBQUcsZ0JBQVMsSUFBRyxNQUM1RDs7TUFHRiwrQ0FBK0I7T0FDcEIsY0FBTzt5QkFBbEIsb0JBRU0sT0FGTixVQUVNO1lBREosb0JBQW1GO2NBQTlFLEtBQUssRUFBQyw4Q0FBOEM7Y0FBQyxLQUFrQixFQUFsQixlQUFrQjs7Ozs7SUFJaEYsc0NBQXNCO0tBQ2IsWUFBSyxJQUFJLGl
166CQUFVO3VCQUE1QixvQkFBZ0gsS0FBaEgsVUFBZ0gsbUJBQTFCLFlBQUssSUFBSSxpQkFBVSIsImlnbm9yZUxpc3QiOltdfQ==

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.