{"version":3,"file":"static/js/main.487ccc10.js","mappings":"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EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,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","sources":["../../src/index.ts","../../../src/_common/frame-processor.ts","../../../src/_common/index.ts","../../../src/_common/logging.ts","../../../src/_common/messages.ts","../../../src/_common/models.ts","../../../src/_common/non-real-time-vad.ts","../../../src/_common/resampler.ts","../../../src/_common/utils.ts","../../src/asset-path.ts","../../src/default-model-fetcher.ts","../../src/real-time-vad.ts","../../src/utils.ts","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/common/lib/backend-impl.ts","../node_modules/common/lib/backend.ts","../node_modules/common/lib/version.ts","../node_modules/common/lib/env-impl.ts","../node_modules/common/lib/env.ts","../node_modules/common/lib/tensor-conversion-impl.ts","../node_modules/common/lib/tensor-factory-impl.ts","../node_modules/common/lib/tensor-impl-type-mapping.ts","../node_modules/common/lib/tensor-utils-impl.ts","../node_modules/common/lib/tensor-impl.ts","../node_modules/common/lib/tensor.ts","../node_modules/common/lib/trace.ts","../node_modules/common/lib/inference-session-impl.ts","../node_modules/common/lib/inference-session.ts","../node_modules/common/lib/tensor-conversion.ts","../node_modules/common/lib/tensor-factory.ts","../node_modules/common/lib/onnx-model.ts","../node_modules/common/lib/onnx-value.ts","../node_modules/common/lib/training-session-impl.ts","../node_modules/common/lib/training-session.ts","../node_modules/common/lib/index.ts","../node_modules/onnxruntime-web/lib/onnxjs/instrument.ts","../node_modules/onnxruntime-web/lib/onnxjs/opset.ts","../node_modules/onnxruntime-web/node_modules/guid-typescript/dist/guid.js","../node_modules/onnxruntime-web/node_modules/long/index.js","../node_modules/onnxruntime-web/node_modules/flatbuffers/js/flatbuffers.mjs","../node_modules/onnxruntime-web/lib/onnxjs/ort-schema/flatbuffers/ort-generated.ts","../node_modules/onnxruntime-web/node_modules/@protobufjs/aspromise/index.js","../node_modules/onnxruntime-web/node_modules/@protobufjs/base64/index.js","../node_modules/onnxruntime-web/node_modules/@protobufjs/eventemitter/index.js","../node_modules/onnxruntime-web/node_modules/@protobufjs/float/index.js","../node_modules/onnxruntime-web/node_modules/@protobufjs/inquire/index.js","../node_modules/onnxruntime-web/node_modules/@protobufjs/utf8/index.js","../node_modules/onnxruntime-web/node_modules/@protobufjs/pool/index.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/util/longbits.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/util/minimal.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/writer.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/writer_buffer.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/reader.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/reader_buffer.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/rpc/service.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/rpc.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/roots.js","../node_modules/onnxruntime-web/node_modules/protobufjs/src/index-minimal.js","../node_modules/onnxruntime-web/node_modules/protobufjs/minimal.js","../node_modules/onnxruntime-web/lib/onnxjs/ort-schema/protobuf/onnx.js","../node_modules/onnxruntime-web/lib/onnxjs/util.ts","../node_modules/onnxruntime-web/lib/onnxjs/tensor.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-source.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/types.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/utils.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/packing-utils.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/pack.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/reshape-packed.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/uint8-encode.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/unpack.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/texture-data-encoder.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/texture-layout.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/inference-handler.ts","../node_modules/onnxruntime-web/lib/onnxjs/attribute-with-cache-key.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/batch-normalization.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-definitions.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/binary-op.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/cast.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/concat-packed.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/concat.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/unary-op.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/fuse-utils.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/conv-grouped.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/im2col-pack.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/matmul.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/matmul-pack.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/conv-pack.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/im2col.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/dot-product.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/conv.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/conv-transpose.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/transpose.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/depth-to-space.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/flatten.ts","../node_modules/onnxruntime-web/lib/onnxjs/operators.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/gather.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/gemm.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/image-scaler.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/instance-normalization.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/lrn.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/pad.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/pool.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/reduce.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/reshape.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/upsample.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/resize-packed.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/shape.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/slice.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/softmax.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/split.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/squeeze.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/sum.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/tile.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/ops/unsqueeze.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/op-resolve-rules.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-function-inliner.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/texture-layout-strategy.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-coordinate-lib.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-encoding-lib.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-fragcolor-lib.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-shape-utils-lib.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-vec-lib.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-registered-libs.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/glsl-preprocessor.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/program-manager.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/texture-manager.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/session-handler.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/webgl-context.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/webgl/webgl-context-factory.ts","../node_modules/onnxruntime-web/lib/onnxjs/backends/backend-webgl.ts","../node_modules/onnxruntime-web/lib/onnxjs/backend.ts","../node_modules/onnxruntime-web/lib/onnxjs/execution-plan.ts","../node_modules/onnxruntime-web/lib/onnxjs/attribute.ts","../node_modules/onnxruntime-web/lib/onnxjs/graph.ts","../node_modules/onnxruntime-web/lib/onnxjs/model.ts","../node_modules/onnxruntime-web/lib/onnxjs/session.ts","../node_modules/onnxruntime-web/lib/onnxjs/session-handler-inference.ts","../node_modules/onnxruntime-web/lib/backend-onnxjs.ts","../nodejs-ignore:fs","../nodejs-ignore:path","../node_modules/onnxruntime-web/lib/wasm/binding/ort-wasm.js","../nodejs-ignore:worker_threads","../nodejs-ignore:perf_hooks","../nodejs-ignore:os","../node_modules/onnxruntime-web/lib/wasm/binding/ort-wasm-threaded.js","../node_modules/onnxruntime-web/lib/wasm/binding/ort-wasm-threaded.worker.js","../node_modules/onnxruntime-web/lib/wasm/wasm-factory.ts","../node_modules/onnxruntime-web/lib/wasm/wasm-utils.ts","../node_modules/onnxruntime-web/lib/wasm/run-options.ts","../node_modules/onnxruntime-web/lib/wasm/session-options.ts","../node_modules/onnxruntime-web/lib/wasm/wasm-common.ts","../node_modules/onnxruntime-web/lib/wasm/wasm-utils-load-file.ts","../node_modules/onnxruntime-web/lib/wasm/wasm-core-impl.ts","../proxy-worker:./proxy-worker/main","../node_modules/onnxruntime-web/lib/wasm/proxy-wrapper.ts","../node_modules/onnxruntime-web/lib/wasm/session-handler-inference.ts","../node_modules/onnxruntime-web/lib/backend-wasm.ts","../node_modules/onnxruntime-web/lib/backend-wasm-inference.ts","../node_modules/onnxruntime-web/lib/index.ts","../node_modules/onnxruntime-web/lib/version.ts","../webpack/bootstrap","../webpack/runtime/global","webpack://my-app/./src/index.css?646d","App.css","../node_modules/shared/src/utils.ts","../node_modules/lucide-react/src/defaultAttributes.ts","../node_modules/lucide-react/src/Icon.ts","../node_modules/lucide-react/src/createLucideIcon.ts","../node_modules/lucide-react/src/icons/x.ts","../node_modules/lucide-react/src/icons/mic.ts","../node_modules/lucide-react/src/icons/send.ts","components/RobotAssistant.tsx","components/WelcomeDialog.tsx","App.tsx","index.tsx"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,"/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Backend} from './backend.js';\nimport {InferenceSession} from './inference-session.js';\n\ninterface BackendInfo {\n backend: Backend;\n priority: number;\n\n initPromise?: Promise;\n initialized?: boolean;\n aborted?: boolean;\n error?: string;\n}\n\nconst backends: Map = new Map();\nconst backendsSortedByPriority: string[] = [];\n\n/**\n * Register a backend.\n *\n * @param name - the name as a key to lookup as an execution provider.\n * @param backend - the backend object.\n * @param priority - an integer indicating the priority of the backend. Higher number means higher priority. if priority\n * < 0, it will be considered as a 'beta' version and will not be used as a fallback backend by default.\n *\n * @ignore\n */\nexport const registerBackend = (name: string, backend: Backend, priority: number): void => {\n if (backend && typeof backend.init === 'function' && typeof backend.createInferenceSessionHandler === 'function') {\n const currentBackend = backends.get(name);\n if (currentBackend === undefined) {\n backends.set(name, {backend, priority});\n } else if (currentBackend.priority > priority) {\n // same name is already registered with a higher priority. skip registeration.\n return;\n } else if (currentBackend.priority === priority) {\n if (currentBackend.backend !== backend) {\n throw new Error(`cannot register backend \"${name}\" using priority ${priority}`);\n }\n }\n\n if (priority >= 0) {\n const i = backendsSortedByPriority.indexOf(name);\n if (i !== -1) {\n backendsSortedByPriority.splice(i, 1);\n }\n\n for (let i = 0; i < backendsSortedByPriority.length; i++) {\n if (backends.get(backendsSortedByPriority[i])!.priority <= priority) {\n backendsSortedByPriority.splice(i, 0, name);\n return;\n }\n }\n backendsSortedByPriority.push(name);\n }\n return;\n }\n\n throw new TypeError('not a valid backend');\n};\n\n/**\n * Try to resolve and initialize a backend.\n *\n * @param backendName - the name of the backend.\n * @returns the backend instance if resolved and initialized successfully, or an error message if failed.\n */\nconst tryResolveAndInitializeBackend = async(backendName: string): Promise => {\n const backendInfo = backends.get(backendName);\n if (!backendInfo) {\n return 'backend not found.';\n }\n\n if (backendInfo.initialized) {\n return backendInfo.backend;\n } else if (backendInfo.aborted) {\n return backendInfo.error!;\n } else {\n const isInitializing = !!backendInfo.initPromise;\n try {\n if (!isInitializing) {\n backendInfo.initPromise = backendInfo.backend.init(backendName);\n }\n await backendInfo.initPromise;\n backendInfo.initialized = true;\n return backendInfo.backend;\n } catch (e) {\n if (!isInitializing) {\n backendInfo.error = `${e}`;\n backendInfo.aborted = true;\n }\n return backendInfo.error!;\n } finally {\n delete backendInfo.initPromise;\n }\n }\n};\n\n/**\n * Resolve execution providers from the specific session options.\n *\n * @param options - the session options object.\n * @returns a promise that resolves to a tuple of an initialized backend instance and a session options object with\n * filtered EP list.\n *\n * @ignore\n */\nexport const resolveBackendAndExecutionProviders = async(options: InferenceSession.SessionOptions):\n Promise<[backend: Backend, options: InferenceSession.SessionOptions]> => {\n // extract backend hints from session options\n const eps = options.executionProviders || [];\n const backendHints = eps.map(i => typeof i === 'string' ? i : i.name);\n const backendNames = backendHints.length === 0 ? backendsSortedByPriority : backendHints;\n\n // try to resolve and initialize all requested backends\n let backend: Backend|undefined;\n const errors = [];\n const availableBackendNames = new Set();\n for (const backendName of backendNames) {\n const resolveResult = await tryResolveAndInitializeBackend(backendName);\n if (typeof resolveResult === 'string') {\n errors.push({name: backendName, err: resolveResult});\n } else {\n if (!backend) {\n backend = resolveResult;\n }\n if (backend === resolveResult) {\n availableBackendNames.add(backendName);\n }\n }\n }\n\n // if no backend is available, throw error.\n if (!backend) {\n throw new Error(`no available backend found. ERR: ${errors.map(e => `[${e.name}] ${e.err}`).join(', ')}`);\n }\n\n // for each explicitly requested backend, if it's not available, output warning message.\n for (const {name, err} of errors) {\n if (backendHints.includes(name)) {\n // eslint-disable-next-line no-console\n console.warn(`removing requested execution provider \"${\n name}\" from session options because it is not available: ${err}`);\n }\n }\n\n const filteredEps = eps.filter(i => availableBackendNames.has(typeof i === 'string' ? i : i.name));\n\n return [\n backend, new Proxy(options, {\n get: (target, prop) => {\n if (prop === 'executionProviders') {\n return filteredEps;\n }\n return Reflect.get(target, prop);\n }\n })\n ];\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession} from './inference-session.js';\nimport {OnnxValue} from './onnx-value.js';\nimport {TrainingSession} from './training-session.js';\n\n/**\n * @ignore\n */\nexport declare namespace SessionHandler {\n type FeedsType = {[name: string]: OnnxValue};\n type FetchesType = {[name: string]: OnnxValue | null};\n type ReturnType = {[name: string]: OnnxValue};\n}\n\n/**\n * Represents shared SessionHandler functionality\n *\n * @ignore\n */\ninterface SessionHandler {\n dispose(): Promise;\n\n readonly inputNames: readonly string[];\n readonly outputNames: readonly string[];\n}\n\n/**\n * Represent a handler instance of an inference session.\n *\n * @ignore\n */\nexport interface InferenceSessionHandler extends SessionHandler {\n startProfiling(): void;\n endProfiling(): void;\n\n run(feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType,\n options: InferenceSession.RunOptions): Promise;\n}\n\n/**\n * Represent a handler instance of a training inference session.\n *\n * @ignore\n */\nexport interface TrainingSessionHandler extends SessionHandler {\n readonly evalInputNames: readonly string[];\n readonly evalOutputNames: readonly string[];\n\n lazyResetGrad(): Promise;\n runTrainStep(\n feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType,\n options: InferenceSession.RunOptions): Promise;\n runOptimizerStep(options: InferenceSession.RunOptions): Promise;\n runEvalStep(\n feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType,\n options: InferenceSession.RunOptions): Promise;\n\n getParametersSize(trainableOnly: boolean): Promise;\n loadParametersBuffer(buffer: Uint8Array, trainableOnly: boolean): Promise;\n getContiguousParameters(trainableOnly: boolean): Promise;\n}\n\n/**\n * Represent a backend that provides implementation of model inferencing.\n *\n * @ignore\n */\nexport interface Backend {\n /**\n * Initialize the backend asynchronously. Should throw when failed.\n */\n init(backendName: string): Promise;\n\n createInferenceSessionHandler(uriOrBuffer: string|Uint8Array, options?: InferenceSession.SessionOptions):\n Promise;\n\n createTrainingSessionHandler?\n (checkpointStateUriOrBuffer: TrainingSession.UriOrBuffer, trainModelUriOrBuffer: TrainingSession.UriOrBuffer,\n evalModelUriOrBuffer: TrainingSession.UriOrBuffer, optimizerModelUriOrBuffer: TrainingSession.UriOrBuffer,\n options: InferenceSession.SessionOptions): Promise;\n}\n\nexport {registerBackend} from './backend-impl.js';\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n// This file is generated by /js/scripts/update-version.ts\n// Do not modify file content manually.\n\nexport const version = '1.18.0';\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Env} from './env.js';\nimport {version} from './version.js';\n\ntype LogLevelType = Env['logLevel'];\n\nlet logLevelValue: Required = 'warning';\n\nexport const env: Env = {\n wasm: {} as Env.WebAssemblyFlags,\n webgl: {} as Env.WebGLFlags,\n webgpu: {} as Env.WebGpuFlags,\n versions: {common: version},\n\n set logLevel(value: LogLevelType) {\n if (value === undefined) {\n return;\n }\n if (typeof value !== 'string' || ['verbose', 'info', 'warning', 'error', 'fatal'].indexOf(value) === -1) {\n throw new Error(`Unsupported logging level: ${value}`);\n }\n logLevelValue = value;\n },\n get logLevel(): Required {\n return logLevelValue;\n },\n};\n\n// set property 'logLevel' so that they can be correctly transferred to worker by `postMessage()`.\nObject.defineProperty(env, 'logLevel', {enumerable: true});\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {env as envImpl} from './env-impl.js';\n\nexport declare namespace Env {\n export type WasmPrefixOrFilePaths = string|{\n /* eslint-disable @typescript-eslint/naming-convention */\n 'ort-wasm.wasm'?: string;\n 'ort-wasm-threaded.wasm'?: string;\n 'ort-wasm-simd.wasm'?: string;\n 'ort-training-wasm-simd.wasm'?: string;\n 'ort-wasm-simd-threaded.wasm'?: string;\n /* eslint-enable @typescript-eslint/naming-convention */\n };\n export interface WebAssemblyFlags {\n /**\n * set or get number of thread(s). If omitted or set to 0, number of thread(s) will be determined by system. If set\n * to 1, no worker thread will be spawned.\n *\n * This setting is available only when WebAssembly multithread feature is available in current context.\n *\n * @defaultValue `0`\n */\n numThreads?: number;\n\n /**\n * set or get a boolean value indicating whether to enable SIMD. If set to false, SIMD will be forcely disabled.\n *\n * This setting is available only when WebAssembly SIMD feature is available in current context.\n *\n * @defaultValue `true`\n */\n simd?: boolean;\n\n /**\n * set or get a boolean value indicating whether to enable trace.\n *\n * @deprecated Use `env.trace` instead. If `env.trace` is set, this property will be ignored.\n * @defaultValue `false`\n */\n trace?: boolean;\n\n /**\n * Set or get a number specifying the timeout for initialization of WebAssembly backend, in milliseconds. A zero\n * value indicates no timeout is set.\n *\n * @defaultValue `0`\n */\n initTimeout?: number;\n\n /**\n * Set a custom URL prefix to the .wasm files or a set of overrides for each .wasm file. The override path should be\n * an absolute path.\n */\n wasmPaths?: WasmPrefixOrFilePaths;\n\n /**\n * Set or get a boolean value indicating whether to proxy the execution of main thread to a worker thread.\n *\n * @defaultValue `false`\n */\n proxy?: boolean;\n }\n\n export interface WebGLFlags {\n /**\n * Set or get the WebGL Context ID (webgl or webgl2).\n *\n * @defaultValue `'webgl2'`\n */\n contextId?: 'webgl'|'webgl2';\n /**\n * Get the WebGL rendering context.\n */\n readonly context: WebGLRenderingContext;\n /**\n * Set or get the maximum batch size for matmul. 0 means to disable batching.\n *\n * @deprecated\n */\n matmulMaxBatchSize?: number;\n /**\n * Set or get the texture cache mode.\n *\n * @defaultValue `'full'`\n */\n textureCacheMode?: 'initializerOnly'|'full';\n /**\n * Set or get the packed texture mode\n *\n * @defaultValue `false`\n */\n pack?: boolean;\n /**\n * Set or get whether enable async download.\n *\n * @defaultValue `false`\n */\n async?: boolean;\n }\n\n export interface WebGpuProfilingDataV1TensorMetadata {\n dims: readonly number[];\n dataType: string;\n }\n export interface WebGpuProfilingDataV1 {\n version: 1;\n inputsMetadata: readonly WebGpuProfilingDataV1TensorMetadata[];\n outputsMetadata: readonly WebGpuProfilingDataV1TensorMetadata[];\n kernelId: number;\n kernelType: string;\n kernelName: string;\n programName: string;\n startTime: number;\n endTime: number;\n }\n\n export type WebGpuProfilingData = WebGpuProfilingDataV1;\n\n export interface WebGpuFlags {\n /**\n * Set or get the profiling mode.\n *\n * @deprecated Use `env.webgpu.profiling.mode` instead. If `env.webgpu.profiling.mode` is set, this property will be\n * ignored.\n */\n profilingMode?: 'off'|'default';\n /**\n * Set or get the profiling configuration.\n */\n profiling?: {\n /**\n * Set or get the profiling mode.\n *\n * @defaultValue `'off'`\n */\n mode?: 'off'|'default';\n\n /**\n * Set or get a callback function when a profiling data is received. If not set, the profiling data will be\n * printed to console.\n */\n ondata?: (data: WebGpuProfilingData) => void;\n };\n /**\n * Set or get the power preference.\n *\n * Setting this property only has effect before the first WebGPU inference session is created. The value will be\n * used as options for `navigator.gpu.requestAdapter()`.\n *\n * See {@link https://gpuweb.github.io/gpuweb/#dictdef-gpurequestadapteroptions} for more details.\n *\n * @defaultValue `undefined`\n */\n powerPreference?: 'low-power'|'high-performance';\n /**\n * Set or get the force fallback adapter flag.\n *\n * Setting this property only has effect before the first WebGPU inference session is created. The value will be\n * used as options for `navigator.gpu.requestAdapter()`.\n *\n * See {@link https://gpuweb.github.io/gpuweb/#dictdef-gpurequestadapteroptions} for more details.\n *\n * @defaultValue `undefined`\n */\n forceFallbackAdapter?: boolean;\n /**\n * Set or get the adapter for WebGPU.\n *\n * Setting this property only has effect before the first WebGPU inference session is created. The value will be\n * used as the GPU adapter for the underlying WebGPU backend to create GPU device.\n *\n * If this property is not set, it will be available to get after the first WebGPU inference session is created. The\n * value will be the GPU adapter that created by the underlying WebGPU backend.\n *\n * When use with TypeScript, the type of this property is `GPUAdapter` defined in \"@webgpu/types\".\n * Use `const adapter = env.webgpu.adapter as GPUAdapter;` in TypeScript to access this property with correct type.\n *\n * see comments on {@link Tensor.GpuBufferType}\n */\n adapter: unknown;\n /**\n * Get the device for WebGPU.\n *\n * This property is only available after the first WebGPU inference session is created.\n *\n * When use with TypeScript, the type of this property is `GPUDevice` defined in \"@webgpu/types\".\n * Use `const device = env.webgpu.device as GPUDevice;` in TypeScript to access this property with correct type.\n *\n * see comments on {@link Tensor.GpuBufferType} for more details about why not use types defined in \"@webgpu/types\".\n */\n readonly device: unknown;\n /**\n * Set or get whether validate input content.\n *\n * @defaultValue `false`\n */\n validateInputContent?: boolean;\n }\n}\n\nexport interface Env {\n /**\n * set the severity level for logging.\n *\n * @defaultValue `'warning'`\n */\n logLevel?: 'verbose'|'info'|'warning'|'error'|'fatal';\n\n /**\n * Indicate whether run in debug mode.\n *\n * @defaultValue `false`\n */\n debug?: boolean;\n\n /**\n * set or get a boolean value indicating whether to enable trace.\n *\n * @defaultValue `false`\n */\n trace?: boolean;\n\n /**\n * Get version of the current package.\n */\n readonly versions: {\n readonly common: string;\n readonly web?: string;\n readonly node?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n readonly 'react-native'?: string;\n };\n\n /**\n * Represent a set of flags for WebAssembly\n */\n readonly wasm: Env.WebAssemblyFlags;\n\n /**\n * Represent a set of flags for WebGL\n */\n readonly webgl: Env.WebGLFlags;\n\n /**\n * Represent a set of flags for WebGPU\n */\n readonly webgpu: Env.WebGpuFlags;\n\n [name: string]: unknown;\n}\n\n/**\n * Represent a set of flags as a global singleton.\n */\nexport const env: Env = envImpl;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {TensorToDataUrlOptions, TensorToImageDataOptions} from './tensor-conversion.js';\nimport {Tensor} from './tensor.js';\n\n/**\n * implementation of Tensor.toDataURL()\n */\nexport const tensorToDataURL = (tensor: Tensor, options?: TensorToDataUrlOptions): string => {\n const canvas = typeof document !== 'undefined' ? document.createElement('canvas') : (new OffscreenCanvas(1, 1));\n canvas.width = tensor.dims[3];\n canvas.height = tensor.dims[2];\n const pixels2DContext =\n canvas.getContext('2d') as (CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null);\n\n if (pixels2DContext != null) {\n // Default values for height and width & format\n let width: number;\n let height: number;\n if (options?.tensorLayout !== undefined && options.tensorLayout === 'NHWC') {\n width = tensor.dims[2];\n height = tensor.dims[3];\n } else { // Default layout is NCWH\n width = tensor.dims[3];\n height = tensor.dims[2];\n }\n\n const inputformat = options?.format !== undefined ? options.format : 'RGB';\n\n const norm = options?.norm;\n let normMean: [number, number, number, number];\n let normBias: [number, number, number, number];\n if (norm === undefined || norm.mean === undefined) {\n normMean = [255, 255, 255, 255];\n } else {\n if (typeof (norm.mean) === 'number') {\n normMean = [norm.mean, norm.mean, norm.mean, norm.mean];\n } else {\n normMean = [norm.mean[0], norm.mean[1], norm.mean[2], 0];\n if (norm.mean[3] !== undefined) {\n normMean[3] = norm.mean[3];\n }\n }\n }\n if (norm === undefined || norm.bias === undefined) {\n normBias = [0, 0, 0, 0];\n } else {\n if (typeof (norm.bias) === 'number') {\n normBias = [norm.bias, norm.bias, norm.bias, norm.bias];\n } else {\n normBias = [norm.bias[0], norm.bias[1], norm.bias[2], 0];\n if (norm.bias[3] !== undefined) {\n normBias[3] = norm.bias[3];\n }\n }\n }\n\n const stride = height * width;\n // Default pointer assignments\n let rTensorPointer = 0, gTensorPointer = stride, bTensorPointer = stride * 2, aTensorPointer = -1;\n\n // Updating the pointer assignments based on the input image format\n if (inputformat === 'RGBA') {\n rTensorPointer = 0;\n gTensorPointer = stride;\n bTensorPointer = stride * 2;\n aTensorPointer = stride * 3;\n } else if (inputformat === 'RGB') {\n rTensorPointer = 0;\n gTensorPointer = stride;\n bTensorPointer = stride * 2;\n } else if (inputformat === 'RBG') {\n rTensorPointer = 0;\n bTensorPointer = stride;\n gTensorPointer = stride * 2;\n }\n\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const R = ((tensor.data[rTensorPointer++] as number) - normBias[0]) * normMean[0]; // R value\n const G = ((tensor.data[gTensorPointer++] as number) - normBias[1]) * normMean[1]; // G value\n const B = ((tensor.data[bTensorPointer++] as number) - normBias[2]) * normMean[2]; // B value\n const A = aTensorPointer === -1 ?\n 255 :\n ((tensor.data[aTensorPointer++] as number) - normBias[3]) * normMean[3]; // A value\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n pixels2DContext.fillStyle = 'rgba(' + R + ',' + G + ',' + B + ',' + A + ')';\n pixels2DContext.fillRect(j, i, 1, 1);\n }\n }\n if ('toDataURL' in canvas) {\n return canvas.toDataURL();\n } else {\n throw new Error('toDataURL is not supported');\n }\n } else {\n throw new Error('Can not access image data');\n }\n};\n\n/**\n * implementation of Tensor.toImageData()\n */\nexport const tensorToImageData = (tensor: Tensor, options?: TensorToImageDataOptions): ImageData => {\n const pixels2DContext = typeof document !== 'undefined' ?\n document.createElement('canvas').getContext('2d') :\n new OffscreenCanvas(1, 1).getContext('2d') as OffscreenCanvasRenderingContext2D;\n let image: ImageData;\n if (pixels2DContext != null) {\n // Default values for height and width & format\n let width: number;\n let height: number;\n let channels: number;\n if (options?.tensorLayout !== undefined && options.tensorLayout === 'NHWC') {\n width = tensor.dims[2];\n height = tensor.dims[1];\n channels = tensor.dims[3];\n } else { // Default layout is NCWH\n width = tensor.dims[3];\n height = tensor.dims[2];\n channels = tensor.dims[1];\n }\n const inputformat = options !== undefined ? (options.format !== undefined ? options.format : 'RGB') : 'RGB';\n\n const norm = options?.norm;\n let normMean: [number, number, number, number];\n let normBias: [number, number, number, number];\n if (norm === undefined || norm.mean === undefined) {\n normMean = [255, 255, 255, 255];\n } else {\n if (typeof (norm.mean) === 'number') {\n normMean = [norm.mean, norm.mean, norm.mean, norm.mean];\n } else {\n normMean = [norm.mean[0], norm.mean[1], norm.mean[2], 255];\n if (norm.mean[3] !== undefined) {\n normMean[3] = norm.mean[3];\n }\n }\n }\n if (norm === undefined || norm.bias === undefined) {\n normBias = [0, 0, 0, 0];\n } else {\n if (typeof (norm.bias) === 'number') {\n normBias = [norm.bias, norm.bias, norm.bias, norm.bias];\n } else {\n normBias = [norm.bias[0], norm.bias[1], norm.bias[2], 0];\n if (norm.bias[3] !== undefined) {\n normBias[3] = norm.bias[3];\n }\n }\n }\n\n const stride = height * width;\n if (options !== undefined) {\n if (options.format !== undefined && (channels === 4 && options.format !== 'RGBA') ||\n (channels === 3 && (options.format !== 'RGB' && options.format !== 'BGR'))) {\n throw new Error('Tensor format doesn\\'t match input tensor dims');\n }\n }\n\n // Default pointer assignments\n const step = 4;\n let rImagePointer = 0, gImagePointer = 1, bImagePointer = 2, aImagePointer = 3;\n let rTensorPointer = 0, gTensorPointer = stride, bTensorPointer = stride * 2, aTensorPointer = -1;\n\n // Updating the pointer assignments based on the input image format\n if (inputformat === 'RGBA') {\n rTensorPointer = 0;\n gTensorPointer = stride;\n bTensorPointer = stride * 2;\n aTensorPointer = stride * 3;\n } else if (inputformat === 'RGB') {\n rTensorPointer = 0;\n gTensorPointer = stride;\n bTensorPointer = stride * 2;\n } else if (inputformat === 'RBG') {\n rTensorPointer = 0;\n bTensorPointer = stride;\n gTensorPointer = stride * 2;\n }\n\n image = pixels2DContext.createImageData(width, height);\n\n for (let i = 0; i < height * width;\n rImagePointer += step, gImagePointer += step, bImagePointer += step, aImagePointer += step, i++) {\n image.data[rImagePointer] = ((tensor.data[rTensorPointer++] as number) - normBias[0]) * normMean[0]; // R value\n image.data[gImagePointer] = ((tensor.data[gTensorPointer++] as number) - normBias[1]) * normMean[1]; // G value\n image.data[bImagePointer] = ((tensor.data[bTensorPointer++] as number) - normBias[2]) * normMean[2]; // B value\n image.data[aImagePointer] = aTensorPointer === -1 ?\n 255 :\n ((tensor.data[aTensorPointer++] as number) - normBias[3]) * normMean[3]; // A value\n }\n\n } else {\n throw new Error('Can not access image data');\n }\n return image;\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {OptionsDimensions, OptionsFormat, OptionsNormalizationParameters, OptionsTensorFormat, OptionsTensorLayout, TensorFromGpuBufferOptions, TensorFromImageBitmapOptions, TensorFromImageDataOptions, TensorFromImageElementOptions, TensorFromTextureOptions, TensorFromUrlOptions} from './tensor-factory.js';\nimport {Tensor} from './tensor-impl.js';\nimport {Tensor as TensorInterface} from './tensor.js';\n\ninterface BufferToTensorOptions extends OptionsDimensions, OptionsTensorLayout, OptionsNormalizationParameters,\n OptionsFormat, OptionsTensorFormat {}\n\n/**\n * Create a new tensor object from image object\n *\n * @param buffer - Extracted image buffer data - assuming RGBA format\n * @param imageFormat - input image configuration - required configurations height, width, format\n * @param tensorFormat - output tensor configuration - Default is RGB format\n */\nexport const bufferToTensor = (buffer: Uint8ClampedArray|undefined, options: BufferToTensorOptions): Tensor => {\n if (buffer === undefined) {\n throw new Error('Image buffer must be defined');\n }\n if (options.height === undefined || options.width === undefined) {\n throw new Error('Image height and width must be defined');\n }\n if (options.tensorLayout === 'NHWC') {\n throw new Error('NHWC Tensor layout is not supported yet');\n }\n\n const {height, width} = options;\n\n const norm = options.norm ?? {mean: 255, bias: 0};\n let normMean: [number, number, number, number];\n let normBias: [number, number, number, number];\n\n if (typeof (norm.mean) === 'number') {\n normMean = [norm.mean, norm.mean, norm.mean, norm.mean];\n } else {\n normMean = [norm.mean![0], norm.mean![1], norm.mean![2], norm.mean![3] ?? 255];\n }\n\n if (typeof (norm.bias) === 'number') {\n normBias = [norm.bias, norm.bias, norm.bias, norm.bias];\n } else {\n normBias = [norm.bias![0], norm.bias![1], norm.bias![2], norm.bias![3] ?? 0];\n }\n\n const inputformat = options.format !== undefined ? options.format : 'RGBA';\n // default value is RGBA since imagedata and HTMLImageElement uses it\n\n const outputformat =\n options.tensorFormat !== undefined ? (options.tensorFormat !== undefined ? options.tensorFormat : 'RGB') : 'RGB';\n const stride = height * width;\n const float32Data = outputformat === 'RGBA' ? new Float32Array(stride * 4) : new Float32Array(stride * 3);\n\n // Default pointer assignments\n let step = 4, rImagePointer = 0, gImagePointer = 1, bImagePointer = 2, aImagePointer = 3;\n let rTensorPointer = 0, gTensorPointer = stride, bTensorPointer = stride * 2, aTensorPointer = -1;\n\n // Updating the pointer assignments based on the input image format\n if (inputformat === 'RGB') {\n step = 3;\n rImagePointer = 0;\n gImagePointer = 1;\n bImagePointer = 2;\n aImagePointer = -1;\n }\n\n // Updating the pointer assignments based on the output tensor format\n if (outputformat === 'RGBA') {\n aTensorPointer = stride * 3;\n } else if (outputformat === 'RBG') {\n rTensorPointer = 0;\n bTensorPointer = stride;\n gTensorPointer = stride * 2;\n } else if (outputformat === 'BGR') {\n bTensorPointer = 0;\n gTensorPointer = stride;\n rTensorPointer = stride * 2;\n }\n\n for (let i = 0; i < stride;\n i++, rImagePointer += step, bImagePointer += step, gImagePointer += step, aImagePointer += step) {\n float32Data[rTensorPointer++] = (buffer[rImagePointer] + normBias[0]) / normMean[0];\n float32Data[gTensorPointer++] = (buffer[gImagePointer] + normBias[1]) / normMean[1];\n float32Data[bTensorPointer++] = (buffer[bImagePointer] + normBias[2]) / normMean[2];\n if (aTensorPointer !== -1 && aImagePointer !== -1) {\n float32Data[aTensorPointer++] = (buffer[aImagePointer] + normBias[3]) / normMean[3];\n }\n }\n\n // Float32Array -> ort.Tensor\n const outputTensor = outputformat === 'RGBA' ? new Tensor('float32', float32Data, [1, 4, height, width]) :\n new Tensor('float32', float32Data, [1, 3, height, width]);\n return outputTensor;\n};\n\n/**\n * implementation of Tensor.fromImage().\n */\nexport const tensorFromImage = async(\n image: ImageData|HTMLImageElement|ImageBitmap|string,\n options?: TensorFromImageDataOptions|TensorFromImageElementOptions|TensorFromImageBitmapOptions|\n TensorFromUrlOptions): Promise => {\n // checking the type of image object\n const isHTMLImageEle = typeof (HTMLImageElement) !== 'undefined' && image instanceof HTMLImageElement;\n const isImageDataEle = typeof (ImageData) !== 'undefined' && image instanceof ImageData;\n const isImageBitmap = typeof (ImageBitmap) !== 'undefined' && image instanceof ImageBitmap;\n const isString = typeof image === 'string';\n\n let data: Uint8ClampedArray|undefined;\n let bufferToTensorOptions: BufferToTensorOptions = options ?? {};\n\n const createCanvas = () => {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else if (typeof OffscreenCanvas !== 'undefined') {\n return new OffscreenCanvas(1, 1);\n } else {\n throw new Error('Canvas is not supported');\n }\n };\n const createCanvasContext = (canvas: HTMLCanvasElement|OffscreenCanvas) => {\n if (canvas instanceof HTMLCanvasElement) {\n return canvas.getContext('2d');\n } else if (canvas instanceof OffscreenCanvas) {\n return canvas.getContext('2d') as OffscreenCanvasRenderingContext2D;\n } else {\n return null;\n }\n };\n // filling and checking image configuration options\n if (isHTMLImageEle) {\n // HTMLImageElement - image object - format is RGBA by default\n const canvas = createCanvas();\n canvas.width = image.width;\n canvas.height = image.height;\n const pixels2DContext = createCanvasContext(canvas);\n\n if (pixels2DContext != null) {\n let height = image.height;\n let width = image.width;\n if (options !== undefined && options.resizedHeight !== undefined && options.resizedWidth !== undefined) {\n height = options.resizedHeight;\n width = options.resizedWidth;\n }\n\n if (options !== undefined) {\n bufferToTensorOptions = options;\n if (options.tensorFormat !== undefined) {\n throw new Error('Image input config format must be RGBA for HTMLImageElement');\n } else {\n bufferToTensorOptions.tensorFormat = 'RGBA';\n }\n bufferToTensorOptions.height = height;\n bufferToTensorOptions.width = width;\n } else {\n bufferToTensorOptions.tensorFormat = 'RGBA';\n bufferToTensorOptions.height = height;\n bufferToTensorOptions.width = width;\n }\n\n pixels2DContext.drawImage(image, 0, 0);\n data = pixels2DContext.getImageData(0, 0, width, height).data;\n } else {\n throw new Error('Can not access image data');\n }\n } else if (isImageDataEle) {\n let height: number;\n let width: number;\n\n if (options !== undefined && options.resizedWidth !== undefined && options.resizedHeight !== undefined) {\n height = options.resizedHeight;\n width = options.resizedWidth;\n } else {\n height = image.height;\n width = image.width;\n }\n\n if (options !== undefined) {\n bufferToTensorOptions = options;\n }\n bufferToTensorOptions.format = 'RGBA';\n bufferToTensorOptions.height = height;\n bufferToTensorOptions.width = width;\n\n if (options !== undefined) {\n const tempCanvas = createCanvas();\n\n tempCanvas.width = width;\n tempCanvas.height = height;\n\n const pixels2DContext = createCanvasContext(tempCanvas);\n\n if (pixels2DContext != null) {\n pixels2DContext.putImageData(image, 0, 0);\n data = pixels2DContext.getImageData(0, 0, width, height).data;\n } else {\n throw new Error('Can not access image data');\n }\n } else {\n data = image.data;\n }\n } else if (isImageBitmap) {\n // ImageBitmap - image object - format must be provided by user\n if (options === undefined) {\n throw new Error('Please provide image config with format for Imagebitmap');\n }\n\n const canvas = createCanvas();\n canvas.width = image.width;\n canvas.height = image.height;\n const pixels2DContext = createCanvasContext(canvas);\n\n if (pixels2DContext != null) {\n const height = image.height;\n const width = image.width;\n pixels2DContext.drawImage(image, 0, 0, width, height);\n data = pixels2DContext.getImageData(0, 0, width, height).data;\n bufferToTensorOptions.height = height;\n bufferToTensorOptions.width = width;\n return bufferToTensor(data, bufferToTensorOptions);\n } else {\n throw new Error('Can not access image data');\n }\n } else if (isString) {\n return new Promise((resolve, reject) => {\n const canvas = createCanvas();\n const context = createCanvasContext(canvas);\n if (!image || !context) {\n return reject();\n }\n const newImage = new Image();\n newImage.crossOrigin = 'Anonymous';\n newImage.src = image;\n newImage.onload = () => {\n canvas.width = newImage.width;\n canvas.height = newImage.height;\n context.drawImage(newImage, 0, 0, canvas.width, canvas.height);\n const img = context.getImageData(0, 0, canvas.width, canvas.height);\n\n bufferToTensorOptions.height = canvas.height;\n bufferToTensorOptions.width = canvas.width;\n resolve(bufferToTensor(img.data, bufferToTensorOptions));\n };\n });\n } else {\n throw new Error('Input data provided is not supported - aborted tensor creation');\n }\n\n if (data !== undefined) {\n return bufferToTensor(data, bufferToTensorOptions);\n } else {\n throw new Error('Input data provided is not supported - aborted tensor creation');\n }\n};\n\n/**\n * implementation of Tensor.fromTexture().\n */\nexport const tensorFromTexture = (\n texture: TensorInterface.TextureType, options: TensorFromTextureOptions): Tensor => {\n const {width, height, download, dispose} = options;\n // Always assume RGBAF32. TODO: support different texture format\n const dims = [1, height, width, 4];\n return new Tensor({location: 'texture', type: 'float32', texture, dims, download, dispose});\n};\n\n/**\n * implementation of Tensor.fromGpuBuffer().\n */\nexport const tensorFromGpuBuffer = (\n gpuBuffer: TensorInterface.GpuBufferType, options: TensorFromGpuBufferOptions): Tensor => {\n const {dataType, dims, download, dispose} = options;\n return new Tensor({location: 'gpu-buffer', type: dataType ?? 'float32', gpuBuffer, dims, download, dispose});\n};\n\n/**\n * implementation of Tensor.fromPinnedBuffer().\n */\nexport const tensorFromPinnedBuffer = (\n type: T, buffer: TensorInterface.DataTypeMap[T], dims?: readonly number[]): Tensor =>\n new Tensor({location: 'cpu-pinned', type, data: buffer, dims: dims ?? [buffer.length]});\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from './tensor.js';\n\nexport type SupportedTypedArrayConstructors = Float32ArrayConstructor|Uint8ArrayConstructor|Int8ArrayConstructor|\n Uint16ArrayConstructor|Int16ArrayConstructor|Int32ArrayConstructor|BigInt64ArrayConstructor|Uint8ArrayConstructor|\n Float64ArrayConstructor|Uint32ArrayConstructor|BigUint64ArrayConstructor;\nexport type SupportedTypedArray = InstanceType;\n\n// a runtime map that maps type string to TypedArray constructor. Should match Tensor.DataTypeMap.\nexport const NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP = new Map([\n ['float32', Float32Array],\n ['uint8', Uint8Array],\n ['int8', Int8Array],\n ['uint16', Uint16Array],\n ['int16', Int16Array],\n ['int32', Int32Array],\n ['bool', Uint8Array],\n ['float64', Float64Array],\n ['uint32', Uint32Array],\n]);\n\n// a runtime map that maps type string to TypedArray constructor. Should match Tensor.DataTypeMap.\nexport const NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP = new Map([\n [Float32Array, 'float32'],\n [Uint8Array, 'uint8'],\n [Int8Array, 'int8'],\n [Uint16Array, 'uint16'],\n [Int16Array, 'int16'],\n [Int32Array, 'int32'],\n [Float64Array, 'float64'],\n [Uint32Array, 'uint32'],\n]);\n\n// a dummy type declaration for Float16Array in case any polyfill is available.\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any\n const Float16Array: any;\n}\n\n// the following code allows delaying execution of BigInt/Float16Array checking. This allows lazy initialization for\n// NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP and NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP, which allows BigInt/Float16Array\n// polyfill if available.\nlet isTypedArrayChecked = false;\nexport const checkTypedArray = () => {\n if (!isTypedArrayChecked) {\n isTypedArrayChecked = true;\n const isBigInt64ArrayAvailable = typeof BigInt64Array !== 'undefined' && BigInt64Array.from;\n const isBigUint64ArrayAvailable = typeof BigUint64Array !== 'undefined' && BigUint64Array.from;\n const isFloat16ArrayAvailable = typeof Float16Array !== 'undefined' && Float16Array.from;\n\n if (isBigInt64ArrayAvailable) {\n NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set('int64', BigInt64Array);\n NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigInt64Array, 'int64');\n }\n if (isBigUint64ArrayAvailable) {\n NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set('uint64', BigUint64Array);\n NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigUint64Array, 'uint64');\n }\n if (isFloat16ArrayAvailable) {\n NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set('float16', Float16Array);\n NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(Float16Array, 'float16');\n } else {\n // if Float16Array is not available, use 'Uint16Array' to store the data.\n NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set('float16', Uint16Array);\n }\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {CpuPinnedConstructorParameters, GpuBufferConstructorParameters, TextureConstructorParameters} from './tensor-factory.js';\nimport {Tensor} from './tensor-impl.js';\n\n/**\n * calculate size from dims.\n *\n * @param dims the dims array. May be an illegal input.\n */\nexport const calculateSize = (dims: readonly unknown[]): number => {\n let size = 1;\n for (let i = 0; i < dims.length; i++) {\n const dim = dims[i];\n if (typeof dim !== 'number' || !Number.isSafeInteger(dim)) {\n throw new TypeError(`dims[${i}] must be an integer, got: ${dim}`);\n }\n if (dim < 0) {\n throw new RangeError(`dims[${i}] must be a non-negative integer, got: ${dim}`);\n }\n size *= dim;\n }\n return size;\n};\n\n/**\n * implementation of Tensor.reshape()\n */\nexport const tensorReshape = (tensor: Tensor, dims: readonly number[]): Tensor => {\n switch (tensor.location) {\n case 'cpu':\n return new Tensor(tensor.type, tensor.data, dims);\n case 'cpu-pinned':\n return new Tensor({\n location: 'cpu-pinned',\n data: tensor.data as CpuPinnedConstructorParameters['data'],\n type: tensor.type as CpuPinnedConstructorParameters['type'],\n dims,\n });\n case 'texture':\n return new Tensor({\n location: 'texture',\n texture: tensor.texture,\n type: tensor.type as TextureConstructorParameters['type'],\n dims,\n });\n case 'gpu-buffer':\n return new Tensor({\n location: 'gpu-buffer',\n gpuBuffer: tensor.gpuBuffer,\n type: tensor.type as GpuBufferConstructorParameters['type'],\n dims,\n });\n default:\n throw new Error(`tensorReshape: tensor location ${tensor.location} is not supported`);\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {tensorToDataURL, tensorToImageData} from './tensor-conversion-impl.js';\nimport {TensorToDataUrlOptions, TensorToImageDataOptions} from './tensor-conversion.js';\nimport {tensorFromGpuBuffer, tensorFromImage, tensorFromPinnedBuffer, tensorFromTexture} from './tensor-factory-impl.js';\nimport {CpuPinnedConstructorParameters, GpuBufferConstructorParameters, TensorFromGpuBufferOptions, TensorFromImageBitmapOptions, TensorFromImageDataOptions, TensorFromImageElementOptions, TensorFromTextureOptions, TensorFromUrlOptions, TextureConstructorParameters} from './tensor-factory.js';\nimport {checkTypedArray, NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP, NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP, SupportedTypedArray, SupportedTypedArrayConstructors} from './tensor-impl-type-mapping.js';\nimport {calculateSize, tensorReshape} from './tensor-utils-impl.js';\nimport {Tensor as TensorInterface} from './tensor.js';\n\n// type aliases for those exported from Tensor interface\n\ntype TensorType = TensorInterface.Type;\ntype TensorDataType = TensorInterface.DataType;\ntype TensorDataLocation = TensorInterface.DataLocation;\ntype TensorTextureType = TensorInterface.TextureType;\ntype TensorGpuBufferType = TensorInterface.GpuBufferType;\n\n/**\n * the implementation of Tensor interface.\n *\n * @ignore\n */\nexport class Tensor implements TensorInterface {\n // #region constructors\n\n /**\n * Construct a new CPU tensor object from the given type, data and dims.\n */\n constructor(\n type: TensorType, data: TensorDataType|readonly string[]|readonly number[]|readonly boolean[],\n dims?: readonly number[]);\n /**\n * Construct a new CPU tensor object from the given data and dims. Type is inferred from data.\n */\n constructor(data: TensorDataType|readonly string[]|readonly boolean[], dims?: readonly number[]);\n /**\n * Construct a new tensor object from the pinned CPU data with the given type and dims.\n *\n * Tensor's location will be set to 'cpu-pinned'.\n *\n * @param params - Specify the parameters to construct the tensor.\n */\n constructor(params: CpuPinnedConstructorParameters);\n /**\n * Construct a new tensor object from the WebGL texture with the given type and dims.\n *\n * Tensor's location will be set to 'texture'.\n *\n * @param params - Specify the parameters to construct the tensor.\n */\n constructor(params: TextureConstructorParameters);\n /**\n * Construct a new tensor object from the WebGPU buffer with the given type and dims.\n *\n * Tensor's location will be set to 'gpu-buffer'.\n *\n * @param params - Specify the parameters to construct the tensor.\n */\n constructor(params: GpuBufferConstructorParameters);\n\n /**\n * implementation.\n */\n constructor(\n arg0: TensorType|TensorDataType|readonly string[]|readonly boolean[]|CpuPinnedConstructorParameters|\n TextureConstructorParameters|GpuBufferConstructorParameters,\n arg1?: TensorDataType|readonly number[]|readonly string[]|readonly boolean[], arg2?: readonly number[]) {\n // perform one-time check for BigInt/Float16Array support\n checkTypedArray();\n\n let type: TensorType;\n let dims: readonly number[];\n\n if (typeof arg0 === 'object' && 'location' in arg0) {\n //\n // constructing tensor from specific location\n //\n this.dataLocation = arg0.location;\n type = arg0.type;\n dims = arg0.dims;\n switch (arg0.location) {\n case 'cpu-pinned': {\n const expectedTypedArrayConstructor = NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(type);\n if (!expectedTypedArrayConstructor) {\n throw new TypeError(`unsupported type \"${type}\" to create tensor from pinned buffer`);\n }\n if (!(arg0.data instanceof expectedTypedArrayConstructor)) {\n throw new TypeError(`buffer should be of type ${expectedTypedArrayConstructor.name}`);\n }\n this.cpuData = arg0.data;\n break;\n }\n case 'texture': {\n if (type !== 'float32') {\n throw new TypeError(`unsupported type \"${type}\" to create tensor from texture`);\n }\n this.gpuTextureData = arg0.texture;\n this.downloader = arg0.download;\n this.disposer = arg0.dispose;\n break;\n }\n case 'gpu-buffer': {\n if ((type !== 'float32' && type !== 'float16' && type !== 'int32' && type !== 'int64' && type !== 'uint32' &&\n type !== 'uint8' && type !== 'bool')) {\n throw new TypeError(`unsupported type \"${type}\" to create tensor from gpu buffer`);\n }\n this.gpuBufferData = arg0.gpuBuffer;\n this.downloader = arg0.download;\n this.disposer = arg0.dispose;\n break;\n }\n default:\n throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`);\n }\n } else {\n //\n // constructing tensor of location 'cpu'\n //\n let data: TensorDataType;\n let maybeDims: typeof arg1|typeof arg2;\n // check whether arg0 is type or data\n if (typeof arg0 === 'string') {\n //\n // Override: constructor(type, data, ...)\n //\n type = arg0;\n maybeDims = arg2;\n if (arg0 === 'string') {\n // string tensor\n if (!Array.isArray(arg1)) {\n throw new TypeError('A string tensor\\'s data must be a string array.');\n }\n // we don't check whether every element in the array is string; this is too slow. we assume it's correct and\n // error will be populated at inference\n data = arg1;\n } else {\n // numeric tensor\n const typedArrayConstructor = NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(arg0);\n if (typedArrayConstructor === undefined) {\n throw new TypeError(`Unsupported tensor type: ${arg0}.`);\n }\n if (Array.isArray(arg1)) {\n if (arg0 === 'float16' && typedArrayConstructor === Uint16Array) {\n // When no Float16Array polyfill is used, we cannot create 'float16' tensor from number array.\n //\n // Throw error here because when user try to use number array as data,\n // e.g. new Tensor('float16', [1, 2, 3, 4], dims)), it will actually call\n // Uint16Array.from(arg1) which generates wrong data.\n throw new TypeError(\n 'Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.');\n } else if (arg0 === 'uint64' || arg0 === 'int64') {\n // use 'as any' here because:\n // 1. TypeScript's check on type of 'Array.isArray()' does not work with readonly arrays.\n // see https://github.com/microsoft/TypeScript/issues/17002\n // 2. TypeScript's check on union type of '(BigInt64ArrayConstructor|BigUint64ArrayConstructor).from()'\n // does not accept parameter mapFn.\n // 3. parameters of 'SupportedTypedArrayConstructors.from()' does not match the requirement of the union\n // type.\n\n // assume 'arg1' is of type \"readonly number[]|readonly bigint[]\" here.\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = (typedArrayConstructor as any).from(arg1, BigInt);\n } else {\n // assume 'arg1' is of type \"readonly number[]\" here.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = (typedArrayConstructor as any).from(arg1);\n }\n } else if (arg1 instanceof typedArrayConstructor) {\n data = arg1;\n } else {\n throw new TypeError(`A ${type} tensor's data must be type of ${typedArrayConstructor}`);\n }\n }\n } else {\n //\n // Override: constructor(data, ...)\n //\n maybeDims = arg1;\n if (Array.isArray(arg0)) {\n // only boolean[] and string[] is supported\n if (arg0.length === 0) {\n throw new TypeError('Tensor type cannot be inferred from an empty array.');\n }\n const firstElementType = typeof arg0[0];\n if (firstElementType === 'string') {\n type = 'string';\n data = arg0;\n } else if (firstElementType === 'boolean') {\n type = 'bool';\n // 'arg0' is of type 'boolean[]'. Uint8Array.from(boolean[]) actually works, but typescript thinks this is\n // wrong type. We use 'as any' to make it happy.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = Uint8Array.from(arg0 as any[]);\n } else {\n throw new TypeError(`Invalid element type of data array: ${firstElementType}.`);\n }\n } else {\n // get tensor type from TypedArray\n const mappedType =\n NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.get(arg0.constructor as SupportedTypedArrayConstructors);\n if (mappedType === undefined) {\n throw new TypeError(`Unsupported type for tensor data: ${arg0.constructor}.`);\n }\n type = mappedType;\n data = arg0 as SupportedTypedArray;\n }\n }\n\n // type and data is processed, now processing dims\n if (maybeDims === undefined) {\n // assume 1-D tensor if dims omitted\n maybeDims = [data.length];\n } else if (!Array.isArray(maybeDims)) {\n throw new TypeError('A tensor\\'s dims must be a number array');\n }\n dims = maybeDims as readonly number[];\n\n this.cpuData = data;\n this.dataLocation = 'cpu';\n }\n\n // perform check on dims\n const size = calculateSize(dims);\n // if data is on CPU, check whether data length matches tensor size\n if (this.cpuData && size !== this.cpuData.length) {\n throw new Error(`Tensor's size(${size}) does not match data length(${this.cpuData.length}).`);\n }\n\n this.type = type;\n this.dims = dims;\n this.size = size;\n }\n // #endregion\n\n // #region factory\n static async fromImage(\n image: ImageData|HTMLImageElement|ImageBitmap|string,\n options?: TensorFromImageDataOptions|TensorFromImageElementOptions|TensorFromImageBitmapOptions|\n TensorFromUrlOptions): Promise {\n return tensorFromImage(image, options);\n }\n\n static fromTexture(\n texture: TensorTextureType, options: TensorFromTextureOptions): TensorInterface {\n return tensorFromTexture(texture, options);\n }\n\n static fromGpuBuffer(\n gpuBuffer: TensorGpuBufferType, options: TensorFromGpuBufferOptions): TensorInterface {\n return tensorFromGpuBuffer(gpuBuffer, options);\n }\n\n static fromPinnedBuffer(\n type: T, buffer: TensorInterface.DataTypeMap[T], dims?: readonly number[]): Tensor {\n return tensorFromPinnedBuffer(type, buffer, dims);\n }\n\n // #endregion\n\n // #region conversions\n toDataURL(options?: TensorToDataUrlOptions): string {\n return tensorToDataURL(this, options);\n }\n\n toImageData(options?: TensorToImageDataOptions): ImageData {\n return tensorToImageData(this, options);\n }\n // #endregion\n\n // #region public fields\n readonly dims: readonly number[];\n readonly type: TensorType;\n readonly size: number;\n // #endregion\n\n // #region private fields\n\n /**\n * stores the location of the data.\n */\n private dataLocation: TensorDataLocation;\n\n /**\n * stores the data on CPU, if location is 'cpu' or 'cpu-pinned'. otherwise empty.\n */\n private cpuData?: TensorDataType;\n\n /**\n * stores the underlying texture when location is 'texture'. otherwise empty.\n */\n private gpuTextureData?: TensorTextureType;\n\n /**\n * stores the underlying GPU buffer when location is 'gpu-buffer'. otherwise empty.\n */\n private gpuBufferData?: TensorGpuBufferType;\n\n /**\n * stores an optional downloader function to download data from GPU to CPU.\n */\n private downloader?(): Promise;\n\n /**\n * a flag indicating whether the data is being downloaded from GPU to CPU.\n */\n private isDownloading?: boolean;\n\n /**\n * stores an optional disposer function to dispose the underlying data.\n */\n private disposer?(): void;\n // #endregion\n\n // #region properties\n get data(): TensorDataType {\n this.ensureValid();\n if (!this.cpuData) {\n throw new Error(\n 'The data is not on CPU. Use `getData()` to download GPU data to CPU, ' +\n 'or use `texture` or `gpuBuffer` property to access the GPU data directly.');\n }\n return this.cpuData;\n }\n\n get location(): TensorDataLocation {\n return this.dataLocation;\n }\n\n get texture(): TensorTextureType {\n this.ensureValid();\n if (!this.gpuTextureData) {\n throw new Error('The data is not stored as a WebGL texture.');\n }\n return this.gpuTextureData;\n }\n\n get gpuBuffer(): TensorGpuBufferType {\n this.ensureValid();\n if (!this.gpuBufferData) {\n throw new Error('The data is not stored as a WebGPU buffer.');\n }\n return this.gpuBufferData;\n }\n // #endregion\n\n // #region methods\n\n async getData(releaseData?: boolean): Promise {\n this.ensureValid();\n switch (this.dataLocation) {\n case 'cpu':\n case 'cpu-pinned':\n return this.data;\n case 'texture':\n case 'gpu-buffer': {\n if (!this.downloader) {\n throw new Error('The current tensor is not created with a specified data downloader.');\n }\n if (this.isDownloading) {\n throw new Error('The current tensor is being downloaded.');\n }\n try {\n this.isDownloading = true;\n const data = await this.downloader();\n this.downloader = undefined;\n this.dataLocation = 'cpu';\n this.cpuData = data;\n\n if (releaseData && this.disposer) {\n this.disposer();\n this.disposer = undefined;\n }\n\n return data;\n\n } finally {\n this.isDownloading = false;\n }\n }\n default:\n throw new Error(`cannot get data from location: ${this.dataLocation}`);\n }\n }\n\n dispose(): void {\n if (this.isDownloading) {\n throw new Error('The current tensor is being downloaded.');\n }\n\n if (this.disposer) {\n this.disposer();\n this.disposer = undefined;\n }\n this.cpuData = undefined;\n this.gpuTextureData = undefined;\n this.gpuBufferData = undefined;\n this.downloader = undefined;\n this.isDownloading = undefined;\n\n this.dataLocation = 'none';\n }\n\n // #endregion\n\n // #region tensor utilities\n private ensureValid(): void {\n if (this.dataLocation === 'none') {\n throw new Error('The tensor is disposed.');\n }\n }\n\n reshape(dims: readonly number[]): TensorInterface {\n this.ensureValid();\n if (this.downloader || this.disposer) {\n throw new Error('Cannot reshape a tensor that owns GPU resource.');\n }\n return tensorReshape(this, dims);\n }\n // #endregion\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {TensorFactory} from './tensor-factory.js';\nimport {Tensor as TensorImpl} from './tensor-impl.js';\nimport {TypedTensorUtils} from './tensor-utils.js';\n\n/* eslint-disable @typescript-eslint/no-redeclare */\n\n/**\n * represent a basic tensor with specified dimensions and data type.\n */\ninterface TypedTensorBase {\n /**\n * Get the dimensions of the tensor.\n */\n readonly dims: readonly number[];\n /**\n * Get the data type of the tensor.\n */\n readonly type: T;\n /**\n * Get the buffer data of the tensor.\n *\n * If the data is not on CPU (eg. it's in the form of WebGL texture or WebGPU buffer), throw error.\n */\n readonly data: Tensor.DataTypeMap[T];\n /**\n * Get the location of the data.\n */\n readonly location: Tensor.DataLocation;\n /**\n * Get the WebGL texture that holds the tensor data.\n *\n * If the data is not on GPU as WebGL texture, throw error.\n */\n readonly texture: Tensor.TextureType;\n /**\n * Get the WebGPU buffer that holds the tensor data.\n *\n * If the data is not on GPU as WebGPU buffer, throw error.\n */\n readonly gpuBuffer: Tensor.GpuBufferType;\n\n /**\n * Get the buffer data of the tensor.\n *\n * If the data is on CPU, returns the data immediately.\n * If the data is on GPU, downloads the data and returns the promise.\n *\n * @param releaseData - whether release the data on GPU. Ignore if data is already on CPU.\n */\n getData(releaseData?: boolean): Promise;\n\n /**\n * Dispose the tensor data.\n *\n * If the data is on CPU, remove its internal reference to the underlying data.\n * If the data is on GPU, release the data on GPU.\n *\n * After calling this function, the tensor is considered no longer valid. Its location will be set to 'none'.\n */\n dispose(): void;\n}\n\nexport declare namespace Tensor {\n interface DataTypeMap {\n float32: Float32Array;\n uint8: Uint8Array;\n int8: Int8Array;\n uint16: Uint16Array;\n int16: Int16Array;\n int32: Int32Array;\n int64: BigInt64Array;\n string: string[];\n bool: Uint8Array;\n float16: Uint16Array; // Keep using Uint16Array until we have a concrete solution for float 16.\n float64: Float64Array;\n uint32: Uint32Array;\n uint64: BigUint64Array;\n // complex64: never;\n // complex128: never;\n // bfloat16: never;\n }\n\n interface ElementTypeMap {\n float32: number;\n uint8: number;\n int8: number;\n uint16: number;\n int16: number;\n int32: number;\n int64: bigint;\n string: string;\n bool: boolean;\n float16: number; // Keep using Uint16Array until we have a concrete solution for float 16.\n float64: number;\n uint32: number;\n uint64: bigint;\n // complex64: never;\n // complex128: never;\n // bfloat16: never;\n }\n\n type DataType = DataTypeMap[Type];\n type ElementType = ElementTypeMap[Type];\n\n /**\n * supported data types for constructing a tensor from a pinned CPU buffer\n */\n export type CpuPinnedDataTypes = Exclude;\n\n /**\n * type alias for WebGL texture\n */\n export type TextureType = WebGLTexture;\n\n /**\n * supported data types for constructing a tensor from a WebGL texture\n */\n export type TextureDataTypes = 'float32';\n\n /**\n * type alias for WebGPU buffer\n *\n * The reason why we don't use type \"GPUBuffer\" defined in webgpu.d.ts from @webgpu/types is because \"@webgpu/types\"\n * requires \"@types/dom-webcodecs\" as peer dependency when using TypeScript < v5.1 and its version need to be chosen\n * carefully according to the TypeScript version being used. This means so far there is not a way to keep every\n * TypeScript version happy. It turns out that we will easily broke users on some TypeScript version.\n *\n * for more info see https://github.com/gpuweb/types/issues/127\n */\n export type GpuBufferType = {size: number; mapState: 'unmapped' | 'pending' | 'mapped'};\n\n /**\n * supported data types for constructing a tensor from a WebGPU buffer\n */\n export type GpuBufferDataTypes = 'float32'|'float16'|'int32'|'int64'|'uint32'|'uint8'|'bool';\n\n /**\n * represent where the tensor data is stored\n */\n export type DataLocation = 'none'|'cpu'|'cpu-pinned'|'texture'|'gpu-buffer';\n\n /**\n * represent the data type of a tensor\n */\n export type Type = keyof DataTypeMap;\n}\n\n/**\n * Represent multi-dimensional arrays to feed to or fetch from model inferencing.\n */\nexport interface TypedTensor extends TypedTensorBase, TypedTensorUtils {}\n/**\n * Represent multi-dimensional arrays to feed to or fetch from model inferencing.\n */\nexport interface Tensor extends TypedTensorBase, TypedTensorUtils {}\n\n/**\n * type TensorConstructor defines the constructors of 'Tensor' to create CPU tensor instances.\n */\nexport interface TensorConstructor extends TensorFactory {\n // #region CPU tensor - specify element type\n /**\n * Construct a new string tensor object from the given type, data and dims.\n *\n * @param type - Specify the element type.\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(type: 'string', data: Tensor.DataTypeMap['string']|readonly string[],\n dims?: readonly number[]): TypedTensor<'string'>;\n\n /**\n * Construct a new bool tensor object from the given type, data and dims.\n *\n * @param type - Specify the element type.\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(type: 'bool', data: Tensor.DataTypeMap['bool']|readonly boolean[], dims?: readonly number[]): TypedTensor<'bool'>;\n\n /**\n * Construct a new 64-bit integer typed tensor object from the given type, data and dims.\n *\n * @param type - Specify the element type.\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(\n type: T, data: Tensor.DataTypeMap[T]|readonly bigint[]|readonly number[],\n dims?: readonly number[]): TypedTensor;\n\n /**\n * Construct a new numeric tensor object from the given type, data and dims.\n *\n * @param type - Specify the element type.\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new>(\n type: T, data: Tensor.DataTypeMap[T]|readonly number[], dims?: readonly number[]): TypedTensor;\n // #endregion\n\n // #region CPU tensor - infer element types\n\n /**\n * Construct a new float32 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Float32Array, dims?: readonly number[]): TypedTensor<'float32'>;\n\n /**\n * Construct a new int8 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Int8Array, dims?: readonly number[]): TypedTensor<'int8'>;\n\n /**\n * Construct a new uint8 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Uint8Array, dims?: readonly number[]): TypedTensor<'uint8'>;\n\n /**\n * Construct a new uint16 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Uint16Array, dims?: readonly number[]): TypedTensor<'uint16'>;\n\n /**\n * Construct a new int16 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Int16Array, dims?: readonly number[]): TypedTensor<'int16'>;\n\n /**\n * Construct a new int32 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Int32Array, dims?: readonly number[]): TypedTensor<'int32'>;\n\n /**\n * Construct a new int64 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: BigInt64Array, dims?: readonly number[]): TypedTensor<'int64'>;\n\n /**\n * Construct a new string tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: readonly string[], dims?: readonly number[]): TypedTensor<'string'>;\n\n /**\n * Construct a new bool tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: readonly boolean[], dims?: readonly number[]): TypedTensor<'bool'>;\n\n /**\n * Construct a new float64 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Float64Array, dims?: readonly number[]): TypedTensor<'float64'>;\n\n /**\n * Construct a new uint32 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Uint32Array, dims?: readonly number[]): TypedTensor<'uint32'>;\n\n /**\n * Construct a new uint64 tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: BigUint64Array, dims?: readonly number[]): TypedTensor<'uint64'>;\n\n // #endregion\n\n // #region CPU tensor - fall back to non-generic tensor type declaration\n\n /**\n * Construct a new tensor object from the given type, data and dims.\n *\n * @param type - Specify the element type.\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(type: Tensor.Type, data: Tensor.DataType|readonly number[]|readonly string[]|readonly bigint[]|readonly boolean[],\n dims?: readonly number[]): Tensor;\n\n /**\n * Construct a new tensor object from the given data and dims.\n *\n * @param data - Specify the CPU tensor data.\n * @param dims - Specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n */\n new(data: Tensor.DataType, dims?: readonly number[]): Tensor;\n // #endregion\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const Tensor = TensorImpl as TensorConstructor;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {env} from './env-impl.js';\n\n/**\n * @ignore\n */\nexport const TRACE = (deviceType: string, label: string) => {\n if (typeof env.trace === 'undefined' ? !env.wasm.trace : !env.trace) {\n return;\n }\n // eslint-disable-next-line no-console\n console.timeStamp(`${deviceType}::ORT::${label}`);\n};\n\nconst TRACE_FUNC = (msg: string, extraMsg?: string) => {\n const stack = new Error().stack?.split(/\\r\\n|\\r|\\n/g) || [];\n let hasTraceFunc = false;\n for (let i = 0; i < stack.length; i++) {\n if (hasTraceFunc && !stack[i].includes('TRACE_FUNC')) {\n let label = `FUNC_${msg}::${stack[i].trim().split(' ')[1]}`;\n if (extraMsg) {\n label += `::${extraMsg}`;\n }\n TRACE('CPU', label);\n return;\n }\n if (stack[i].includes('TRACE_FUNC')) {\n hasTraceFunc = true;\n }\n }\n};\n\n/**\n * @ignore\n */\nexport const TRACE_FUNC_BEGIN = (extraMsg?: string) => {\n if (typeof env.trace === 'undefined' ? !env.wasm.trace : !env.trace) {\n return;\n }\n TRACE_FUNC('BEGIN', extraMsg);\n};\n\n/**\n * @ignore\n */\nexport const TRACE_FUNC_END = (extraMsg?: string) => {\n if (typeof env.trace === 'undefined' ? !env.wasm.trace : !env.trace) {\n return;\n }\n TRACE_FUNC('END', extraMsg);\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {resolveBackendAndExecutionProviders} from './backend-impl.js';\nimport {InferenceSessionHandler} from './backend.js';\nimport {InferenceSession as InferenceSessionInterface} from './inference-session.js';\nimport {OnnxValue} from './onnx-value.js';\nimport {Tensor} from './tensor.js';\nimport {TRACE_FUNC_BEGIN, TRACE_FUNC_END} from './trace.js';\n\ntype SessionOptions = InferenceSessionInterface.SessionOptions;\ntype RunOptions = InferenceSessionInterface.RunOptions;\ntype FeedsType = InferenceSessionInterface.FeedsType;\ntype FetchesType = InferenceSessionInterface.FetchesType;\ntype ReturnType = InferenceSessionInterface.ReturnType;\n\nexport class InferenceSession implements InferenceSessionInterface {\n private constructor(handler: InferenceSessionHandler) {\n this.handler = handler;\n }\n run(feeds: FeedsType, options?: RunOptions): Promise;\n run(feeds: FeedsType, fetches: FetchesType, options?: RunOptions): Promise;\n async run(feeds: FeedsType, arg1?: FetchesType|RunOptions, arg2?: RunOptions): Promise {\n TRACE_FUNC_BEGIN();\n const fetches: {[name: string]: OnnxValue|null} = {};\n let options: RunOptions = {};\n // check inputs\n if (typeof feeds !== 'object' || feeds === null || feeds instanceof Tensor || Array.isArray(feeds)) {\n throw new TypeError(\n '\\'feeds\\' must be an object that use input names as keys and OnnxValue as corresponding values.');\n }\n\n let isFetchesEmpty = true;\n // determine which override is being used\n if (typeof arg1 === 'object') {\n if (arg1 === null) {\n throw new TypeError('Unexpected argument[1]: cannot be null.');\n }\n if (arg1 instanceof Tensor) {\n throw new TypeError('\\'fetches\\' cannot be a Tensor');\n }\n\n if (Array.isArray(arg1)) {\n if (arg1.length === 0) {\n throw new TypeError('\\'fetches\\' cannot be an empty array.');\n }\n isFetchesEmpty = false;\n // output names\n for (const name of arg1) {\n if (typeof name !== 'string') {\n throw new TypeError('\\'fetches\\' must be a string array or an object.');\n }\n if (this.outputNames.indexOf(name) === -1) {\n throw new RangeError(`'fetches' contains invalid output name: ${name}.`);\n }\n fetches[name] = null;\n }\n\n if (typeof arg2 === 'object' && arg2 !== null) {\n options = arg2;\n } else if (typeof arg2 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else {\n // decide whether arg1 is fetches or options\n // if any output name is present and its value is valid OnnxValue, we consider it fetches\n let isFetches = false;\n const arg1Keys = Object.getOwnPropertyNames(arg1);\n for (const name of this.outputNames) {\n if (arg1Keys.indexOf(name) !== -1) {\n const v = (arg1 as InferenceSessionInterface.NullableOnnxValueMapType)[name];\n if (v === null || v instanceof Tensor) {\n isFetches = true;\n isFetchesEmpty = false;\n fetches[name] = v;\n }\n }\n }\n\n if (isFetches) {\n if (typeof arg2 === 'object' && arg2 !== null) {\n options = arg2;\n } else if (typeof arg2 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else {\n options = arg1 as RunOptions;\n }\n }\n } else if (typeof arg1 !== 'undefined') {\n throw new TypeError('Unexpected argument[1]: must be \\'fetches\\' or \\'options\\'.');\n }\n\n // check if all inputs are in feed\n for (const name of this.inputNames) {\n if (typeof feeds[name] === 'undefined') {\n throw new Error(`input '${name}' is missing in 'feeds'.`);\n }\n }\n\n // if no fetches is specified, we use the full output names list\n if (isFetchesEmpty) {\n for (const name of this.outputNames) {\n fetches[name] = null;\n }\n }\n\n // feeds, fetches and options are prepared\n\n const results = await this.handler.run(feeds, fetches, options);\n const returnValue: {[name: string]: OnnxValue} = {};\n for (const key in results) {\n if (Object.hasOwnProperty.call(results, key)) {\n const result = results[key];\n if (result instanceof Tensor) {\n returnValue[key] = result;\n } else {\n returnValue[key] = new Tensor(result.type, result.data, result.dims);\n }\n }\n }\n TRACE_FUNC_END();\n return returnValue;\n }\n\n async release(): Promise {\n return this.handler.dispose();\n }\n\n static create(path: string, options?: SessionOptions): Promise;\n static create(buffer: ArrayBufferLike, options?: SessionOptions): Promise;\n static create(buffer: ArrayBufferLike, byteOffset: number, byteLength?: number, options?: SessionOptions):\n Promise;\n static create(buffer: Uint8Array, options?: SessionOptions): Promise;\n static async create(\n arg0: string|ArrayBufferLike|Uint8Array, arg1?: SessionOptions|number, arg2?: number,\n arg3?: SessionOptions): Promise {\n TRACE_FUNC_BEGIN();\n // either load from a file or buffer\n let filePathOrUint8Array: string|Uint8Array;\n let options: SessionOptions = {};\n\n if (typeof arg0 === 'string') {\n filePathOrUint8Array = arg0;\n if (typeof arg1 === 'object' && arg1 !== null) {\n options = arg1;\n } else if (typeof arg1 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else if (arg0 instanceof Uint8Array) {\n filePathOrUint8Array = arg0;\n if (typeof arg1 === 'object' && arg1 !== null) {\n options = arg1;\n } else if (typeof arg1 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else if (\n arg0 instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && arg0 instanceof SharedArrayBuffer)) {\n const buffer = arg0;\n let byteOffset = 0;\n let byteLength = arg0.byteLength;\n if (typeof arg1 === 'object' && arg1 !== null) {\n options = arg1;\n } else if (typeof arg1 === 'number') {\n byteOffset = arg1;\n if (!Number.isSafeInteger(byteOffset)) {\n throw new RangeError('\\'byteOffset\\' must be an integer.');\n }\n if (byteOffset < 0 || byteOffset >= buffer.byteLength) {\n throw new RangeError(`'byteOffset' is out of range [0, ${buffer.byteLength}).`);\n }\n byteLength = arg0.byteLength - byteOffset;\n if (typeof arg2 === 'number') {\n byteLength = arg2;\n if (!Number.isSafeInteger(byteLength)) {\n throw new RangeError('\\'byteLength\\' must be an integer.');\n }\n if (byteLength <= 0 || byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(`'byteLength' is out of range (0, ${buffer.byteLength - byteOffset}].`);\n }\n if (typeof arg3 === 'object' && arg3 !== null) {\n options = arg3;\n } else if (typeof arg3 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else if (typeof arg2 !== 'undefined') {\n throw new TypeError('\\'byteLength\\' must be a number.');\n }\n } else if (typeof arg1 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n filePathOrUint8Array = new Uint8Array(buffer, byteOffset, byteLength);\n } else {\n throw new TypeError('Unexpected argument[0]: must be \\'path\\' or \\'buffer\\'.');\n }\n\n // resolve backend, update session options with validated EPs, and create session handler\n const [backend, optionsWithValidatedEPs] = await resolveBackendAndExecutionProviders(options);\n const handler = await backend.createInferenceSessionHandler(filePathOrUint8Array, optionsWithValidatedEPs);\n TRACE_FUNC_END();\n return new InferenceSession(handler);\n }\n\n startProfiling(): void {\n this.handler.startProfiling();\n }\n endProfiling(): void {\n this.handler.endProfiling();\n }\n\n get inputNames(): readonly string[] {\n return this.handler.inputNames;\n }\n get outputNames(): readonly string[] {\n return this.handler.outputNames;\n }\n\n private handler: InferenceSessionHandler;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession as InferenceSessionImpl} from './inference-session-impl.js';\nimport {OnnxModelOptions} from './onnx-model.js';\nimport {OnnxValue, OnnxValueDataLocation} from './onnx-value.js';\n\n/* eslint-disable @typescript-eslint/no-redeclare */\n\nexport declare namespace InferenceSession {\n // #region input/output types\n\n type OnnxValueMapType = {readonly [name: string]: OnnxValue};\n type NullableOnnxValueMapType = {readonly [name: string]: OnnxValue | null};\n\n /**\n * A feeds (model inputs) is an object that uses input names as keys and OnnxValue as corresponding values.\n */\n type FeedsType = OnnxValueMapType;\n\n /**\n * A fetches (model outputs) could be one of the following:\n *\n * - Omitted. Use model's output names definition.\n * - An array of string indicating the output names.\n * - An object that use output names as keys and OnnxValue or null as corresponding values.\n *\n * @remark\n * different from input argument, in output, OnnxValue is optional. If an OnnxValue is present it will be\n * used as a pre-allocated value by the inference engine; if omitted, inference engine will allocate buffer\n * internally.\n */\n type FetchesType = readonly string[]|NullableOnnxValueMapType;\n\n /**\n * A inferencing return type is an object that uses output names as keys and OnnxValue as corresponding values.\n */\n type ReturnType = OnnxValueMapType;\n\n // #endregion\n\n // #region session options\n\n /**\n * A set of configurations for session behavior.\n */\n export interface SessionOptions extends OnnxModelOptions {\n /**\n * An array of execution provider options.\n *\n * An execution provider option can be a string indicating the name of the execution provider,\n * or an object of corresponding type.\n */\n executionProviders?: readonly ExecutionProviderConfig[];\n\n /**\n * The intra OP threads number.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native).\n */\n intraOpNumThreads?: number;\n\n /**\n * The inter OP threads number.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native).\n */\n interOpNumThreads?: number;\n\n /**\n * The free dimension override.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n freeDimensionOverrides?: {readonly [dimensionName: string]: number};\n\n /**\n * The optimization level.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n graphOptimizationLevel?: 'disabled'|'basic'|'extended'|'all';\n\n /**\n * Whether enable CPU memory arena.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n enableCpuMemArena?: boolean;\n\n /**\n * Whether enable memory pattern.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n enableMemPattern?: boolean;\n\n /**\n * Execution mode.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n executionMode?: 'sequential'|'parallel';\n\n /**\n * Optimized model file path.\n *\n * If this setting is specified, the optimized model will be dumped. In browser, a blob will be created\n * with a pop-up window.\n */\n optimizedModelFilePath?: string;\n\n /**\n * Whether enable profiling.\n *\n * This setting is a placeholder for a future use.\n */\n enableProfiling?: boolean;\n\n /**\n * File prefix for profiling.\n *\n * This setting is a placeholder for a future use.\n */\n profileFilePrefix?: string;\n\n /**\n * Log ID.\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n logId?: string;\n\n /**\n * Log severity level. See\n * https://github.com/microsoft/onnxruntime/blob/main/include/onnxruntime/core/common/logging/severity.h\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n logSeverityLevel?: 0|1|2|3|4;\n\n /**\n * Log verbosity level.\n *\n * This setting is available only in WebAssembly backend. Will support Node.js binding and react-native later\n */\n logVerbosityLevel?: number;\n\n /**\n * Specify string as a preferred data location for all outputs, or an object that use output names as keys and a\n * preferred data location as corresponding values.\n *\n * This setting is available only in ONNXRuntime Web for WebGL and WebGPU EP.\n */\n preferredOutputLocation?: OnnxValueDataLocation|{readonly [outputName: string]: OnnxValueDataLocation};\n\n /**\n * Whether enable graph capture.\n * This setting is available only in ONNXRuntime Web for WebGPU EP.\n */\n enableGraphCapture?: boolean;\n\n /**\n * Store configurations for a session. See\n * https://github.com/microsoft/onnxruntime/blob/main/include/onnxruntime/core/session/\n * onnxruntime_session_options_config_keys.h\n *\n * This setting is available only in WebAssembly backend. Will support Node.js binding and react-native later\n *\n * @example\n * ```js\n * extra: {\n * session: {\n * set_denormal_as_zero: \"1\",\n * disable_prepacking: \"1\"\n * },\n * optimization: {\n * enable_gelu_approximation: \"1\"\n * }\n * }\n * ```\n */\n extra?: Record;\n }\n\n // #region execution providers\n\n // Currently, we have the following backends to support execution providers:\n // Backend Node.js binding: supports 'cpu', 'dml' (win32), 'coreml' (macOS) and 'cuda' (linux).\n // Backend WebAssembly: supports 'cpu', 'wasm', 'webgpu' and 'webnn'.\n // Backend ONNX.js: supports 'webgl'.\n // Backend React Native: supports 'cpu', 'xnnpack', 'coreml' (iOS), 'nnapi' (Android).\n interface ExecutionProviderOptionMap {\n coreml: CoreMLExecutionProviderOption;\n cpu: CpuExecutionProviderOption;\n cuda: CudaExecutionProviderOption;\n dml: DmlExecutionProviderOption;\n nnapi: NnapiExecutionProviderOption;\n tensorrt: TensorRtExecutionProviderOption;\n wasm: WebAssemblyExecutionProviderOption;\n webgl: WebGLExecutionProviderOption;\n webgpu: WebGpuExecutionProviderOption;\n webnn: WebNNExecutionProviderOption;\n xnnpack: XnnpackExecutionProviderOption;\n }\n\n type ExecutionProviderName = keyof ExecutionProviderOptionMap;\n type ExecutionProviderConfig =\n ExecutionProviderOptionMap[ExecutionProviderName]|ExecutionProviderOption|ExecutionProviderName|string;\n\n export interface ExecutionProviderOption {\n readonly name: string;\n }\n export interface CpuExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'cpu';\n useArena?: boolean;\n }\n export interface CudaExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'cuda';\n deviceId?: number;\n }\n export interface DmlExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'dml';\n deviceId?: number;\n }\n export interface TensorRtExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'tensorrt';\n deviceId?: number;\n }\n export interface WebAssemblyExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'wasm';\n }\n export interface WebGLExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'webgl';\n // TODO: add flags\n }\n export interface XnnpackExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'xnnpack';\n }\n export interface WebGpuExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'webgpu';\n preferredLayout?: 'NCHW'|'NHWC';\n }\n export interface WebNNExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'webnn';\n deviceType?: 'cpu'|'gpu'|'npu';\n numThreads?: number;\n powerPreference?: 'default'|'low-power'|'high-performance';\n }\n export interface CoreMLExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'coreml';\n /**\n * The bit flags for CoreML execution provider.\n *\n * ```\n * COREML_FLAG_USE_CPU_ONLY = 0x001\n * COREML_FLAG_ENABLE_ON_SUBGRAPH = 0x002\n * COREML_FLAG_ONLY_ENABLE_DEVICE_WITH_ANE = 0x004\n * COREML_FLAG_ONLY_ALLOW_STATIC_INPUT_SHAPES = 0x008\n * COREML_FLAG_CREATE_MLPROGRAM = 0x010\n * ```\n *\n * See include/onnxruntime/core/providers/coreml/coreml_provider_factory.h for more details.\n *\n * This flag is available only in ONNXRuntime (Node.js binding).\n */\n coreMlFlags?: number;\n /**\n * Specify whether to use CPU only in CoreML EP.\n *\n * This setting is available only in ONNXRuntime (react-native).\n */\n useCPUOnly?: boolean;\n /**\n * Specify whether to enable CoreML EP on subgraph.\n *\n * This setting is available only in ONNXRuntime (react-native).\n */\n enableOnSubgraph?: boolean;\n /**\n * Specify whether to only enable CoreML EP for Apple devices with ANE (Apple Neural Engine).\n *\n * This setting is available only in ONNXRuntime (react-native).\n */\n onlyEnableDeviceWithANE?: boolean;\n }\n export interface NnapiExecutionProviderOption extends ExecutionProviderOption {\n readonly name: 'nnapi';\n useFP16?: boolean;\n useNCHW?: boolean;\n cpuDisabled?: boolean;\n cpuOnly?: boolean;\n }\n // #endregion\n\n // #endregion\n\n // #region run options\n\n /**\n * A set of configurations for inference run behavior\n */\n export interface RunOptions {\n /**\n * Log severity level. See\n * https://github.com/microsoft/onnxruntime/blob/main/include/onnxruntime/core/common/logging/severity.h\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n logSeverityLevel?: 0|1|2|3|4;\n\n /**\n * Log verbosity level.\n *\n * This setting is available only in WebAssembly backend. Will support Node.js binding and react-native later\n */\n logVerbosityLevel?: number;\n\n /**\n * Terminate all incomplete OrtRun calls as soon as possible if true\n *\n * This setting is available only in WebAssembly backend. Will support Node.js binding and react-native later\n */\n terminate?: boolean;\n\n /**\n * A tag for the Run() calls using this\n *\n * This setting is available only in ONNXRuntime (Node.js binding and react-native) or WebAssembly backend\n */\n tag?: string;\n\n /**\n * Set a single run configuration entry. See\n * https://github.com/microsoft/onnxruntime/blob/main/include/onnxruntime/core/session/\n * onnxruntime_run_options_config_keys.h\n *\n * This setting is available only in WebAssembly backend. Will support Node.js binding and react-native later\n *\n * @example\n *\n * ```js\n * extra: {\n * memory: {\n * enable_memory_arena_shrinkage: \"1\",\n * }\n * }\n * ```\n */\n extra?: Record;\n }\n\n // #endregion\n\n // #region value metadata\n\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\n interface ValueMetadata {\n // TBD\n }\n\n // #endregion\n}\n\n/**\n * Represent a runtime instance of an ONNX model.\n */\nexport interface InferenceSession {\n // #region run()\n\n /**\n * Execute the model asynchronously with the given feeds and options.\n *\n * @param feeds - Representation of the model input. See type description of `InferenceSession.InputType` for detail.\n * @param options - Optional. A set of options that controls the behavior of model inference.\n * @returns A promise that resolves to a map, which uses output names as keys and OnnxValue as corresponding values.\n */\n run(feeds: InferenceSession.FeedsType, options?: InferenceSession.RunOptions): Promise;\n\n /**\n * Execute the model asynchronously with the given feeds, fetches and options.\n *\n * @param feeds - Representation of the model input. See type description of `InferenceSession.InputType` for detail.\n * @param fetches - Representation of the model output. See type description of `InferenceSession.OutputType` for\n * detail.\n * @param options - Optional. A set of options that controls the behavior of model inference.\n * @returns A promise that resolves to a map, which uses output names as keys and OnnxValue as corresponding values.\n */\n run(feeds: InferenceSession.FeedsType, fetches: InferenceSession.FetchesType,\n options?: InferenceSession.RunOptions): Promise;\n\n // #endregion\n\n // #region release()\n\n /**\n * Release the inference session and the underlying resources.\n */\n release(): Promise;\n\n // #endregion\n\n // #region profiling\n\n /**\n * Start profiling.\n */\n startProfiling(): void;\n\n /**\n * End profiling.\n */\n endProfiling(): void;\n\n // #endregion\n\n // #region metadata\n\n /**\n * Get input names of the loaded model.\n */\n readonly inputNames: readonly string[];\n\n /**\n * Get output names of the loaded model.\n */\n readonly outputNames: readonly string[];\n\n // /**\n // * Get input metadata of the loaded model.\n // */\n // readonly inputMetadata: ReadonlyArray>;\n\n // /**\n // * Get output metadata of the loaded model.\n // */\n // readonly outputMetadata: ReadonlyArray>;\n\n // #endregion\n}\n\nexport interface InferenceSessionFactory {\n // #region create()\n\n /**\n * Create a new inference session and load model asynchronously from an ONNX model file.\n *\n * @param uri - The URI or file path of the model to load.\n * @param options - specify configuration for creating a new inference session.\n * @returns A promise that resolves to an InferenceSession object.\n */\n create(uri: string, options?: InferenceSession.SessionOptions): Promise;\n\n /**\n * Create a new inference session and load model asynchronously from an array bufer.\n *\n * @param buffer - An ArrayBuffer representation of an ONNX model.\n * @param options - specify configuration for creating a new inference session.\n * @returns A promise that resolves to an InferenceSession object.\n */\n create(buffer: ArrayBufferLike, options?: InferenceSession.SessionOptions): Promise;\n\n /**\n * Create a new inference session and load model asynchronously from segment of an array bufer.\n *\n * @param buffer - An ArrayBuffer representation of an ONNX model.\n * @param byteOffset - The beginning of the specified portion of the array buffer.\n * @param byteLength - The length in bytes of the array buffer.\n * @param options - specify configuration for creating a new inference session.\n * @returns A promise that resolves to an InferenceSession object.\n */\n create(buffer: ArrayBufferLike, byteOffset: number, byteLength?: number, options?: InferenceSession.SessionOptions):\n Promise;\n\n /**\n * Create a new inference session and load model asynchronously from a Uint8Array.\n *\n * @param buffer - A Uint8Array representation of an ONNX model.\n * @param options - specify configuration for creating a new inference session.\n * @returns A promise that resolves to an InferenceSession object.\n */\n create(buffer: Uint8Array, options?: InferenceSession.SessionOptions): Promise;\n\n // #endregion\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const InferenceSession: InferenceSessionFactory = InferenceSessionImpl;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {OptionsFormat, OptionsNormalizationParameters, OptionsTensorLayout} from './tensor-factory.js';\n\nexport interface TensorToDataUrlOptions extends OptionsTensorLayout, OptionsFormat, OptionsNormalizationParameters {}\n\nexport interface TensorToImageDataOptions extends OptionsTensorLayout, OptionsFormat, OptionsNormalizationParameters {}\n\nexport interface ConversionUtils {\n /**\n * creates a DataURL instance from tensor\n *\n * @param options - An optional object representing options for creating a DataURL instance from the tensor.\n *\n * The following default settings will be applied:\n * - `format`: `'RGB'`\n * - `tensorLayout`: `'NCHW'`\n * @returns a DataURL string representing the image converted from tensor data\n */\n toDataURL(options?: TensorToDataUrlOptions): string;\n\n /**\n * creates an ImageData instance from tensor\n *\n * @param options - An optional object representing options for creating an ImageData instance from the tensor.\n *\n * The following default settings will be applied:\n * - `format`: `'RGB'`\n * - `tensorLayout`: `'NCHW'`\n * @returns an ImageData instance representing the image converted from tensor data\n */\n toImageData(options?: TensorToImageDataOptions): ImageData;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor, TypedTensor} from './tensor.js';\n\nexport type ImageFormat = 'RGB'|'RGBA'|'BGR'|'RBG';\nexport type ImageTensorLayout = 'NHWC'|'NCHW';\n\n// the following region contains type definitions for constructing tensor from a specific location.\n\n// #region types for constructing a tensor from a specific location\n\n/**\n * represent common properties of the parameter for constructing a tensor from a specific location.\n */\ninterface CommonConstructorParameters extends Pick {\n /**\n * Specify the data type of the tensor.\n */\n readonly type: T;\n}\n\n/**\n * represent the parameter for constructing a tensor from a GPU resource.\n */\ninterface GpuResourceConstructorParameters {\n /**\n * an optional callback function to download data from GPU to CPU.\n *\n * If not provided, the tensor treat the GPU data as external resource.\n */\n download?(): Promise;\n\n /**\n * an optional callback function that will be called when the tensor is disposed.\n *\n * If not provided, the tensor treat the GPU data as external resource.\n */\n dispose?(): void;\n}\n\n/**\n * represent the parameter for constructing a tensor from a pinned CPU buffer\n */\nexport interface CpuPinnedConstructorParameters extends\n CommonConstructorParameters {\n /**\n * Specify the location of the data to be 'cpu-pinned'.\n */\n readonly location: 'cpu-pinned';\n /**\n * Specify the CPU pinned buffer that holds the tensor data.\n */\n readonly data: Tensor.DataTypeMap[T];\n}\n\n/**\n * represent the parameter for constructing a tensor from a WebGL texture\n */\nexport interface TextureConstructorParameters extends\n CommonConstructorParameters, GpuResourceConstructorParameters {\n /**\n * Specify the location of the data to be 'texture'.\n */\n readonly location: 'texture';\n /**\n * Specify the WebGL texture that holds the tensor data.\n */\n readonly texture: Tensor.TextureType;\n}\n\n/**\n * represent the parameter for constructing a tensor from a WebGPU buffer\n */\nexport interface GpuBufferConstructorParameters extends\n CommonConstructorParameters, GpuResourceConstructorParameters {\n /**\n * Specify the location of the data to be 'gpu-buffer'.\n */\n readonly location: 'gpu-buffer';\n /**\n * Specify the WebGPU buffer that holds the tensor data.\n */\n readonly gpuBuffer: Tensor.GpuBufferType;\n}\n\n// #endregion\n\n// the following region contains type definitions of each individual options.\n// the tensor factory functions use a composition of those options as the parameter type.\n\n// #region Options fields\n\nexport interface OptionsFormat {\n /**\n * Describes the image format represented in RGBA color space.\n */\n format?: ImageFormat;\n}\n\nexport interface OptionsTensorFormat {\n /**\n * Describes the image format of the tensor.\n *\n * NOTE: this is different from option 'format'. While option 'format' represents the original image, 'tensorFormat'\n * represents the target format of the tensor. A transpose will be performed if they are different.\n */\n tensorFormat?: ImageFormat;\n}\n\nexport interface OptionsTensorDataType {\n /**\n * Describes the data type of the tensor.\n */\n dataType?: 'float32'|'uint8';\n}\n\nexport interface OptionsTensorLayout {\n /**\n * Describes the tensor layout when representing data of one or more image(s).\n */\n tensorLayout?: ImageTensorLayout;\n}\n\nexport interface OptionsDimensions {\n /**\n * Describes the image height in pixel\n */\n height?: number;\n /**\n * Describes the image width in pixel\n */\n width?: number;\n}\n\nexport interface OptionResizedDimensions {\n /**\n * Describes the resized height. If omitted, original height will be used.\n */\n resizedHeight?: number;\n /**\n * Describes resized width - can be accessed via tensor dimensions as well\n */\n resizedWidth?: number;\n}\n\nexport interface OptionsNormalizationParameters {\n /**\n * Describes normalization parameters when preprocessing the image as model input.\n *\n * Data element are ranged from 0 to 255.\n */\n norm?: {\n /**\n * The 'bias' value for image normalization.\n * - If omitted, use default value 0.\n * - If it's a single number, apply to each channel\n * - If it's an array of 3 or 4 numbers, apply element-wise. Number of elements need to match the number of channels\n * for the corresponding image format\n */\n bias?: number|[number, number, number]|[number, number, number, number];\n /**\n * The 'mean' value for image normalization.\n * - If omitted, use default value 255.\n * - If it's a single number, apply to each channel\n * - If it's an array of 3 or 4 numbers, apply element-wise. Number of elements need to match the number of channels\n * for the corresponding image format\n */\n mean?: number | [number, number, number] | [number, number, number, number];\n };\n}\n\n// #endregion\n\n// #region Options composition\n\nexport interface TensorFromImageDataOptions extends OptionResizedDimensions, OptionsTensorFormat, OptionsTensorLayout,\n OptionsTensorDataType, OptionsNormalizationParameters {}\n\nexport interface TensorFromImageElementOptions extends OptionResizedDimensions, OptionsTensorFormat,\n OptionsTensorLayout, OptionsTensorDataType,\n OptionsNormalizationParameters {}\n\nexport interface TensorFromUrlOptions extends OptionsDimensions, OptionResizedDimensions, OptionsTensorFormat,\n OptionsTensorLayout, OptionsTensorDataType,\n OptionsNormalizationParameters {}\n\nexport interface TensorFromImageBitmapOptions extends OptionResizedDimensions, OptionsTensorFormat, OptionsTensorLayout,\n OptionsTensorDataType, OptionsNormalizationParameters {}\n\nexport interface TensorFromTextureOptions extends\n Required, OptionsFormat, GpuResourceConstructorParameters/* TODO: add more */ {}\n\nexport interface TensorFromGpuBufferOptions extends\n Pick, GpuResourceConstructorParameters {\n /**\n * Describes the data type of the tensor.\n */\n dataType?: T;\n}\n\n// #endregion\n\n/**\n * type TensorFactory defines the factory functions of 'Tensor' to create tensor instances from existing data or\n * resources.\n */\nexport interface TensorFactory {\n /**\n * create a tensor from an ImageData object\n *\n * @param imageData - the ImageData object to create tensor from\n * @param options - An optional object representing options for creating tensor from ImageData.\n *\n * The following default settings will be applied:\n * - `tensorFormat`: `'RGB'`\n * - `tensorLayout`: `'NCHW'`\n * - `dataType`: `'float32'`\n * @returns A promise that resolves to a tensor object\n */\n fromImage(imageData: ImageData, options?: TensorFromImageDataOptions):\n Promise|TypedTensor<'uint8'>>;\n\n /**\n * create a tensor from a HTMLImageElement object\n *\n * @param imageElement - the HTMLImageElement object to create tensor from\n * @param options - An optional object representing options for creating tensor from HTMLImageElement.\n *\n * The following default settings will be applied:\n * - `tensorFormat`: `'RGB'`\n * - `tensorLayout`: `'NCHW'`\n * - `dataType`: `'float32'`\n * @returns A promise that resolves to a tensor object\n */\n fromImage(imageElement: HTMLImageElement, options?: TensorFromImageElementOptions):\n Promise|TypedTensor<'uint8'>>;\n\n /**\n * create a tensor from URL\n *\n * @param urlSource - a string as a URL to the image or a data URL containing the image data.\n * @param options - An optional object representing options for creating tensor from URL.\n *\n * The following default settings will be applied:\n * - `tensorFormat`: `'RGB'`\n * - `tensorLayout`: `'NCHW'`\n * - `dataType`: `'float32'`\n * @returns A promise that resolves to a tensor object\n */\n fromImage(urlSource: string, options?: TensorFromUrlOptions): Promise|TypedTensor<'uint8'>>;\n\n /**\n * create a tensor from an ImageBitmap object\n *\n * @param bitmap - the ImageBitmap object to create tensor from\n * @param options - An optional object representing options for creating tensor from URL.\n *\n * The following default settings will be applied:\n * - `tensorFormat`: `'RGB'`\n * - `tensorLayout`: `'NCHW'`\n * - `dataType`: `'float32'`\n * @returns A promise that resolves to a tensor object\n */\n fromImage(bitmap: ImageBitmap, options: TensorFromImageBitmapOptions):\n Promise|TypedTensor<'uint8'>>;\n\n /**\n * create a tensor from a WebGL texture\n *\n * @param texture - the WebGLTexture object to create tensor from\n * @param options - An optional object representing options for creating tensor from WebGL texture.\n *\n * The options include following properties:\n * - `width`: the width of the texture. Required.\n * - `height`: the height of the texture. Required.\n * - `format`: the format of the texture. If omitted, assume 'RGBA'.\n * - `download`: an optional function to download the tensor data from GPU to CPU. If omitted, the GPU data\n * will not be able to download. Usually, this is provided by a GPU backend for the inference outputs. Users don't\n * need to provide this function.\n * - `dispose`: an optional function to dispose the tensor data on GPU. If omitted, the GPU data will not be disposed.\n * Usually, this is provided by a GPU backend for the inference outputs. Users don't need to provide this function.\n *\n * @returns a tensor object\n */\n fromTexture(\n texture: Tensor.TextureType, options: TensorFromTextureOptions): TypedTensor<'float32'>;\n\n /**\n * create a tensor from a WebGPU buffer\n *\n * @param buffer - the GPUBuffer object to create tensor from\n * @param options - An optional object representing options for creating tensor from WebGPU buffer.\n *\n * The options include following properties:\n * - `dataType`: the data type of the tensor. If omitted, assume 'float32'.\n * - `dims`: the dimension of the tensor. Required.\n * - `download`: an optional function to download the tensor data from GPU to CPU. If omitted, the GPU data\n * will not be able to download. Usually, this is provided by a GPU backend for the inference outputs. Users don't\n * need to provide this function.\n * - `dispose`: an optional function to dispose the tensor data on GPU. If omitted, the GPU data will not be disposed.\n * Usually, this is provided by a GPU backend for the inference outputs. Users don't need to provide this function.\n *\n * @returns a tensor object\n */\n fromGpuBuffer(\n buffer: Tensor.GpuBufferType, options: TensorFromGpuBufferOptions): TypedTensor;\n\n /**\n * create a tensor from a pre-allocated buffer. The buffer will be used as a pinned buffer.\n *\n * @param type - the tensor element type.\n * @param buffer - a TypedArray corresponding to the type.\n * @param dims - specify the dimension of the tensor. If omitted, a 1-D tensor is assumed.\n *\n * @returns a tensor object\n */\n fromPinnedBuffer>(\n type: T, buffer: Tensor.DataTypeMap[T], dims?: readonly number[]): TypedTensor;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n/**\n * A string that represents a file's URL or path.\n *\n * Path is vailable only in onnxruntime-node or onnxruntime-web running in Node.js.\n */\nexport type FileUrlOrPath = string;\n\n/**\n * A Blob object that represents a file.\n */\nexport type FileBlob = Blob;\n\n/**\n * A Uint8Array, ArrayBuffer or SharedArrayBuffer object that represents a file content.\n *\n * When it is an ArrayBuffer or SharedArrayBuffer, the whole buffer is assumed to be the file content.\n */\nexport type FileData = Uint8Array|ArrayBufferLike;\n\n/**\n * Represents a file that can be loaded by the ONNX Runtime JavaScript API.\n */\nexport type FileType = FileUrlOrPath|FileBlob|FileData;\n\n/**\n * Represents an external data file.\n */\nexport interface ExternalDataFileDescription {\n /**\n * Specify the external data file.\n */\n data: FileType;\n /**\n * Specify the file path.\n */\n path: string;\n}\n\n/**\n * Represents an external data file.\n *\n * When using a string, it should be a file URL or path that in the same directory as the model file.\n */\nexport type ExternalDataFileType = ExternalDataFileDescription|FileUrlOrPath;\n\n/**\n * Options for model loading.\n */\nexport interface OnnxModelOptions {\n /**\n * Specifying a list of files that represents the external data.\n */\n externalData?: readonly ExternalDataFileType[];\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from './tensor.js';\n\nexport type NonTensorType = never;\n\n/**\n * Type OnnxValue Represents both tensors and non-tensors value for model's inputs/outputs.\n *\n * NOTE: currently not support non-tensor\n */\nexport type OnnxValue = Tensor|NonTensorType;\n\n/**\n * Type OnnxValueDataLocation represents the location of the data of an OnnxValue.\n */\nexport type OnnxValueDataLocation = Tensor.DataLocation;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {resolveBackendAndExecutionProviders} from './backend-impl.js';\nimport {SessionHandler, TrainingSessionHandler} from './backend.js';\nimport {InferenceSession as InferenceSession} from './inference-session.js';\nimport {OnnxValue} from './onnx-value.js';\nimport {Tensor} from './tensor.js';\nimport {TrainingSession as TrainingSessionInterface, TrainingSessionCreateOptions} from './training-session.js';\n\ntype SessionOptions = InferenceSession.SessionOptions;\ntype FeedsType = InferenceSession.FeedsType;\ntype FetchesType = InferenceSession.FetchesType;\ntype ReturnType = InferenceSession.ReturnType;\ntype RunOptions = InferenceSession.RunOptions;\n\nconst noBackendErrMsg: string = 'Training backend could not be resolved. ' +\n 'Make sure you\\'re using the correct configuration & WebAssembly files.';\n\nexport class TrainingSession implements TrainingSessionInterface {\n private constructor(handler: TrainingSessionHandler, hasOptimizerModel: boolean, hasEvalModel: boolean) {\n this.handler = handler;\n this.hasOptimizerModel = hasOptimizerModel;\n this.hasEvalModel = hasEvalModel;\n }\n private handler: TrainingSessionHandler;\n private hasOptimizerModel: boolean;\n private hasEvalModel: boolean;\n\n get trainingInputNames(): readonly string[] {\n return this.handler.inputNames;\n }\n get trainingOutputNames(): readonly string[] {\n return this.handler.outputNames;\n }\n\n get evalInputNames(): readonly string[] {\n if (this.hasEvalModel) {\n return this.handler.evalInputNames;\n } else {\n throw new Error('This training session has no evalModel loaded.');\n }\n }\n get evalOutputNames(): readonly string[] {\n if (this.hasEvalModel) {\n return this.handler.evalOutputNames;\n } else {\n throw new Error('This training session has no evalModel loaded.');\n }\n }\n\n static async create(trainingOptions: TrainingSessionCreateOptions, sessionOptions?: SessionOptions):\n Promise {\n const evalModel: string|Uint8Array = trainingOptions.evalModel || '';\n const optimizerModel: string|Uint8Array = trainingOptions.optimizerModel || '';\n const options: SessionOptions = sessionOptions || {};\n\n // resolve backend, update session options with validated EPs, and create session handler\n const [backend, optionsWithValidatedEPs] = await resolveBackendAndExecutionProviders(options);\n if (backend.createTrainingSessionHandler) {\n const handler = await backend.createTrainingSessionHandler(\n trainingOptions.checkpointState, trainingOptions.trainModel, evalModel, optimizerModel,\n optionsWithValidatedEPs);\n return new TrainingSession(handler, !!trainingOptions.optimizerModel, !!trainingOptions.evalModel);\n } else {\n throw new Error(noBackendErrMsg);\n }\n }\n\n /**\n * Helper function for runTrainStep and future runStep methods that handles the type-narrowing conversion from\n * the given parameters to SessionHandler.FetchesType and RunOptions.\n *\n * @param inputNames the feeds object is checked that they contain all input names in the provided list of input\n * names.\n * @param outputNames the fetches object is checked that their keys match up with valid names in the list of output\n * names.\n * @param feeds the required input\n * @param arg1 narrowed & converted into the SessionHandler.FetchesType or RunOptions object\n * @param arg2 optional RunOptions object.\n * @returns\n */\n typeNarrowingForRunStep(\n inputNames: readonly string[], outputNames: readonly string[], feeds: FeedsType, arg1?: FetchesType|RunOptions,\n arg2?: RunOptions): [SessionHandler.FetchesType, RunOptions] {\n const fetches: {[name: string]: OnnxValue|null} = {};\n let options: RunOptions = {};\n // check inputs\n if (typeof feeds !== 'object' || feeds === null || feeds instanceof Tensor || Array.isArray(feeds)) {\n throw new TypeError(\n '\\'feeds\\' must be an object that use input names as keys and OnnxValue as corresponding values.');\n }\n\n let isFetchesEmpty = true;\n // determine which override is being used\n if (typeof arg1 === 'object') {\n if (arg1 === null) {\n throw new TypeError('Unexpected argument[1]: cannot be null.');\n }\n if (arg1 instanceof Tensor) {\n throw new TypeError('\\'fetches\\' cannot be a Tensor');\n }\n\n if (Array.isArray(arg1)) {\n if (arg1.length === 0) {\n throw new TypeError('\\'fetches\\' cannot be an empty array.');\n }\n isFetchesEmpty = false;\n // output names\n for (const name of arg1) {\n if (typeof name !== 'string') {\n throw new TypeError('\\'fetches\\' must be a string array or an object.');\n }\n if (outputNames.indexOf(name) === -1) {\n throw new RangeError(`'fetches' contains invalid output name: ${name}.`);\n }\n fetches[name] = null;\n }\n\n if (typeof arg2 === 'object' && arg2 !== null) {\n options = arg2;\n } else if (typeof arg2 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else {\n // decide whether arg1 is fetches or options\n // if any output name is present and its value is valid OnnxValue, we consider it fetches\n let isFetches = false;\n const arg1Keys = Object.getOwnPropertyNames(arg1);\n for (const name of outputNames) {\n if (arg1Keys.indexOf(name) !== -1) {\n const v = (arg1 as InferenceSession.NullableOnnxValueMapType)[name];\n if (v === null || v instanceof Tensor) {\n isFetches = true;\n isFetchesEmpty = false;\n fetches[name] = v;\n }\n }\n }\n\n if (isFetches) {\n if (typeof arg2 === 'object' && arg2 !== null) {\n options = arg2;\n } else if (typeof arg2 !== 'undefined') {\n throw new TypeError('\\'options\\' must be an object.');\n }\n } else {\n options = arg1 as RunOptions;\n }\n }\n } else if (typeof arg1 !== 'undefined') {\n throw new TypeError('Unexpected argument[1]: must be \\'fetches\\' or \\'options\\'.');\n }\n\n // check if all inputs are in feed\n for (const name of inputNames) {\n if (typeof feeds[name] === 'undefined') {\n throw new Error(`input '${name}' is missing in 'feeds'.`);\n }\n }\n\n // if no fetches is specified, we use the full output names list\n if (isFetchesEmpty) {\n for (const name of outputNames) {\n fetches[name] = null;\n }\n }\n\n return [fetches, options];\n }\n\n /**\n * Helper method for runTrainStep and any other runStep methods. Takes the ReturnType result from the SessionHandler\n * and changes it into a map of Tensors.\n *\n * @param results\n * @returns\n */\n convertHandlerReturnTypeToMapOfTensors(results: SessionHandler.ReturnType): ReturnType {\n const returnValue: {[name: string]: OnnxValue} = {};\n for (const key in results) {\n if (Object.hasOwnProperty.call(results, key)) {\n const result = results[key];\n if (result instanceof Tensor) {\n returnValue[key] = result;\n } else {\n returnValue[key] = new Tensor(result.type, result.data, result.dims);\n }\n }\n }\n return returnValue;\n }\n\n async lazyResetGrad(): Promise {\n await this.handler.lazyResetGrad();\n }\n\n runTrainStep(feeds: FeedsType, options?: RunOptions): Promise;\n runTrainStep(feeds: FeedsType, fetches: FetchesType, options?: RunOptions): Promise;\n async runTrainStep(feeds: FeedsType, arg1?: FetchesType|RunOptions, arg2?: RunOptions): Promise {\n const [fetches, options] =\n this.typeNarrowingForRunStep(this.trainingInputNames, this.trainingOutputNames, feeds, arg1, arg2);\n const results = await this.handler.runTrainStep(feeds, fetches, options);\n return this.convertHandlerReturnTypeToMapOfTensors(results);\n }\n\n async runOptimizerStep(options?: InferenceSession.RunOptions|undefined): Promise {\n if (this.hasOptimizerModel) {\n await this.handler.runOptimizerStep(options || {});\n } else {\n throw new Error('This TrainingSession has no OptimizerModel loaded.');\n }\n }\n\n runEvalStep(feeds: FeedsType, options?: RunOptions|undefined): Promise;\n runEvalStep(feeds: FeedsType, fetches: FetchesType, options?: RunOptions|undefined): Promise;\n async runEvalStep(feeds: FeedsType, arg1?: FetchesType|RunOptions, arg2?: RunOptions): Promise {\n if (this.hasEvalModel) {\n const [fetches, options] =\n this.typeNarrowingForRunStep(this.evalInputNames, this.evalOutputNames, feeds, arg1, arg2);\n const results = await this.handler.runEvalStep(feeds, fetches, options);\n return this.convertHandlerReturnTypeToMapOfTensors(results);\n } else {\n throw new Error('This TrainingSession has no EvalModel loaded.');\n }\n }\n\n async getParametersSize(trainableOnly = true): Promise {\n return this.handler.getParametersSize(trainableOnly);\n }\n\n async loadParametersBuffer(array: Uint8Array, trainableOnly = true): Promise {\n const paramsSize = await this.getParametersSize(trainableOnly);\n // checking that the size of the Uint8Array is equivalent to the byte length of a Float32Array of the number\n // of parameters\n if (array.length !== 4 * paramsSize) {\n throw new Error(\n 'Size of the buffer passed into loadParametersBuffer must match the number of parameters in ' +\n 'the model. Please use getParametersSize method to check.');\n }\n return this.handler.loadParametersBuffer(array, trainableOnly);\n }\n\n async getContiguousParameters(trainableOnly = true): Promise {\n return this.handler.getContiguousParameters(trainableOnly);\n }\n\n async release(): Promise {\n return this.handler.dispose();\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession} from './inference-session.js';\nimport {OnnxValue} from './onnx-value.js';\nimport {TrainingSession as TrainingSessionImpl} from './training-session-impl.js';\n\n/* eslint-disable @typescript-eslint/no-redeclare */\n\nexport declare namespace TrainingSession {\n /**\n * Either URI file path (string) or Uint8Array containing model or checkpoint information.\n */\n type UriOrBuffer = string|Uint8Array;\n}\n\n/**\n * Represent a runtime instance of an ONNX training session,\n * which contains a model that can be trained, and, optionally,\n * an eval and optimizer model.\n */\nexport interface TrainingSession {\n // #region run()\n\n /**\n * Lazily resets the gradients of all trainable parameters to zero. Should happen after the invocation of\n * runOptimizerStep.\n */\n lazyResetGrad(): Promise;\n\n /**\n * Run TrainStep asynchronously with the given feeds and options.\n *\n * @param feeds - Representation of the model input. See type description of `InferenceSession.InputType` for\n detail.\n * @param options - Optional. A set of options that controls the behavior of model training.\n * @returns A promise that resolves to a map, which uses output names as keys and OnnxValue as corresponding values.\n */\n runTrainStep(feeds: InferenceSession.FeedsType, options?: InferenceSession.RunOptions):\n Promise;\n\n /**\n * Run a single train step with the given inputs and options.\n *\n * @param feeds - Representation of the model input.\n * @param fetches - Representation of the model output.\n * detail.\n * @param options - Optional. A set of options that controls the behavior of model training.\n * @returns A promise that resolves to a map, which uses output names as keys and OnnxValue as corresponding\n values.\n */\n runTrainStep(\n feeds: InferenceSession.FeedsType, fetches: InferenceSession.FetchesType,\n options?: InferenceSession.RunOptions): Promise;\n\n /**\n * Runs a single optimizer step, which performs weight updates for the trainable parameters using the optimizer model.\n *\n * @param options - Optional. A set of options that controls the behavior of model optimizing.\n */\n runOptimizerStep(options?: InferenceSession.RunOptions): Promise;\n\n /**\n * Run a single eval step with the given inputs and options using the eval model.\n *\n * @param feeds - Representation of the model input.\n * @param options - Optional. A set of options that controls the behavior of model eval step.\n * @returns A promise that resolves to a map, which uses output names as keys and OnnxValue as corresponding\n values.\n */\n runEvalStep(feeds: InferenceSession.FeedsType, options?: InferenceSession.RunOptions):\n Promise;\n\n /**\n * Run a single eval step with the given inputs and options using the eval model.\n *\n * @param feeds - Representation of the model input.\n * @param fetches - Representation of the model output.\n * detail.\n * @param options - Optional. A set of options that controls the behavior of model eval step.\n * @returns A promise that resolves to a map, which uses output names as keys and OnnxValue as corresponding\n values.\n */\n runEvalStep(\n feeds: InferenceSession.FeedsType, fetches: InferenceSession.FetchesType,\n options?: InferenceSession.RunOptions): Promise;\n\n // #endregion\n\n // #region copy parameters\n\n /**\n * Retrieves the size of all parameters for the training state. Calculates the total number of primitive (datatype of\n * the parameters) elements of all the parameters in the training state.\n *\n * @param trainableOnly - When set to true, the size is calculated for trainable params only. Default value is true.\n */\n getParametersSize(trainableOnly: boolean): Promise;\n\n /**\n * Copies parameter values from the given buffer to the training state. Currently, only supporting models with\n * parameters of type Float32.\n *\n * @param buffer - A Uint8Array representation of Float32 parameters.\n * @param trainableOnly - True if trainable parameters only to be modified, false otherwise. Default value is true.\n */\n loadParametersBuffer(buffer: Uint8Array, trainableOnly: boolean): Promise;\n\n /**\n * Copies the model parameters to a contiguous buffer. Usually used in the context of Federated Learning.\n * Currently, only supporting models with parameters of type Float32.\n *\n * @param trainableOnly - When set to true, only trainable parameters are copied. Trainable parameters are parameters\n * for which requires_grad is set to true. Default value is true.\n * @returns A promise that resolves to a Float32 OnnxValue of the requested parameters.\n */\n getContiguousParameters(trainableOnly: boolean): Promise;\n // #endregion\n\n // #region release()\n\n /**\n * Release the inference session and the underlying resources.\n */\n release(): Promise;\n // #endregion\n\n // #region metadata\n\n /**\n * Get input names of the loaded training model.\n */\n readonly trainingInputNames: readonly string[];\n\n /**\n * Get output names of the loaded training model.\n */\n readonly trainingOutputNames: readonly string[];\n\n /**\n * Get input names of the loaded eval model. Is an empty array if no eval model is loaded.\n */\n readonly evalInputNames: readonly string[];\n\n /**\n * Get output names of the loaded eval model. Is an empty array if no eval model is loaded.\n */\n readonly evalOutputNames: readonly string[];\n\n // #endregion\n}\n\n/**\n * Represents the optional parameters that can be passed into the TrainingSessionFactory.\n */\nexport interface TrainingSessionCreateOptions {\n /**\n * URI or buffer for a .ckpt file that contains the checkpoint for the training model.\n */\n checkpointState: TrainingSession.UriOrBuffer;\n /**\n * URI or buffer for the .onnx training file.\n */\n trainModel: TrainingSession.UriOrBuffer;\n /**\n * Optional. URI or buffer for the .onnx optimizer model file.\n */\n optimizerModel?: TrainingSession.UriOrBuffer;\n /**\n * Optional. URI or buffer for the .onnx eval model file.\n */\n evalModel?: TrainingSession.UriOrBuffer;\n}\n\n/**\n * Defines method overload possibilities for creating a TrainingSession.\n */\nexport interface TrainingSessionFactory {\n // #region create()\n\n /**\n * Creates a new TrainingSession and asynchronously loads any models passed in through trainingOptions\n *\n * @param trainingOptions specify models and checkpoints to load into the Training Session\n * @param sessionOptions specify configuration for training session behavior\n *\n * @returns Promise that resolves to a TrainingSession object\n */\n create(trainingOptions: TrainingSessionCreateOptions, sessionOptions?: InferenceSession.SessionOptions):\n Promise;\n\n // #endregion\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const TrainingSession: TrainingSessionFactory = TrainingSessionImpl;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n/**\n * # ONNX Runtime JavaScript API\n *\n * ONNX Runtime JavaScript API is a unified API for all JavaScript usages, including the following NPM packages:\n *\n * - [onnxruntime-node](https://www.npmjs.com/package/onnxruntime-node)\n * - [onnxruntime-web](https://www.npmjs.com/package/onnxruntime-web)\n * - [onnxruntime-react-native](https://www.npmjs.com/package/onnxruntime-react-native)\n *\n * See also:\n * - [Get Started](https://onnxruntime.ai/docs/get-started/with-javascript/)\n * - [Inference examples](https://github.com/microsoft/onnxruntime-inference-examples/tree/main/js)\n *\n * @packageDocumentation\n */\n\nexport * from './backend.js';\nexport * from './env.js';\nexport * from './inference-session.js';\nexport * from './tensor.js';\nexport * from './tensor-conversion.js';\nexport * from './tensor-factory.js';\nexport * from './trace.js';\nexport * from './onnx-model.js';\nexport * from './onnx-value.js';\nexport * from './training-session.js';\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Env} from 'onnxruntime-common';\n\nimport {WebGLContext} from './backends/webgl/webgl-context';\n\nexport declare namespace Logger {\n export interface SeverityTypeMap {\n verbose: 'v';\n info: 'i';\n warning: 'w';\n error: 'e';\n fatal: 'f';\n }\n\n export type Severity = keyof SeverityTypeMap;\n\n export type Provider = 'none'|'console';\n\n /**\n * Logging config that used to control the behavior of logger\n */\n export interface Config {\n /**\n * Specify the logging provider. 'console' by default\n */\n provider?: Provider;\n /**\n * Specify the minimal logger serverity. 'warning' by default\n */\n minimalSeverity?: Logger.Severity;\n /**\n * Whether to output date time in log. true by default\n */\n logDateTime?: boolean;\n /**\n * Whether to output source information (Not yet supported). false by default\n */\n logSourceLocation?: boolean;\n }\n\n export interface CategorizedLogger {\n verbose(content: string): void;\n info(content: string): void;\n warning(content: string): void;\n error(content: string): void;\n fatal(content: string): void;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface Logger {\n (category: string): Logger.CategorizedLogger;\n\n verbose(content: string): void;\n verbose(category: string, content: string): void;\n info(content: string): void;\n info(category: string, content: string): void;\n warning(content: string): void;\n warning(category: string, content: string): void;\n error(content: string): void;\n error(category: string, content: string): void;\n fatal(content: string): void;\n fatal(category: string, content: string): void;\n\n /**\n * Reset the logger configuration.\n * @param config specify an optional default config\n */\n reset(config?: Logger.Config): void;\n /**\n * Set the logger's behavior on the given category\n * @param category specify a category string. If '*' is specified, all previous configuration will be overwritten. If\n * '' is specified, the default behavior will be updated.\n * @param config the config object to indicate the logger's behavior\n */\n set(category: string, config: Logger.Config): void;\n\n /**\n * Set the logger's behavior from ort-common env\n * @param env the env used to set logger. Currently only setting loglevel is supported through Env.\n */\n setWithEnv(env: Env): void;\n}\n\ninterface LoggerProvider {\n log(severity: Logger.Severity, content: string, category?: string): void;\n}\nclass NoOpLoggerProvider implements LoggerProvider {\n log(_severity: Logger.Severity, _content: string, _category?: string) {\n // do nothing\n }\n}\nclass ConsoleLoggerProvider implements LoggerProvider {\n log(severity: Logger.Severity, content: string, category?: string) {\n // eslint-disable-next-line no-console\n console.log(`${this.color(severity)} ${category ? '\\x1b[35m' + category + '\\x1b[0m ' : ''}${content}`);\n }\n\n private color(severity: Logger.Severity) {\n switch (severity) {\n case 'verbose':\n return '\\x1b[34;40mv\\x1b[0m';\n case 'info':\n return '\\x1b[32mi\\x1b[0m';\n case 'warning':\n return '\\x1b[30;43mw\\x1b[0m';\n case 'error':\n return '\\x1b[31;40me\\x1b[0m';\n case 'fatal':\n return '\\x1b[101mf\\x1b[0m';\n default:\n throw new Error(`unsupported severity: ${severity}`);\n }\n }\n}\n\nconst SEVERITY_VALUE = {\n verbose: 1000,\n info: 2000,\n warning: 4000,\n error: 5000,\n fatal: 6000\n};\n\nconst LOGGER_PROVIDER_MAP: {readonly [provider: string]: Readonly} = {\n ['none']: new NoOpLoggerProvider(),\n ['console']: new ConsoleLoggerProvider()\n};\nconst LOGGER_DEFAULT_CONFIG = {\n provider: 'console',\n minimalSeverity: 'warning',\n logDateTime: true,\n logSourceLocation: false\n};\nlet LOGGER_CONFIG_MAP:\n {[category: string]: Readonly>} = {['']: LOGGER_DEFAULT_CONFIG as Required};\n\nfunction log(category: string): Logger.CategorizedLogger;\nfunction log(severity: Logger.Severity, content: string): void;\nfunction log(severity: Logger.Severity, category: string, content: string): void;\nfunction log(severity: Logger.Severity, arg1: string, arg2?: string): void;\nfunction log(\n arg0: string|Logger.Severity, arg1?: string, arg2?: string|number, arg3?: number): Logger.CategorizedLogger|void {\n if (arg1 === undefined) {\n // log(category: string): Logger.CategorizedLogger;\n return createCategorizedLogger(arg0);\n } else if (arg2 === undefined) {\n // log(severity, content);\n logInternal(arg0 as Logger.Severity, arg1, 1);\n } else if (typeof arg2 === 'number' && arg3 === undefined) {\n // log(severity, content, stack)\n logInternal(arg0 as Logger.Severity, arg1, arg2);\n } else if (typeof arg2 === 'string' && arg3 === undefined) {\n // log(severity, category, content)\n logInternal(arg0 as Logger.Severity, arg2, 1, arg1);\n } else if (typeof arg2 === 'string' && typeof arg3 === 'number') {\n // log(severity, category, content, stack)\n logInternal(arg0 as Logger.Severity, arg2, arg3, arg1);\n } else {\n throw new TypeError('input is valid');\n }\n}\n\nfunction createCategorizedLogger(category: string): Logger.CategorizedLogger {\n return {\n verbose: log.verbose.bind(null, category),\n info: log.info.bind(null, category),\n warning: log.warning.bind(null, category),\n error: log.error.bind(null, category),\n fatal: log.fatal.bind(null, category)\n };\n}\n\n// NOTE: argument 'category' is put the last parameter beacause typescript\n// doesn't allow optional argument put in front of required argument. This\n// order is different from a usual logging API.\nfunction logInternal(severity: Logger.Severity, content: string, _stack: number, category?: string) {\n const config = LOGGER_CONFIG_MAP[category || ''] || LOGGER_CONFIG_MAP[''];\n if (SEVERITY_VALUE[severity] < SEVERITY_VALUE[config.minimalSeverity]) {\n return;\n }\n\n if (config.logDateTime) {\n content = `${new Date().toISOString()}|${content}`;\n }\n\n if (config.logSourceLocation) {\n // TODO: calculate source location from 'stack'\n }\n\n LOGGER_PROVIDER_MAP[config.provider].log(severity, content, category);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace log {\n export function verbose(content: string): void;\n export function verbose(category: string, content: string): void;\n export function verbose(arg0: string, arg1?: string) {\n log('verbose', arg0, arg1);\n }\n export function info(content: string): void;\n export function info(category: string, content: string): void;\n export function info(arg0: string, arg1?: string) {\n log('info', arg0, arg1);\n }\n export function warning(content: string): void;\n export function warning(category: string, content: string): void;\n export function warning(arg0: string, arg1?: string) {\n log('warning', arg0, arg1);\n }\n export function error(content: string): void;\n export function error(category: string, content: string): void;\n export function error(arg0: string, arg1?: string) {\n log('error', arg0, arg1);\n }\n export function fatal(content: string): void;\n export function fatal(category: string, content: string): void;\n export function fatal(arg0: string, arg1?: string) {\n log('fatal', arg0, arg1);\n }\n\n export function reset(config?: Logger.Config): void {\n LOGGER_CONFIG_MAP = {};\n set('', config || {});\n }\n export function set(category: string, config: Logger.Config): void {\n if (category === '*') {\n reset(config);\n } else {\n const previousConfig = LOGGER_CONFIG_MAP[category] || LOGGER_DEFAULT_CONFIG;\n LOGGER_CONFIG_MAP[category] = {\n provider: config.provider || previousConfig.provider,\n minimalSeverity: config.minimalSeverity || previousConfig.minimalSeverity,\n logDateTime: (config.logDateTime === undefined) ? previousConfig.logDateTime : config.logDateTime,\n logSourceLocation: (config.logSourceLocation === undefined) ? previousConfig.logSourceLocation :\n config.logSourceLocation\n };\n }\n\n // TODO: we want to support wildcard or regex?\n }\n\n export function setWithEnv(env: Env): void {\n const config: Logger.Config = {};\n if (env.logLevel) {\n config.minimalSeverity = env.logLevel as Logger.Severity;\n }\n set('', config);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare, @typescript-eslint/naming-convention\nexport const Logger: Logger = log;\n\nexport declare namespace Profiler {\n export interface Config {\n maxNumberEvents?: number;\n flushBatchSize?: number;\n flushIntervalInMilliseconds?: number;\n }\n\n export type EventCategory = 'session'|'node'|'op'|'backend';\n\n export interface Event {\n end(): void|Promise;\n }\n}\n// TODO\n// class WebGLEvent implements Profiler.Event {}\n\nclass Event implements Profiler.Event {\n constructor(\n public category: Profiler.EventCategory, public name: string, public startTime: number,\n private endCallback: (e: Event) => void|Promise, public timer?: WebGLQuery, public ctx?: WebGLContext) {}\n\n async end() {\n return this.endCallback(this);\n }\n\n async checkTimer(): Promise {\n if (this.ctx === undefined || this.timer === undefined) {\n throw new Error('No webgl timer found');\n } else {\n this.ctx.endTimer();\n return this.ctx.waitForQueryAndGetTime(this.timer);\n }\n }\n}\n\nclass EventRecord {\n constructor(\n public category: Profiler.EventCategory, public name: string, public startTime: number, public endTime: number) {}\n}\n\nexport class Profiler {\n static create(config?: Profiler.Config): Profiler {\n if (config === undefined) {\n return new this();\n }\n return new this(config.maxNumberEvents, config.flushBatchSize, config.flushIntervalInMilliseconds);\n }\n\n private constructor(maxNumberEvents?: number, flushBatchSize?: number, flushIntervalInMilliseconds?: number) {\n this._started = false;\n this._maxNumberEvents = maxNumberEvents === undefined ? 10000 : maxNumberEvents;\n this._flushBatchSize = flushBatchSize === undefined ? 10 : flushBatchSize;\n this._flushIntervalInMilliseconds = flushIntervalInMilliseconds === undefined ? 5000 : flushIntervalInMilliseconds;\n }\n\n // start profiling\n start() {\n this._started = true;\n this._timingEvents = [];\n this._flushTime = now();\n this._flushPointer = 0;\n }\n\n // stop profiling\n stop() {\n this._started = false;\n for (; this._flushPointer < this._timingEvents.length; this._flushPointer++) {\n this.logOneEvent(this._timingEvents[this._flushPointer]);\n }\n }\n\n // create an event scope for the specific function\n event(category: Profiler.EventCategory, name: string, func: () => T, ctx?: WebGLContext): T;\n event(category: Profiler.EventCategory, name: string, func: () => Promise, ctx?: WebGLContext): Promise;\n\n event(category: Profiler.EventCategory, name: string, func: () => T | Promise, ctx?: WebGLContext): T\n |Promise {\n const event = this._started ? this.begin(category, name, ctx) : undefined;\n let isPromise = false;\n\n const res = func();\n\n // we consider a then-able object is a promise\n if (res && typeof (res as Promise).then === 'function') {\n isPromise = true;\n return new Promise((resolve, reject) => {\n (res as Promise)\n .then(\n async value => { // fulfilled\n if (event) {\n await event.end();\n }\n resolve(value);\n },\n async reason => { // rejected\n if (event) {\n await event.end();\n }\n reject(reason);\n });\n });\n }\n if (!isPromise && event) {\n const eventRes = event.end();\n if (eventRes && typeof eventRes.then === 'function') {\n return new Promise((resolve, reject) => {\n (eventRes).then(\n () => { // fulfilled\n resolve(res);\n },\n (reason) => { // rejected\n reject(reason);\n });\n });\n }\n }\n return res;\n }\n\n // begin an event\n begin(category: Profiler.EventCategory, name: string, ctx?: WebGLContext): Event {\n if (!this._started) {\n throw new Error('profiler is not started yet');\n }\n if (ctx === undefined) {\n const startTime = now();\n this.flush(startTime);\n return new Event(category, name, startTime, e => this.endSync(e));\n } else {\n const timer: WebGLQuery = ctx.beginTimer();\n return new Event(category, name, 0, async e => this.end(e), timer, ctx);\n }\n }\n\n // end the specific event\n private async end(event: Event): Promise {\n const endTime: number = await event.checkTimer();\n if (this._timingEvents.length < this._maxNumberEvents) {\n this._timingEvents.push(new EventRecord(event.category, event.name, event.startTime, endTime));\n this.flush(endTime);\n }\n }\n\n private endSync(event: Event): void {\n const endTime: number = now();\n if (this._timingEvents.length < this._maxNumberEvents) {\n this._timingEvents.push(new EventRecord(event.category, event.name, event.startTime, endTime));\n this.flush(endTime);\n }\n }\n\n private logOneEvent(event: EventRecord) {\n Logger.verbose(\n `Profiler.${event.category}`,\n `${(event.endTime - event.startTime).toFixed(2)}ms on event '${event.name}' at ${event.endTime.toFixed(2)}`);\n }\n\n private flush(currentTime: number) {\n if (this._timingEvents.length - this._flushPointer >= this._flushBatchSize ||\n currentTime - this._flushTime >= this._flushIntervalInMilliseconds) {\n // should flush when either batch size accumlated or interval elepsed\n\n for (const previousPointer = this._flushPointer; this._flushPointer < previousPointer + this._flushBatchSize &&\n this._flushPointer < this._timingEvents.length;\n this._flushPointer++) {\n this.logOneEvent(this._timingEvents[this._flushPointer]);\n }\n\n this._flushTime = now();\n }\n }\n\n get started() {\n return this._started;\n }\n private _started = false;\n private _timingEvents: EventRecord[];\n\n private readonly _maxNumberEvents: number;\n\n private readonly _flushBatchSize: number;\n private readonly _flushIntervalInMilliseconds: number;\n\n private _flushTime: number;\n private _flushPointer = 0;\n}\n\n/**\n * returns a number to represent the current timestamp in a resolution as high as possible.\n */\nexport const now = (typeof performance !== 'undefined' && performance.now) ? () => performance.now() : Date.now;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from './graph';\nimport {OperatorImplementation, OperatorInitialization} from './operators';\n\nexport interface OpSet {\n domain: string;\n version: number;\n}\nexport declare namespace OpSet {\n /**\n * Domain of an opset, it can be an empty string(default value, represent for ai.onnx), or 'ai.onnx.ml'\n */\n type Domain = ''|'ai.onnx.ml'|'com.microsoft';\n /**\n * A resolve rule consists of 4 or 5 items: opType, opSetDomain, versionSelector, operatorImplementation and\n * operatorInitialization (optional)\n */\n type ResolveRule = [\n string, Domain, string, OperatorImplementation\n ]|[string, Domain, string, OperatorImplementation, OperatorInitialization];\n}\n\nexport function resolveOperator(node: Graph.Node, opsets: readonly OpSet[], rules: readonly OpSet.ResolveRule[]) {\n for (const rule of rules) {\n const opType = rule[0];\n const domain = rule[1];\n const versionSelector = rule[2];\n const opImpl = rule[3];\n const opInit = rule[4];\n\n if (node.opType === opType) { // operator type matches\n for (const opset of opsets) {\n // opset '' and 'ai.onnx' are considered the same.\n if (opset.domain === domain || (opset.domain === 'ai.onnx' && domain === '')) { // opset domain found\n if (matchSelector(opset.version, versionSelector)) {\n return {opImpl, opInit};\n }\n }\n }\n }\n }\n\n throw new TypeError(`cannot resolve operator '${node.opType}' with opsets: ${\n opsets.map(set => `${set.domain || 'ai.onnx'} v${set.version}`).join(', ')}`);\n}\n\nfunction matchSelector(version: number, selector: string): boolean {\n if (selector.endsWith('+')) {\n // minimum version match ('7+' expects version>=7)\n const rangeStart = Number.parseInt(selector.substring(0, selector.length - 1), 10);\n return !isNaN(rangeStart) && rangeStart <= version;\n } else if (selector.split('-').length === 2) {\n // range match ('6-8' expects 6<=version<=8)\n const pair = selector.split('-');\n const rangeStart = Number.parseInt(pair[0], 10);\n const rangeEnd = Number.parseInt(pair[1], 10);\n return !isNaN(rangeStart) && !isNaN(rangeEnd) && rangeStart <= version && version <= rangeEnd;\n } else {\n // exact match ('7' expects version===7)\n return Number.parseInt(selector, 10) === version;\n }\n}\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Guid = /** @class */ (function () {\r\n function Guid(guid) {\r\n if (!guid) {\r\n throw new TypeError(\"Invalid argument; `value` has no value.\");\r\n }\r\n this.value = Guid.EMPTY;\r\n if (guid && Guid.isGuid(guid)) {\r\n this.value = guid;\r\n }\r\n }\r\n Guid.isGuid = function (guid) {\r\n var value = guid.toString();\r\n return guid && (guid instanceof Guid || Guid.validator.test(value));\r\n };\r\n Guid.create = function () {\r\n return new Guid([Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\"));\r\n };\r\n Guid.createEmpty = function () {\r\n return new Guid(\"emptyguid\");\r\n };\r\n Guid.parse = function (guid) {\r\n return new Guid(guid);\r\n };\r\n Guid.raw = function () {\r\n return [Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\");\r\n };\r\n Guid.gen = function (count) {\r\n var out = \"\";\r\n for (var i = 0; i < count; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n }\r\n return out;\r\n };\r\n Guid.prototype.equals = function (other) {\r\n // Comparing string `value` against provided `guid` will auto-call\r\n // toString on `guid` for comparison\r\n return Guid.isGuid(other) && this.value === other.toString();\r\n };\r\n Guid.prototype.isEmpty = function () {\r\n return this.value === Guid.EMPTY;\r\n };\r\n Guid.prototype.toString = function () {\r\n return this.value;\r\n };\r\n Guid.prototype.toJSON = function () {\r\n return {\r\n value: this.value\r\n };\r\n };\r\n Guid.validator = new RegExp(\"^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$\", \"i\");\r\n Guid.EMPTY = \"00000000-0000-0000-0000-000000000000\";\r\n return Guid;\r\n}());\r\nexports.Guid = Guid;\r\n","/**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// WebAssembly optimizations to do native i64 multiplication and divide\nvar wasm = null;\ntry {\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\n ])), {}).exports;\n} catch (e) {\n // no wasm support :(\n}\n\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nfunction Long(low, high, unsigned) {\n\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n this.high = high | 0;\n\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n this.unsigned = !!unsigned;\n}\n\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations. For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative). Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\n\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nfunction isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n}\n\n/**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\nfunction ctz32(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n}\n\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\nLong.isLong = isLong;\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n if (unsigned) {\n value >>>= 0;\n if (cache = (0 <= value && value < 256)) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj)\n return cachedObj;\n }\n obj = fromBits(value, 0, true);\n if (cache)\n UINT_CACHE[value] = obj;\n return obj;\n } else {\n value |= 0;\n if (cache = (-128 <= value && value < 128)) {\n cachedObj = INT_CACHE[value];\n if (cachedObj)\n return cachedObj;\n }\n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache)\n INT_CACHE[value] = obj;\n return obj;\n }\n}\n\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromInt = fromInt;\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromNumber(value, unsigned) {\n if (isNaN(value))\n return unsigned ? UZERO : ZERO;\n if (unsigned) {\n if (value < 0)\n return UZERO;\n if (value >= TWO_PWR_64_DBL)\n return MAX_UNSIGNED_VALUE;\n } else {\n if (value <= -TWO_PWR_63_DBL)\n return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL)\n return MAX_VALUE;\n }\n if (value < 0)\n return fromNumber(-value, unsigned).neg();\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\n}\n\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromNumber = fromNumber;\n\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n}\n\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromBits = fromBits;\n\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nfunction fromString(str, unsigned, radix) {\n if (str.length === 0)\n throw Error('empty string');\n if (typeof unsigned === 'number') {\n // For goog.math.long compatibility\n radix = unsigned;\n unsigned = false;\n } else {\n unsigned = !!unsigned;\n }\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\n return unsigned ? UZERO : ZERO;\n radix = radix || 10;\n if (radix < 2 || 36 < radix)\n throw RangeError('radix');\n\n var p;\n if ((p = str.indexOf('-')) > 0)\n throw Error('interior hyphen');\n else if (p === 0) {\n return fromString(str.substring(1), unsigned, radix).neg();\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 8));\n\n var result = ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i),\n value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = result.mul(power).add(fromNumber(value));\n } else {\n result = result.mul(radixToPower);\n result = result.add(fromNumber(value));\n }\n }\n result.unsigned = unsigned;\n return result;\n}\n\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\nLong.fromString = fromString;\n\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromValue(val, unsigned) {\n if (typeof val === 'number')\n return fromNumber(val, unsigned);\n if (typeof val === 'string')\n return fromString(val, unsigned);\n // Throws for non-objects, converts non-instanceof Long:\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\n}\n\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\nLong.fromValue = fromValue;\n\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ZERO = fromInt(0);\n\n/**\n * Signed zero.\n * @type {!Long}\n */\nLong.ZERO = ZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UZERO = fromInt(0, true);\n\n/**\n * Unsigned zero.\n * @type {!Long}\n */\nLong.UZERO = UZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ONE = fromInt(1);\n\n/**\n * Signed one.\n * @type {!Long}\n */\nLong.ONE = ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UONE = fromInt(1, true);\n\n/**\n * Unsigned one.\n * @type {!Long}\n */\nLong.UONE = UONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar NEG_ONE = fromInt(-1);\n\n/**\n * Signed negative one.\n * @type {!Long}\n */\nLong.NEG_ONE = NEG_ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false);\n\n/**\n * Maximum signed value.\n * @type {!Long}\n */\nLong.MAX_VALUE = MAX_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true);\n\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n\n/**\n * Minimum signed value.\n * @type {!Long}\n */\nLong.MIN_VALUE = MIN_VALUE;\n\n/**\n * @alias Long.prototype\n * @inner\n */\nvar LongPrototype = Long.prototype;\n\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toInt = function toInt() {\n return this.unsigned ? this.low >>> 0 : this.low;\n};\n\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toNumber = function toNumber() {\n if (this.unsigned)\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n};\n\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nLongPrototype.toString = function toString(radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix)\n throw RangeError('radix');\n if (this.isZero())\n return '0';\n if (this.isNegative()) { // Unsigned Longs are never negative\n if (this.eq(MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix),\n div = this.div(radixLong),\n rem1 = div.mul(radixLong).sub(this);\n return div.toString(radix) + rem1.toInt().toString(radix);\n } else\n return '-' + this.neg().toString(radix);\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n rem = this;\n var result = '';\n while (true) {\n var remDiv = rem.div(radixToPower),\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n digits = intval.toString(radix);\n rem = remDiv;\n if (rem.isZero())\n return digits + result;\n else {\n while (digits.length < 6)\n digits = '0' + digits;\n result = '' + digits + result;\n }\n }\n};\n\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nLongPrototype.getHighBits = function getHighBits() {\n return this.high;\n};\n\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n return this.high >>> 0;\n};\n\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nLongPrototype.getLowBits = function getLowBits() {\n return this.low;\n};\n\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n return this.low >>> 0;\n};\n\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n if (this.isNegative()) // Unsigned Longs are never negative\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n var val = this.high != 0 ? this.high : this.low;\n for (var bit = 31; bit > 0; bit--)\n if ((val & (1 << bit)) != 0)\n break;\n return this.high != 0 ? bit + 33 : bit + 1;\n};\n\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isZero = function isZero() {\n return this.high === 0 && this.low === 0;\n};\n\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\nLongPrototype.eqz = LongPrototype.isZero;\n\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isNegative = function isNegative() {\n return !this.unsigned && this.high < 0;\n};\n\n/**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isPositive = function isPositive() {\n return this.unsigned || this.high >= 0;\n};\n\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isOdd = function isOdd() {\n return (this.low & 1) === 1;\n};\n\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isEven = function isEven() {\n return (this.low & 1) === 0;\n};\n\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.equals = function equals(other) {\n if (!isLong(other))\n other = fromValue(other);\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\n return false;\n return this.high === other.high && this.low === other.low;\n};\n\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.eq = LongPrototype.equals;\n\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.notEquals = function notEquals(other) {\n return !this.eq(/* validates */ other);\n};\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.neq = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ne = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThan = function lessThan(other) {\n return this.comp(/* validates */ other) < 0;\n};\n\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lt = LongPrototype.lessThan;\n\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n return this.comp(/* validates */ other) <= 0;\n};\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.le = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThan = function greaterThan(other) {\n return this.comp(/* validates */ other) > 0;\n};\n\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gt = LongPrototype.greaterThan;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n return this.comp(/* validates */ other) >= 0;\n};\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\n\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.compare = function compare(other) {\n if (!isLong(other))\n other = fromValue(other);\n if (this.eq(other))\n return 0;\n var thisNeg = this.isNegative(),\n otherNeg = other.isNegative();\n if (thisNeg && !otherNeg)\n return -1;\n if (!thisNeg && otherNeg)\n return 1;\n // At this point the sign bits are the same\n if (!this.unsigned)\n return this.sub(other).isNegative() ? -1 : 1;\n // Both are positive if at least one is unsigned\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\n};\n\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.comp = LongPrototype.compare;\n\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nLongPrototype.negate = function negate() {\n if (!this.unsigned && this.eq(MIN_VALUE))\n return MIN_VALUE;\n return this.not().add(ONE);\n};\n\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\nLongPrototype.neg = LongPrototype.negate;\n\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} addend Addend\n * @returns {!Long} Sum\n */\nLongPrototype.add = function add(addend) {\n if (!isLong(addend))\n addend = fromValue(addend);\n\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xFFFF;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xFFFF;\n\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xFFFF;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.subtract = function subtract(subtrahend) {\n if (!isLong(subtrahend))\n subtrahend = fromValue(subtrahend);\n return this.add(subtrahend.neg());\n};\n\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.sub = LongPrototype.subtract;\n\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.multiply = function multiply(multiplier) {\n if (this.isZero())\n return this;\n if (!isLong(multiplier))\n multiplier = fromValue(multiplier);\n\n // use wasm support if present\n if (wasm) {\n var low = wasm[\"mul\"](this.low,\n this.high,\n multiplier.low,\n multiplier.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (multiplier.isZero())\n return this.unsigned ? UZERO : ZERO;\n if (this.eq(MIN_VALUE))\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\n if (multiplier.eq(MIN_VALUE))\n return this.isOdd() ? MIN_VALUE : ZERO;\n\n if (this.isNegative()) {\n if (multiplier.isNegative())\n return this.neg().mul(multiplier.neg());\n else\n return this.neg().mul(multiplier).neg();\n } else if (multiplier.isNegative())\n return this.mul(multiplier.neg()).neg();\n\n // If both longs are small, use float multiplication\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xFFFF;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xFFFF;\n\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xFFFF;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.mul = LongPrototype.multiply;\n\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.divide = function divide(divisor) {\n if (!isLong(divisor))\n divisor = fromValue(divisor);\n if (divisor.isZero())\n throw Error('division by zero');\n\n // use wasm support if present\n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (!this.unsigned &&\n this.high === -0x80000000 &&\n divisor.low === -1 && divisor.high === -1) {\n // be consistent with non-wasm code path\n return this;\n }\n var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (this.isZero())\n return this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n if (!this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (this.eq(MIN_VALUE)) {\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (divisor.eq(MIN_VALUE))\n return ONE;\n else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shr(1);\n approx = halfThis.div(divisor).shl(1);\n if (approx.eq(ZERO)) {\n return divisor.isNegative() ? ONE : NEG_ONE;\n } else {\n rem = this.sub(divisor.mul(approx));\n res = approx.add(rem.div(divisor));\n return res;\n }\n }\n } else if (divisor.eq(MIN_VALUE))\n return this.unsigned ? UZERO : ZERO;\n if (this.isNegative()) {\n if (divisor.isNegative())\n return this.neg().div(divisor.neg());\n return this.neg().div(divisor).neg();\n } else if (divisor.isNegative())\n return this.div(divisor.neg()).neg();\n res = ZERO;\n } else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned)\n divisor = divisor.toUnsigned();\n if (divisor.gt(this))\n return UZERO;\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n rem = this;\n while (rem.gte(divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\n\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx),\n approxRem = approxRes.mul(divisor);\n while (approxRem.isNegative() || approxRem.gt(rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, this.unsigned);\n approxRem = approxRes.mul(divisor);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero())\n approxRes = ONE;\n\n res = res.add(approxRes);\n rem = rem.sub(approxRem);\n }\n return res;\n};\n\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.div = LongPrototype.divide;\n\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.modulo = function modulo(divisor) {\n if (!isLong(divisor))\n divisor = fromValue(divisor);\n\n // use wasm support if present\n if (wasm) {\n var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n return this.sub(this.div(divisor).mul(divisor));\n};\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.mod = LongPrototype.modulo;\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.rem = LongPrototype.modulo;\n\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nLongPrototype.not = function not() {\n return fromBits(~this.low, ~this.high, this.unsigned);\n};\n\n/**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countLeadingZeros = function countLeadingZeros() {\n return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n};\n\n/**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.clz = LongPrototype.countLeadingZeros;\n\n/**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countTrailingZeros = function countTrailingZeros() {\n return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n};\n\n/**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.ctz = LongPrototype.countTrailingZeros;\n\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.and = function and(other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.or = function or(other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.xor = function xor(other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\n if (isLong(numBits))\n numBits = numBits.toInt();\n if ((numBits &= 63) === 0)\n return this;\n else if (numBits < 32)\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\n else\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shl = LongPrototype.shiftLeft;\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRight = function shiftRight(numBits) {\n if (isLong(numBits))\n numBits = numBits.toInt();\n if ((numBits &= 63) === 0)\n return this;\n else if (numBits < 32)\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\n else\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\n};\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr = LongPrototype.shiftRight;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits < 32) return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >>> numBits, this.unsigned);\n if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n return fromBits(this.high >>> (numBits - 32), 0, this.unsigned);\n};\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = (32 - numBits);\n return fromBits(((this.low << numBits) | (this.high >>> b)), ((this.high << numBits) | (this.low >>> b)), this.unsigned);\n }\n numBits -= 32;\n b = (32 - numBits);\n return fromBits(((this.high << numBits) | (this.low >>> b)), ((this.low << numBits) | (this.high >>> b)), this.unsigned);\n}\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotl = LongPrototype.rotateLeft;\n\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = (32 - numBits);\n return fromBits(((this.high << b) | (this.low >>> numBits)), ((this.low << b) | (this.high >>> numBits)), this.unsigned);\n }\n numBits -= 32;\n b = (32 - numBits);\n return fromBits(((this.low << b) | (this.high >>> numBits)), ((this.high << b) | (this.low >>> numBits)), this.unsigned);\n}\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotr = LongPrototype.rotateRight;\n\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nLongPrototype.toSigned = function toSigned() {\n if (!this.unsigned)\n return this;\n return fromBits(this.low, this.high, false);\n};\n\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nLongPrototype.toUnsigned = function toUnsigned() {\n if (this.unsigned)\n return this;\n return fromBits(this.low, this.high, true);\n};\n\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.} Byte representation\n */\nLongPrototype.toBytes = function toBytes(le) {\n return le ? this.toBytesLE() : this.toBytesBE();\n};\n\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Little endian byte representation\n */\nLongPrototype.toBytesLE = function toBytesLE() {\n var hi = this.high,\n lo = this.low;\n return [\n lo & 0xff,\n lo >>> 8 & 0xff,\n lo >>> 16 & 0xff,\n lo >>> 24,\n hi & 0xff,\n hi >>> 8 & 0xff,\n hi >>> 16 & 0xff,\n hi >>> 24\n ];\n};\n\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Big endian byte representation\n */\nLongPrototype.toBytesBE = function toBytesBE() {\n var hi = this.high,\n lo = this.low;\n return [\n hi >>> 24,\n hi >>> 16 & 0xff,\n hi >>> 8 & 0xff,\n hi & 0xff,\n lo >>> 24,\n lo >>> 16 & 0xff,\n lo >>> 8 & 0xff,\n lo & 0xff\n ];\n};\n\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\n};\n\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n return new Long(\n bytes[0] |\n bytes[1] << 8 |\n bytes[2] << 16 |\n bytes[3] << 24,\n bytes[4] |\n bytes[5] << 8 |\n bytes[6] << 16 |\n bytes[7] << 24,\n unsigned\n );\n};\n\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n return new Long(\n bytes[4] << 24 |\n bytes[5] << 16 |\n bytes[6] << 8 |\n bytes[7],\n bytes[0] << 24 |\n bytes[1] << 16 |\n bytes[2] << 8 |\n bytes[3],\n unsigned\n );\n};\n\nexport default Long;\n","/// @file\n/// @addtogroup flatbuffers_javascript_api\n/// @{\n/// @cond FLATBUFFERS_INTERNAL\n\n/**\n * @fileoverview\n *\n * Need to suppress 'global this' error so the Node.js export line doesn't cause\n * closure compile to error out.\n * @suppress {globalThis}\n */\n\n/**\n * @const\n * @namespace\n */\nvar flatbuffers = {};\n\n/**\n * @typedef {number}\n */\nflatbuffers.Offset;\n\n/**\n * @typedef {{\n * bb: flatbuffers.ByteBuffer,\n * bb_pos: number\n * }}\n */\nflatbuffers.Table;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZEOF_SHORT = 2;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZEOF_INT = 4;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.FILE_IDENTIFIER_LENGTH = 4;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZE_PREFIX_LENGTH = 4;\n\n/**\n * @enum {number}\n */\nflatbuffers.Encoding = {\n UTF8_BYTES: 1,\n UTF16_STRING: 2\n};\n\n/**\n * @type {Int32Array}\n * @const\n */\nflatbuffers.int32 = new Int32Array(2);\n\n/**\n * @type {Float32Array}\n * @const\n */\nflatbuffers.float32 = new Float32Array(flatbuffers.int32.buffer);\n\n/**\n * @type {Float64Array}\n * @const\n */\nflatbuffers.float64 = new Float64Array(flatbuffers.int32.buffer);\n\n/**\n * @type {boolean}\n * @const\n */\nflatbuffers.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @constructor\n * @param {number} low\n * @param {number} high\n */\nflatbuffers.Long = function(low, high) {\n /**\n * @type {number}\n * @const\n */\n this.low = low | 0;\n\n /**\n * @type {number}\n * @const\n */\n this.high = high | 0;\n};\n\n/**\n * @param {number} low\n * @param {number} high\n * @returns {!flatbuffers.Long}\n */\nflatbuffers.Long.create = function(low, high) {\n // Special-case zero to avoid GC overhead for default values\n return low == 0 && high == 0 ? flatbuffers.Long.ZERO : new flatbuffers.Long(low, high);\n};\n\n/**\n * @returns {number}\n */\nflatbuffers.Long.prototype.toFloat64 = function() {\n return (this.low >>> 0) + this.high * 0x100000000;\n};\n\n/**\n * @param {flatbuffers.Long} other\n * @returns {boolean}\n */\nflatbuffers.Long.prototype.equals = function(other) {\n return this.low == other.low && this.high == other.high;\n};\n\n/**\n * @type {!flatbuffers.Long}\n * @const\n */\nflatbuffers.Long.ZERO = new flatbuffers.Long(0, 0);\n\n/// @endcond\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a FlatBufferBuilder.\n *\n * @constructor\n * @param {number=} opt_initial_size\n */\nflatbuffers.Builder = function(opt_initial_size) {\n if (!opt_initial_size) {\n var initial_size = 1024;\n } else {\n var initial_size = opt_initial_size;\n }\n\n /**\n * @type {flatbuffers.ByteBuffer}\n * @private\n */\n this.bb = flatbuffers.ByteBuffer.allocate(initial_size);\n\n /**\n * Remaining space in the ByteBuffer.\n *\n * @type {number}\n * @private\n */\n this.space = initial_size;\n\n /**\n * Minimum alignment encountered so far.\n *\n * @type {number}\n * @private\n */\n this.minalign = 1;\n\n /**\n * The vtable for the current table.\n *\n * @type {Array.}\n * @private\n */\n this.vtable = null;\n\n /**\n * The amount of fields we're actually using.\n *\n * @type {number}\n * @private\n */\n this.vtable_in_use = 0;\n\n /**\n * Whether we are currently serializing a table.\n *\n * @type {boolean}\n * @private\n */\n this.isNested = false;\n\n /**\n * Starting offset of the current struct/table.\n *\n * @type {number}\n * @private\n */\n this.object_start = 0;\n\n /**\n * List of offsets of all vtables.\n *\n * @type {Array.}\n * @private\n */\n this.vtables = [];\n\n /**\n * For the current vector being built.\n *\n * @type {number}\n * @private\n */\n this.vector_num_elems = 0;\n\n /**\n * False omits default values from the serialized data\n *\n * @type {boolean}\n * @private\n */\n this.force_defaults = false;\n};\n\nflatbuffers.Builder.prototype.clear = function() {\n this.bb.clear();\n this.space = this.bb.capacity();\n this.minalign = 1;\n this.vtable = null;\n this.vtable_in_use = 0;\n this.isNested = false;\n this.object_start = 0;\n this.vtables = [];\n this.vector_num_elems = 0;\n this.force_defaults = false;\n};\n\n/**\n * In order to save space, fields that are set to their default value\n * don't get serialized into the buffer. Forcing defaults provides a\n * way to manually disable this optimization.\n *\n * @param {boolean} forceDefaults true always serializes default values\n */\nflatbuffers.Builder.prototype.forceDefaults = function(forceDefaults) {\n this.force_defaults = forceDefaults;\n};\n\n/**\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n * called finish(). The actual data starts at the ByteBuffer's current position,\n * not necessarily at 0.\n *\n * @returns {flatbuffers.ByteBuffer}\n */\nflatbuffers.Builder.prototype.dataBuffer = function() {\n return this.bb;\n};\n\n/**\n * Get the bytes representing the FlatBuffer. Only call this after you've\n * called finish().\n *\n * @returns {!Uint8Array}\n */\nflatbuffers.Builder.prototype.asUint8Array = function() {\n return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Prepare to write an element of `size` after `additional_bytes` have been\n * written, e.g. if you write a string, you need to align such the int length\n * field is aligned to 4 bytes, and the string data follows it directly. If all\n * you need to do is alignment, `additional_bytes` will be 0.\n *\n * @param {number} size This is the of the new element to write\n * @param {number} additional_bytes The padding size\n */\nflatbuffers.Builder.prototype.prep = function(size, additional_bytes) {\n // Track the biggest thing we've ever aligned to.\n if (size > this.minalign) {\n this.minalign = size;\n }\n\n // Find the amount of alignment needed such that `size` is properly\n // aligned after `additional_bytes`\n var align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n\n // Reallocate the buffer if needed.\n while (this.space < align_size + size + additional_bytes) {\n var old_buf_size = this.bb.capacity();\n this.bb = flatbuffers.Builder.growByteBuffer(this.bb);\n this.space += this.bb.capacity() - old_buf_size;\n }\n\n this.pad(align_size);\n};\n\n/**\n * @param {number} byte_size\n */\nflatbuffers.Builder.prototype.pad = function(byte_size) {\n for (var i = 0; i < byte_size; i++) {\n this.bb.writeInt8(--this.space, 0);\n }\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt8 = function(value) {\n this.bb.writeInt8(this.space -= 1, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt16 = function(value) {\n this.bb.writeInt16(this.space -= 2, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt32 = function(value) {\n this.bb.writeInt32(this.space -= 4, value);\n};\n\n/**\n * @param {flatbuffers.Long} value\n */\nflatbuffers.Builder.prototype.writeInt64 = function(value) {\n this.bb.writeInt64(this.space -= 8, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeFloat32 = function(value) {\n this.bb.writeFloat32(this.space -= 4, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeFloat64 = function(value) {\n this.bb.writeFloat64(this.space -= 8, value);\n};\n/// @endcond\n\n/**\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int8` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt8 = function(value) {\n this.prep(1, 0);\n this.writeInt8(value);\n};\n\n/**\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int16` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt16 = function(value) {\n this.prep(2, 0);\n this.writeInt16(value);\n};\n\n/**\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int32` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt32 = function(value) {\n this.prep(4, 0);\n this.writeInt32(value);\n};\n\n/**\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {flatbuffers.Long} value The `int64` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt64 = function(value) {\n this.prep(8, 0);\n this.writeInt64(value);\n};\n\n/**\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `float32` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addFloat32 = function(value) {\n this.prep(4, 0);\n this.writeFloat32(value);\n};\n\n/**\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `float64` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addFloat64 = function(value) {\n this.prep(8, 0);\n this.writeFloat64(value);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt8 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt8(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt16 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt16(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt32 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt32(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {flatbuffers.Long} value\n * @param {flatbuffers.Long} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt64 = function(voffset, value, defaultValue) {\n if (this.force_defaults || !value.equals(defaultValue)) {\n this.addInt64(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldFloat32 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat32(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldFloat64 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat64(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {flatbuffers.Offset} value\n * @param {flatbuffers.Offset} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldOffset = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addOffset(value);\n this.slot(voffset);\n }\n};\n\n/**\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n *\n * @param {number} voffset\n * @param {flatbuffers.Offset} value\n * @param {flatbuffers.Offset} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldStruct = function(voffset, value, defaultValue) {\n if (value != defaultValue) {\n this.nested(value);\n this.slot(voffset);\n }\n};\n\n/**\n * Structures are always stored inline, they need to be created right\n * where they're used. You'll get this assertion failure if you\n * created it elsewhere.\n *\n * @param {flatbuffers.Offset} obj The offset of the created object\n */\nflatbuffers.Builder.prototype.nested = function(obj) {\n if (obj != this.offset()) {\n throw new Error('FlatBuffers: struct must be serialized inline.');\n }\n};\n\n/**\n * Should not be creating any other object, string or vector\n * while an object is being constructed\n */\nflatbuffers.Builder.prototype.notNested = function() {\n if (this.isNested) {\n throw new Error('FlatBuffers: object serialization must not be nested.');\n }\n};\n\n/**\n * Set the current vtable at `voffset` to the current location in the buffer.\n *\n * @param {number} voffset\n */\nflatbuffers.Builder.prototype.slot = function(voffset) {\n this.vtable[voffset] = this.offset();\n};\n\n/**\n * @returns {flatbuffers.Offset} Offset relative to the end of the buffer.\n */\nflatbuffers.Builder.prototype.offset = function() {\n return this.bb.capacity() - this.space;\n};\n\n/**\n * Doubles the size of the backing ByteBuffer and copies the old data towards\n * the end of the new buffer (since we build the buffer backwards).\n *\n * @param {flatbuffers.ByteBuffer} bb The current buffer with the existing data\n * @returns {!flatbuffers.ByteBuffer} A new byte buffer with the old data copied\n * to it. The data is located at the end of the buffer.\n *\n * uint8Array.set() formally takes {Array|ArrayBufferView}, so to pass\n * it a uint8Array we need to suppress the type check:\n * @suppress {checkTypes}\n */\nflatbuffers.Builder.growByteBuffer = function(bb) {\n var old_buf_size = bb.capacity();\n\n // Ensure we don't grow beyond what fits in an int.\n if (old_buf_size & 0xC0000000) {\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n }\n\n var new_buf_size = old_buf_size << 1;\n var nbb = flatbuffers.ByteBuffer.allocate(new_buf_size);\n nbb.setPosition(new_buf_size - old_buf_size);\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n return nbb;\n};\n/// @endcond\n\n/**\n * Adds on offset, relative to where it will be written.\n *\n * @param {flatbuffers.Offset} offset The offset to add.\n */\nflatbuffers.Builder.prototype.addOffset = function(offset) {\n this.prep(flatbuffers.SIZEOF_INT, 0); // Ensure alignment is already done.\n this.writeInt32(this.offset() - offset + flatbuffers.SIZEOF_INT);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Start encoding a new object in the buffer. Users will not usually need to\n * call this directly. The FlatBuffers compiler will generate helper methods\n * that call this method internally.\n *\n * @param {number} numfields\n */\nflatbuffers.Builder.prototype.startObject = function(numfields) {\n this.notNested();\n if (this.vtable == null) {\n this.vtable = [];\n }\n this.vtable_in_use = numfields;\n for (var i = 0; i < numfields; i++) {\n this.vtable[i] = 0; // This will push additional elements as needed\n }\n this.isNested = true;\n this.object_start = this.offset();\n};\n\n/**\n * Finish off writing the object that is under construction.\n *\n * @returns {flatbuffers.Offset} The offset to the object inside `dataBuffer`\n */\nflatbuffers.Builder.prototype.endObject = function() {\n if (this.vtable == null || !this.isNested) {\n throw new Error('FlatBuffers: endObject called without startObject');\n }\n\n this.addInt32(0);\n var vtableloc = this.offset();\n\n // Trim trailing zeroes.\n var i = this.vtable_in_use - 1;\n for (; i >= 0 && this.vtable[i] == 0; i--) {}\n var trimmed_size = i + 1;\n\n // Write out the current vtable.\n for (; i >= 0; i--) {\n // Offset relative to the start of the table.\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n }\n\n var standard_fields = 2; // The fields below:\n this.addInt16(vtableloc - this.object_start);\n var len = (trimmed_size + standard_fields) * flatbuffers.SIZEOF_SHORT;\n this.addInt16(len);\n\n // Search for an existing vtable that matches the current one.\n var existing_vtable = 0;\n var vt1 = this.space;\nouter_loop:\n for (i = 0; i < this.vtables.length; i++) {\n var vt2 = this.bb.capacity() - this.vtables[i];\n if (len == this.bb.readInt16(vt2)) {\n for (var j = flatbuffers.SIZEOF_SHORT; j < len; j += flatbuffers.SIZEOF_SHORT) {\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n continue outer_loop;\n }\n }\n existing_vtable = this.vtables[i];\n break;\n }\n }\n\n if (existing_vtable) {\n // Found a match:\n // Remove the current vtable.\n this.space = this.bb.capacity() - vtableloc;\n\n // Point table to existing vtable.\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n } else {\n // No match:\n // Add the location of the current vtable to the list of vtables.\n this.vtables.push(this.offset());\n\n // Point table to current vtable.\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n }\n\n this.isNested = false;\n return vtableloc;\n};\n/// @endcond\n\n/**\n * Finalize a buffer, poiting to the given `root_table`.\n *\n * @param {flatbuffers.Offset} root_table\n * @param {string=} opt_file_identifier\n * @param {boolean=} opt_size_prefix\n */\nflatbuffers.Builder.prototype.finish = function(root_table, opt_file_identifier, opt_size_prefix) {\n var size_prefix = opt_size_prefix ? flatbuffers.SIZE_PREFIX_LENGTH : 0;\n if (opt_file_identifier) {\n var file_identifier = opt_file_identifier;\n this.prep(this.minalign, flatbuffers.SIZEOF_INT +\n flatbuffers.FILE_IDENTIFIER_LENGTH + size_prefix);\n if (file_identifier.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n }\n for (var i = flatbuffers.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n this.writeInt8(file_identifier.charCodeAt(i));\n }\n }\n this.prep(this.minalign, flatbuffers.SIZEOF_INT + size_prefix);\n this.addOffset(root_table);\n if (size_prefix) {\n this.addInt32(this.bb.capacity() - this.space);\n }\n this.bb.setPosition(this.space);\n};\n\n/**\n * Finalize a size prefixed buffer, pointing to the given `root_table`.\n *\n * @param {flatbuffers.Offset} root_table\n * @param {string=} opt_file_identifier\n */\nflatbuffers.Builder.prototype.finishSizePrefixed = function (root_table, opt_file_identifier) {\n this.finish(root_table, opt_file_identifier, true);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * This checks a required field has been set in a given table that has\n * just been constructed.\n *\n * @param {flatbuffers.Offset} table\n * @param {number} field\n */\nflatbuffers.Builder.prototype.requiredField = function(table, field) {\n var table_start = this.bb.capacity() - table;\n var vtable_start = table_start - this.bb.readInt32(table_start);\n var ok = this.bb.readInt16(vtable_start + field) != 0;\n\n // If this fails, the caller will show what field needs to be set.\n if (!ok) {\n throw new Error('FlatBuffers: field ' + field + ' must be set');\n }\n};\n\n/**\n * Start a new array/vector of objects. Users usually will not call\n * this directly. The FlatBuffers compiler will create a start/end\n * method for vector types in generated code.\n *\n * @param {number} elem_size The size of each element in the array\n * @param {number} num_elems The number of elements in the array\n * @param {number} alignment The alignment of the array\n */\nflatbuffers.Builder.prototype.startVector = function(elem_size, num_elems, alignment) {\n this.notNested();\n this.vector_num_elems = num_elems;\n this.prep(flatbuffers.SIZEOF_INT, elem_size * num_elems);\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n};\n\n/**\n * Finish off the creation of an array and all its elements. The array must be\n * created with `startVector`.\n *\n * @returns {flatbuffers.Offset} The offset at which the newly created array\n * starts.\n */\nflatbuffers.Builder.prototype.endVector = function() {\n this.writeInt32(this.vector_num_elems);\n return this.offset();\n};\n/// @endcond\n\n/**\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n *\n * @param {string|Uint8Array} s The string to encode\n * @return {flatbuffers.Offset} The offset in the buffer where the encoded string starts\n */\nflatbuffers.Builder.prototype.createString = function(s) {\n if (s instanceof Uint8Array) {\n var utf8 = s;\n } else {\n var utf8 = [];\n var i = 0;\n\n while (i < s.length) {\n var codePoint;\n\n // Decode UTF-16\n var a = s.charCodeAt(i++);\n if (a < 0xD800 || a >= 0xDC00) {\n codePoint = a;\n } else {\n var b = s.charCodeAt(i++);\n codePoint = (a << 10) + b + (0x10000 - (0xD800 << 10) - 0xDC00);\n }\n\n // Encode UTF-8\n if (codePoint < 0x80) {\n utf8.push(codePoint);\n } else {\n if (codePoint < 0x800) {\n utf8.push(((codePoint >> 6) & 0x1F) | 0xC0);\n } else {\n if (codePoint < 0x10000) {\n utf8.push(((codePoint >> 12) & 0x0F) | 0xE0);\n } else {\n utf8.push(\n ((codePoint >> 18) & 0x07) | 0xF0,\n ((codePoint >> 12) & 0x3F) | 0x80);\n }\n utf8.push(((codePoint >> 6) & 0x3F) | 0x80);\n }\n utf8.push((codePoint & 0x3F) | 0x80);\n }\n }\n }\n\n this.addInt8(0);\n this.startVector(1, utf8.length, 1);\n this.bb.setPosition(this.space -= utf8.length);\n for (var i = 0, offset = this.space, bytes = this.bb.bytes(); i < utf8.length; i++) {\n bytes[offset++] = utf8[i];\n }\n return this.endVector();\n};\n\n/**\n * A helper function to avoid generated code depending on this file directly.\n *\n * @param {number} low\n * @param {number} high\n * @returns {!flatbuffers.Long}\n */\nflatbuffers.Builder.prototype.createLong = function(low, high) {\n return flatbuffers.Long.create(low, high);\n};\n////////////////////////////////////////////////////////////////////////////////\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Create a new ByteBuffer with a given array of bytes (`Uint8Array`).\n *\n * @constructor\n * @param {Uint8Array} bytes\n */\nflatbuffers.ByteBuffer = function(bytes) {\n /**\n * @type {Uint8Array}\n * @private\n */\n this.bytes_ = bytes;\n\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n/**\n * Create and allocate a new ByteBuffer with a given size.\n *\n * @param {number} byte_size\n * @returns {!flatbuffers.ByteBuffer}\n */\nflatbuffers.ByteBuffer.allocate = function(byte_size) {\n return new flatbuffers.ByteBuffer(new Uint8Array(byte_size));\n};\n\nflatbuffers.ByteBuffer.prototype.clear = function() {\n this.position_ = 0;\n};\n\n/**\n * Get the underlying `Uint8Array`.\n *\n * @returns {Uint8Array}\n */\nflatbuffers.ByteBuffer.prototype.bytes = function() {\n return this.bytes_;\n};\n\n/**\n * Get the buffer's position.\n *\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.position = function() {\n return this.position_;\n};\n\n/**\n * Set the buffer's position.\n *\n * @param {number} position\n */\nflatbuffers.ByteBuffer.prototype.setPosition = function(position) {\n this.position_ = position;\n};\n\n/**\n * Get the buffer's capacity.\n *\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.capacity = function() {\n return this.bytes_.length;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt8 = function(offset) {\n return this.readUint8(offset) << 24 >> 24;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint8 = function(offset) {\n return this.bytes_[offset];\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt16 = function(offset) {\n return this.readUint16(offset) << 16 >> 16;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint16 = function(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt32 = function(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint32 = function(offset) {\n return this.readInt32(offset) >>> 0;\n};\n\n/**\n * @param {number} offset\n * @returns {!flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.readInt64 = function(offset) {\n return new flatbuffers.Long(this.readInt32(offset), this.readInt32(offset + 4));\n};\n\n/**\n * @param {number} offset\n * @returns {!flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.readUint64 = function(offset) {\n return new flatbuffers.Long(this.readUint32(offset), this.readUint32(offset + 4));\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readFloat32 = function(offset) {\n flatbuffers.int32[0] = this.readInt32(offset);\n return flatbuffers.float32[0];\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readFloat64 = function(offset) {\n flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1] = this.readInt32(offset);\n flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n return flatbuffers.float64[0];\n};\n\n/**\n * @param {number} offset\n * @param {number|boolean} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt8 = function(offset, value) {\n this.bytes_[offset] = /** @type {number} */(value);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint8 = function(offset, value) {\n this.bytes_[offset] = value;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt16 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint16 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt32 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint32 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n};\n\n/**\n * @param {number} offset\n * @param {flatbuffers.Long} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt64 = function(offset, value) {\n this.writeInt32(offset, value.low);\n this.writeInt32(offset + 4, value.high);\n};\n\n/**\n * @param {number} offset\n * @param {flatbuffers.Long} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint64 = function(offset, value) {\n this.writeUint32(offset, value.low);\n this.writeUint32(offset + 4, value.high);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeFloat32 = function(offset, value) {\n flatbuffers.float32[0] = value;\n this.writeInt32(offset, flatbuffers.int32[0]);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeFloat64 = function(offset, value) {\n flatbuffers.float64[0] = value;\n this.writeInt32(offset, flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1]);\n this.writeInt32(offset + 4, flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0]);\n};\n\n/**\n * Return the file identifier. Behavior is undefined for FlatBuffers whose\n * schema does not include a file_identifier (likely points at padding or the\n * start of a the root vtable).\n * @returns {string}\n */\nflatbuffers.ByteBuffer.prototype.getBufferIdentifier = function() {\n if (this.bytes_.length < this.position_ + flatbuffers.SIZEOF_INT +\n flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error(\n 'FlatBuffers: ByteBuffer is too short to contain an identifier.');\n }\n var result = \"\";\n for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {\n result += String.fromCharCode(\n this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i));\n }\n return result;\n};\n\n/**\n * Look up a field in the vtable, return an offset into the object, or 0 if the\n * field is not present.\n *\n * @param {number} bb_pos\n * @param {number} vtable_offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__offset = function(bb_pos, vtable_offset) {\n var vtable = bb_pos - this.readInt32(bb_pos);\n return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\n};\n\n/**\n * Initialize any Table-derived type to point to the union at the given offset.\n *\n * @param {flatbuffers.Table} t\n * @param {number} offset\n * @returns {flatbuffers.Table}\n */\nflatbuffers.ByteBuffer.prototype.__union = function(t, offset) {\n t.bb_pos = offset + this.readInt32(offset);\n t.bb = this;\n return t;\n};\n\n/**\n * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n * This allocates a new string and converts to wide chars upon each access.\n *\n * To avoid the conversion to UTF-16, pass flatbuffers.Encoding.UTF8_BYTES as\n * the \"optionalEncoding\" argument. This is useful for avoiding conversion to\n * and from UTF-16 when the data will just be packaged back up in another\n * FlatBuffer later on.\n *\n * @param {number} offset\n * @param {flatbuffers.Encoding=} opt_encoding Defaults to UTF16_STRING\n * @returns {string|!Uint8Array}\n */\nflatbuffers.ByteBuffer.prototype.__string = function(offset, opt_encoding) {\n offset += this.readInt32(offset);\n\n var length = this.readInt32(offset);\n var result = '';\n var i = 0;\n\n offset += flatbuffers.SIZEOF_INT;\n\n if (opt_encoding === flatbuffers.Encoding.UTF8_BYTES) {\n return this.bytes_.subarray(offset, offset + length);\n }\n\n while (i < length) {\n var codePoint;\n\n // Decode UTF-8\n var a = this.readUint8(offset + i++);\n if (a < 0xC0) {\n codePoint = a;\n } else {\n var b = this.readUint8(offset + i++);\n if (a < 0xE0) {\n codePoint =\n ((a & 0x1F) << 6) |\n (b & 0x3F);\n } else {\n var c = this.readUint8(offset + i++);\n if (a < 0xF0) {\n codePoint =\n ((a & 0x0F) << 12) |\n ((b & 0x3F) << 6) |\n (c & 0x3F);\n } else {\n var d = this.readUint8(offset + i++);\n codePoint =\n ((a & 0x07) << 18) |\n ((b & 0x3F) << 12) |\n ((c & 0x3F) << 6) |\n (d & 0x3F);\n }\n }\n }\n\n // Encode UTF-16\n if (codePoint < 0x10000) {\n result += String.fromCharCode(codePoint);\n } else {\n codePoint -= 0x10000;\n result += String.fromCharCode(\n (codePoint >> 10) + 0xD800,\n (codePoint & ((1 << 10) - 1)) + 0xDC00);\n }\n }\n\n return result;\n};\n\n/**\n * Retrieve the relative offset stored at \"offset\"\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__indirect = function(offset) {\n return offset + this.readInt32(offset);\n};\n\n/**\n * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n *\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__vector = function(offset) {\n return offset + this.readInt32(offset) + flatbuffers.SIZEOF_INT; // data starts after the length\n};\n\n/**\n * Get the length of a vector whose offset is stored at \"offset\" in this object.\n *\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__vector_len = function(offset) {\n return this.readInt32(offset + this.readInt32(offset));\n};\n\n/**\n * @param {string} ident\n * @returns {boolean}\n */\nflatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) {\n if (ident.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n }\n for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {\n if (ident.charCodeAt(i) != this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * A helper function to avoid generated code depending on this file directly.\n *\n * @param {number} low\n * @param {number} high\n * @returns {!flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.createLong = function(low, high) {\n return flatbuffers.Long.create(low, high);\n};\n\n// Exports for Node.js and RequireJS\nexport { flatbuffers };\n\n/// @endcond\n/// @}\n","// automatically generated by the FlatBuffers compiler, do not modify\n/* eslint-disable */\n\nimport {flatbuffers} from 'flatbuffers';\n\n/**\n * @enum {number}\n */\nexport namespace onnxruntime.experimental.fbs {\n export enum AttributeType {\n UNDEFINED = 0,\n FLOAT = 1,\n INT = 2,\n STRING = 3,\n TENSOR = 4,\n GRAPH = 5,\n FLOATS = 6,\n INTS = 7,\n STRINGS = 8,\n TENSORS = 9,\n GRAPHS = 10,\n SPARSE_TENSOR = 11,\n SPARSE_TENSORS = 12\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace onnxruntime.experimental.fbs {\n export enum DimensionValueType {UNKNOWN = 0, VALUE = 1, PARAM = 2}\n}\n\n/**\n * @enum {number}\n */\nexport namespace onnxruntime.experimental.fbs {\n export enum TensorDataType {\n UNDEFINED = 0,\n FLOAT = 1,\n UINT8 = 2,\n INT8 = 3,\n UINT16 = 4,\n INT16 = 5,\n INT32 = 6,\n INT64 = 7,\n STRING = 8,\n BOOL = 9,\n FLOAT16 = 10,\n DOUBLE = 11,\n UINT32 = 12,\n UINT64 = 13,\n COMPLEX64 = 14,\n COMPLEX128 = 15,\n BFLOAT16 = 16,\n FLOAT8E4M3FN = 17,\n FLOAT8E4M3FNUZ = 18,\n FLOAT8E5M2 = 19,\n FLOAT8E5M2FNUZ = 20,\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace onnxruntime.experimental.fbs {\n export enum NodeType {Primitive = 0, Fused = 1}\n}\n\n/**\n * @enum {number}\n */\nexport namespace onnxruntime.experimental.fbs {\n export enum TypeInfoValue {NONE = 0, tensor_type = 1, sequence_type = 2, map_type = 3}\n}\n\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Shape {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Shape\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Shape {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Shape= obj\n * @returns Shape\n */\n static getRootAsShape(bb: flatbuffers.ByteBuffer, obj?: Shape): Shape {\n return (obj || new Shape()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Shape= obj\n * @returns Shape\n */\n static getSizePrefixedRootAsShape(bb: flatbuffers.ByteBuffer, obj?: Shape): Shape {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Shape()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.Dimension= obj\n * @returns onnxruntime.experimental.fbs.Dimension\n */\n dim(index: number, obj?: onnxruntime.experimental.fbs.Dimension): onnxruntime.experimental.fbs.Dimension|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new onnxruntime.experimental.fbs.Dimension())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n dimLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startShape(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dimOffset\n */\n static addDim(builder: flatbuffers.Builder, dimOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, dimOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createDimVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startDimVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endShape(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createShape(builder: flatbuffers.Builder, dimOffset: flatbuffers.Offset): flatbuffers.Offset {\n Shape.startShape(builder);\n Shape.addDim(builder, dimOffset);\n return Shape.endShape(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Dimension {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Dimension\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Dimension {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Dimension= obj\n * @returns Dimension\n */\n static getRootAsDimension(bb: flatbuffers.ByteBuffer, obj?: Dimension): Dimension {\n return (obj || new Dimension()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Dimension= obj\n * @returns Dimension\n */\n static getSizePrefixedRootAsDimension(bb: flatbuffers.ByteBuffer, obj?: Dimension): Dimension {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Dimension()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param onnxruntime.experimental.fbs.DimensionValue= obj\n * @returns onnxruntime.experimental.fbs.DimensionValue|null\n */\n value(obj?: onnxruntime.experimental.fbs.DimensionValue): onnxruntime.experimental.fbs.DimensionValue|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new onnxruntime.experimental.fbs.DimensionValue())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n denotation(): string|null;\n denotation(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n denotation(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDimension(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset valueOffset\n */\n static addValue(builder: flatbuffers.Builder, valueOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, valueOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset denotationOffset\n */\n static addDenotation(builder: flatbuffers.Builder, denotationOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, denotationOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDimension(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDimension(\n builder: flatbuffers.Builder, valueOffset: flatbuffers.Offset,\n denotationOffset: flatbuffers.Offset): flatbuffers.Offset {\n Dimension.startDimension(builder);\n Dimension.addValue(builder, valueOffset);\n Dimension.addDenotation(builder, denotationOffset);\n return Dimension.endDimension(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class DimensionValue {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns DimensionValue\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): DimensionValue {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param DimensionValue= obj\n * @returns DimensionValue\n */\n static getRootAsDimensionValue(bb: flatbuffers.ByteBuffer, obj?: DimensionValue): DimensionValue {\n return (obj || new DimensionValue()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param DimensionValue= obj\n * @returns DimensionValue\n */\n static getSizePrefixedRootAsDimensionValue(bb: flatbuffers.ByteBuffer, obj?: DimensionValue): DimensionValue {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new DimensionValue()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.DimensionValueType\n */\n dimType(): onnxruntime.experimental.fbs.DimensionValueType {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt8(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.DimensionValueType.UNKNOWN;\n }\n\n /**\n * @returns flatbuffers.Long\n */\n dimValue(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n dimParam(): string|null;\n dimParam(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n dimParam(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDimensionValue(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.DimensionValueType dimType\n */\n static addDimType(builder: flatbuffers.Builder, dimType: onnxruntime.experimental.fbs.DimensionValueType) {\n builder.addFieldInt8(0, dimType, onnxruntime.experimental.fbs.DimensionValueType.UNKNOWN);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long dimValue\n */\n static addDimValue(builder: flatbuffers.Builder, dimValue: flatbuffers.Long) {\n builder.addFieldInt64(1, dimValue, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dimParamOffset\n */\n static addDimParam(builder: flatbuffers.Builder, dimParamOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, dimParamOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDimensionValue(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDimensionValue(\n builder: flatbuffers.Builder, dimType: onnxruntime.experimental.fbs.DimensionValueType,\n dimValue: flatbuffers.Long, dimParamOffset: flatbuffers.Offset): flatbuffers.Offset {\n DimensionValue.startDimensionValue(builder);\n DimensionValue.addDimType(builder, dimType);\n DimensionValue.addDimValue(builder, dimValue);\n DimensionValue.addDimParam(builder, dimParamOffset);\n return DimensionValue.endDimensionValue(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class TensorTypeAndShape {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns TensorTypeAndShape\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): TensorTypeAndShape {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param TensorTypeAndShape= obj\n * @returns TensorTypeAndShape\n */\n static getRootAsTensorTypeAndShape(bb: flatbuffers.ByteBuffer, obj?: TensorTypeAndShape): TensorTypeAndShape {\n return (obj || new TensorTypeAndShape()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param TensorTypeAndShape= obj\n * @returns TensorTypeAndShape\n */\n static getSizePrefixedRootAsTensorTypeAndShape(bb: flatbuffers.ByteBuffer, obj?: TensorTypeAndShape):\n TensorTypeAndShape {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new TensorTypeAndShape()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.TensorDataType\n */\n elemType(): onnxruntime.experimental.fbs.TensorDataType {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt32(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.TensorDataType.UNDEFINED;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Shape= obj\n * @returns onnxruntime.experimental.fbs.Shape|null\n */\n shape(obj?: onnxruntime.experimental.fbs.Shape): onnxruntime.experimental.fbs.Shape|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.Shape())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startTensorTypeAndShape(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.TensorDataType elemType\n */\n static addElemType(builder: flatbuffers.Builder, elemType: onnxruntime.experimental.fbs.TensorDataType) {\n builder.addFieldInt32(0, elemType, onnxruntime.experimental.fbs.TensorDataType.UNDEFINED);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset shapeOffset\n */\n static addShape(builder: flatbuffers.Builder, shapeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, shapeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTensorTypeAndShape(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createTensorTypeAndShape(\n builder: flatbuffers.Builder, elemType: onnxruntime.experimental.fbs.TensorDataType,\n shapeOffset: flatbuffers.Offset): flatbuffers.Offset {\n TensorTypeAndShape.startTensorTypeAndShape(builder);\n TensorTypeAndShape.addElemType(builder, elemType);\n TensorTypeAndShape.addShape(builder, shapeOffset);\n return TensorTypeAndShape.endTensorTypeAndShape(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class MapType {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns MapType\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): MapType {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param MapType= obj\n * @returns MapType\n */\n static getRootAsMapType(bb: flatbuffers.ByteBuffer, obj?: MapType): MapType {\n return (obj || new MapType()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param MapType= obj\n * @returns MapType\n */\n static getSizePrefixedRootAsMapType(bb: flatbuffers.ByteBuffer, obj?: MapType): MapType {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new MapType()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.TensorDataType\n */\n keyType(): onnxruntime.experimental.fbs.TensorDataType {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt32(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.TensorDataType.UNDEFINED;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.TypeInfo= obj\n * @returns onnxruntime.experimental.fbs.TypeInfo|null\n */\n valueType(obj?: onnxruntime.experimental.fbs.TypeInfo): onnxruntime.experimental.fbs.TypeInfo|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.TypeInfo())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startMapType(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.TensorDataType keyType\n */\n static addKeyType(builder: flatbuffers.Builder, keyType: onnxruntime.experimental.fbs.TensorDataType) {\n builder.addFieldInt32(0, keyType, onnxruntime.experimental.fbs.TensorDataType.UNDEFINED);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset valueTypeOffset\n */\n static addValueType(builder: flatbuffers.Builder, valueTypeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, valueTypeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endMapType(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createMapType(\n builder: flatbuffers.Builder, keyType: onnxruntime.experimental.fbs.TensorDataType,\n valueTypeOffset: flatbuffers.Offset): flatbuffers.Offset {\n MapType.startMapType(builder);\n MapType.addKeyType(builder, keyType);\n MapType.addValueType(builder, valueTypeOffset);\n return MapType.endMapType(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class SequenceType {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns SequenceType\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): SequenceType {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SequenceType= obj\n * @returns SequenceType\n */\n static getRootAsSequenceType(bb: flatbuffers.ByteBuffer, obj?: SequenceType): SequenceType {\n return (obj || new SequenceType()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SequenceType= obj\n * @returns SequenceType\n */\n static getSizePrefixedRootAsSequenceType(bb: flatbuffers.ByteBuffer, obj?: SequenceType): SequenceType {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SequenceType()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param onnxruntime.experimental.fbs.TypeInfo= obj\n * @returns onnxruntime.experimental.fbs.TypeInfo|null\n */\n elemType(obj?: onnxruntime.experimental.fbs.TypeInfo): onnxruntime.experimental.fbs.TypeInfo|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new onnxruntime.experimental.fbs.TypeInfo())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startSequenceType(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset elemTypeOffset\n */\n static addElemType(builder: flatbuffers.Builder, elemTypeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, elemTypeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endSequenceType(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createSequenceType(builder: flatbuffers.Builder, elemTypeOffset: flatbuffers.Offset): flatbuffers.Offset {\n SequenceType.startSequenceType(builder);\n SequenceType.addElemType(builder, elemTypeOffset);\n return SequenceType.endSequenceType(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class EdgeEnd {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns EdgeEnd\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): EdgeEnd {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @returns number\n */\n nodeIndex(): number {\n return this.bb!.readUint32(this.bb_pos);\n }\n\n /**\n * @returns number\n */\n srcArgIndex(): number {\n return this.bb!.readInt32(this.bb_pos + 4);\n }\n\n /**\n * @returns number\n */\n dstArgIndex(): number {\n return this.bb!.readInt32(this.bb_pos + 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number node_index\n * @param number src_arg_index\n * @param number dst_arg_index\n * @returns flatbuffers.Offset\n */\n static createEdgeEnd(\n builder: flatbuffers.Builder, node_index: number, src_arg_index: number,\n dst_arg_index: number): flatbuffers.Offset {\n builder.prep(4, 12);\n builder.writeInt32(dst_arg_index);\n builder.writeInt32(src_arg_index);\n builder.writeInt32(node_index);\n return builder.offset();\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class NodeEdge {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns NodeEdge\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): NodeEdge {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param NodeEdge= obj\n * @returns NodeEdge\n */\n static getRootAsNodeEdge(bb: flatbuffers.ByteBuffer, obj?: NodeEdge): NodeEdge {\n return (obj || new NodeEdge()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param NodeEdge= obj\n * @returns NodeEdge\n */\n static getSizePrefixedRootAsNodeEdge(bb: flatbuffers.ByteBuffer, obj?: NodeEdge): NodeEdge {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new NodeEdge()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns number\n */\n nodeIndex(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.EdgeEnd= obj\n * @returns onnxruntime.experimental.fbs.EdgeEnd\n */\n inputEdges(index: number, obj?: onnxruntime.experimental.fbs.EdgeEnd): onnxruntime.experimental.fbs.EdgeEnd|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.EdgeEnd())\n .__init(this.bb!.__vector(this.bb_pos + offset) + index * 12, this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n inputEdgesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.EdgeEnd= obj\n * @returns onnxruntime.experimental.fbs.EdgeEnd\n */\n outputEdges(index: number, obj?: onnxruntime.experimental.fbs.EdgeEnd): onnxruntime.experimental.fbs.EdgeEnd|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new onnxruntime.experimental.fbs.EdgeEnd())\n .__init(this.bb!.__vector(this.bb_pos + offset) + index * 12, this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n outputEdgesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startNodeEdge(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number nodeIndex\n */\n static addNodeIndex(builder: flatbuffers.Builder, nodeIndex: number) {\n builder.addFieldInt32(0, nodeIndex, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset inputEdgesOffset\n */\n static addInputEdges(builder: flatbuffers.Builder, inputEdgesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, inputEdgesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startInputEdgesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(12, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset outputEdgesOffset\n */\n static addOutputEdges(builder: flatbuffers.Builder, outputEdgesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, outputEdgesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startOutputEdgesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(12, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endNodeEdge(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createNodeEdge(\n builder: flatbuffers.Builder, nodeIndex: number, inputEdgesOffset: flatbuffers.Offset,\n outputEdgesOffset: flatbuffers.Offset): flatbuffers.Offset {\n NodeEdge.startNodeEdge(builder);\n NodeEdge.addNodeIndex(builder, nodeIndex);\n NodeEdge.addInputEdges(builder, inputEdgesOffset);\n NodeEdge.addOutputEdges(builder, outputEdgesOffset);\n return NodeEdge.endNodeEdge(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Node {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Node\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Node {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Node= obj\n * @returns Node\n */\n static getRootAsNode(bb: flatbuffers.ByteBuffer, obj?: Node): Node {\n return (obj || new Node()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Node= obj\n * @returns Node\n */\n static getSizePrefixedRootAsNode(bb: flatbuffers.ByteBuffer, obj?: Node): Node {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Node()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n name(): string|null;\n name(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n name(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n docString(): string|null;\n docString(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n docString(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n domain(): string|null;\n domain(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n domain(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n sinceVersion(): number {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns number\n */\n index(): number {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n opType(): string|null;\n opType(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n opType(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.NodeType\n */\n type(): onnxruntime.experimental.fbs.NodeType {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? /** */ (this.bb!.readInt32(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.NodeType.Primitive;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n executionProviderType(): string|null;\n executionProviderType(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n executionProviderType(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n inputs(index: number): string;\n inputs(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n inputs(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n inputsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n outputs(index: number): string;\n outputs(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n outputs(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 22);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n outputsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 22);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.Attribute= obj\n * @returns onnxruntime.experimental.fbs.Attribute\n */\n attributes(index: number, obj?: onnxruntime.experimental.fbs.Attribute): onnxruntime.experimental.fbs.Attribute\n |null {\n let offset = this.bb!.__offset(this.bb_pos, 24);\n return offset ? (obj || new onnxruntime.experimental.fbs.Attribute())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n attributesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 24);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @returns number\n */\n inputArgCounts(index: number): number|null {\n let offset = this.bb!.__offset(this.bb_pos, 26);\n return offset ? this.bb!.readInt32(this.bb!.__vector(this.bb_pos + offset) + index * 4) : 0;\n }\n\n /**\n * @returns number\n */\n inputArgCountsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 26);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns Int32Array\n */\n inputArgCountsArray(): Int32Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 26);\n return offset ?\n new Int32Array(\n this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset),\n this.bb!.__vector_len(this.bb_pos + offset)) :\n null;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n implicitInputs(index: number): string;\n implicitInputs(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n implicitInputs(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 28);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n implicitInputsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 28);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startNode(builder: flatbuffers.Builder) {\n builder.startObject(13);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nameOffset\n */\n static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset docStringOffset\n */\n static addDocString(builder: flatbuffers.Builder, docStringOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, docStringOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset domainOffset\n */\n static addDomain(builder: flatbuffers.Builder, domainOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, domainOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number sinceVersion\n */\n static addSinceVersion(builder: flatbuffers.Builder, sinceVersion: number) {\n builder.addFieldInt32(3, sinceVersion, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number index\n */\n static addIndex(builder: flatbuffers.Builder, index: number) {\n builder.addFieldInt32(4, index, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset opTypeOffset\n */\n static addOpType(builder: flatbuffers.Builder, opTypeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(5, opTypeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.NodeType type\n */\n static addType(builder: flatbuffers.Builder, type: onnxruntime.experimental.fbs.NodeType) {\n builder.addFieldInt32(6, type, onnxruntime.experimental.fbs.NodeType.Primitive);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset executionProviderTypeOffset\n */\n static addExecutionProviderType(builder: flatbuffers.Builder, executionProviderTypeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(7, executionProviderTypeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset inputsOffset\n */\n static addInputs(builder: flatbuffers.Builder, inputsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(8, inputsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createInputsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startInputsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset outputsOffset\n */\n static addOutputs(builder: flatbuffers.Builder, outputsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(9, outputsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createOutputsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startOutputsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset attributesOffset\n */\n static addAttributes(builder: flatbuffers.Builder, attributesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(10, attributesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createAttributesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startAttributesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset inputArgCountsOffset\n */\n static addInputArgCounts(builder: flatbuffers.Builder, inputArgCountsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(11, inputArgCountsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createInputArgCountsVector(builder: flatbuffers.Builder, data: number[]|Uint8Array): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt32(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startInputArgCountsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset implicitInputsOffset\n */\n static addImplicitInputs(builder: flatbuffers.Builder, implicitInputsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(12, implicitInputsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createImplicitInputsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startImplicitInputsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endNode(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createNode(\n builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset, docStringOffset: flatbuffers.Offset,\n domainOffset: flatbuffers.Offset, sinceVersion: number, index: number, opTypeOffset: flatbuffers.Offset,\n type: onnxruntime.experimental.fbs.NodeType, executionProviderTypeOffset: flatbuffers.Offset,\n inputsOffset: flatbuffers.Offset, outputsOffset: flatbuffers.Offset, attributesOffset: flatbuffers.Offset,\n inputArgCountsOffset: flatbuffers.Offset, implicitInputsOffset: flatbuffers.Offset): flatbuffers.Offset {\n Node.startNode(builder);\n Node.addName(builder, nameOffset);\n Node.addDocString(builder, docStringOffset);\n Node.addDomain(builder, domainOffset);\n Node.addSinceVersion(builder, sinceVersion);\n Node.addIndex(builder, index);\n Node.addOpType(builder, opTypeOffset);\n Node.addType(builder, type);\n Node.addExecutionProviderType(builder, executionProviderTypeOffset);\n Node.addInputs(builder, inputsOffset);\n Node.addOutputs(builder, outputsOffset);\n Node.addAttributes(builder, attributesOffset);\n Node.addInputArgCounts(builder, inputArgCountsOffset);\n Node.addImplicitInputs(builder, implicitInputsOffset);\n return Node.endNode(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class ValueInfo {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns ValueInfo\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): ValueInfo {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param ValueInfo= obj\n * @returns ValueInfo\n */\n static getRootAsValueInfo(bb: flatbuffers.ByteBuffer, obj?: ValueInfo): ValueInfo {\n return (obj || new ValueInfo()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param ValueInfo= obj\n * @returns ValueInfo\n */\n static getSizePrefixedRootAsValueInfo(bb: flatbuffers.ByteBuffer, obj?: ValueInfo): ValueInfo {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ValueInfo()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n name(): string|null;\n name(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n name(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n docString(): string|null;\n docString(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n docString(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.TypeInfo= obj\n * @returns onnxruntime.experimental.fbs.TypeInfo|null\n */\n type(obj?: onnxruntime.experimental.fbs.TypeInfo): onnxruntime.experimental.fbs.TypeInfo|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new onnxruntime.experimental.fbs.TypeInfo())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startValueInfo(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nameOffset\n */\n static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset docStringOffset\n */\n static addDocString(builder: flatbuffers.Builder, docStringOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, docStringOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset typeOffset\n */\n static addType(builder: flatbuffers.Builder, typeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, typeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endValueInfo(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createValueInfo(\n builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset, docStringOffset: flatbuffers.Offset,\n typeOffset: flatbuffers.Offset): flatbuffers.Offset {\n ValueInfo.startValueInfo(builder);\n ValueInfo.addName(builder, nameOffset);\n ValueInfo.addDocString(builder, docStringOffset);\n ValueInfo.addType(builder, typeOffset);\n return ValueInfo.endValueInfo(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class TypeInfo {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns TypeInfo\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): TypeInfo {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param TypeInfo= obj\n * @returns TypeInfo\n */\n static getRootAsTypeInfo(bb: flatbuffers.ByteBuffer, obj?: TypeInfo): TypeInfo {\n return (obj || new TypeInfo()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param TypeInfo= obj\n * @returns TypeInfo\n */\n static getSizePrefixedRootAsTypeInfo(bb: flatbuffers.ByteBuffer, obj?: TypeInfo): TypeInfo {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new TypeInfo()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n denotation(): string|null;\n denotation(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n denotation(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.TypeInfoValue\n */\n valueType(): onnxruntime.experimental.fbs.TypeInfoValue {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? /** */ (this.bb!.readUint8(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.TypeInfoValue.NONE;\n }\n\n /**\n * @param flatbuffers.Table obj\n * @returns ?flatbuffers.Table\n */\n value(obj: T): T|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startTypeInfo(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset denotationOffset\n */\n static addDenotation(builder: flatbuffers.Builder, denotationOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, denotationOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.TypeInfoValue valueType\n */\n static addValueType(builder: flatbuffers.Builder, valueType: onnxruntime.experimental.fbs.TypeInfoValue) {\n builder.addFieldInt8(1, valueType, onnxruntime.experimental.fbs.TypeInfoValue.NONE);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset valueOffset\n */\n static addValue(builder: flatbuffers.Builder, valueOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, valueOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTypeInfo(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createTypeInfo(\n builder: flatbuffers.Builder, denotationOffset: flatbuffers.Offset,\n valueType: onnxruntime.experimental.fbs.TypeInfoValue, valueOffset: flatbuffers.Offset): flatbuffers.Offset {\n TypeInfo.startTypeInfo(builder);\n TypeInfo.addDenotation(builder, denotationOffset);\n TypeInfo.addValueType(builder, valueType);\n TypeInfo.addValue(builder, valueOffset);\n return TypeInfo.endTypeInfo(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class OperatorSetId {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns OperatorSetId\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): OperatorSetId {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param OperatorSetId= obj\n * @returns OperatorSetId\n */\n static getRootAsOperatorSetId(bb: flatbuffers.ByteBuffer, obj?: OperatorSetId): OperatorSetId {\n return (obj || new OperatorSetId()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param OperatorSetId= obj\n * @returns OperatorSetId\n */\n static getSizePrefixedRootAsOperatorSetId(bb: flatbuffers.ByteBuffer, obj?: OperatorSetId): OperatorSetId {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new OperatorSetId()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n domain(): string|null;\n domain(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n domain(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @returns flatbuffers.Long\n */\n version(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startOperatorSetId(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset domainOffset\n */\n static addDomain(builder: flatbuffers.Builder, domainOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, domainOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long version\n */\n static addVersion(builder: flatbuffers.Builder, version: flatbuffers.Long) {\n builder.addFieldInt64(1, version, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endOperatorSetId(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createOperatorSetId(\n builder: flatbuffers.Builder, domainOffset: flatbuffers.Offset, version: flatbuffers.Long): flatbuffers.Offset {\n OperatorSetId.startOperatorSetId(builder);\n OperatorSetId.addDomain(builder, domainOffset);\n OperatorSetId.addVersion(builder, version);\n return OperatorSetId.endOperatorSetId(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Tensor {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Tensor\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Tensor {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Tensor= obj\n * @returns Tensor\n */\n static getRootAsTensor(bb: flatbuffers.ByteBuffer, obj?: Tensor): Tensor {\n return (obj || new Tensor()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Tensor= obj\n * @returns Tensor\n */\n static getSizePrefixedRootAsTensor(bb: flatbuffers.ByteBuffer, obj?: Tensor): Tensor {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Tensor()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n name(): string|null;\n name(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n name(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n docString(): string|null;\n docString(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n docString(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param number index\n * @returns flatbuffers.Long\n */\n dims(index: number): flatbuffers.Long|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.readInt64(this.bb!.__vector(this.bb_pos + offset) + index * 8) :\n this.bb!.createLong(0, 0);\n }\n\n /**\n * @returns number\n */\n dimsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.TensorDataType\n */\n dataType(): onnxruntime.experimental.fbs.TensorDataType {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? /** */ (this.bb!.readInt32(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.TensorDataType.UNDEFINED;\n }\n\n /**\n * @param number index\n * @returns number\n */\n rawData(index: number): number|null {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n }\n\n /**\n * @returns number\n */\n rawDataLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns Uint8Array\n */\n rawDataArray(): Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ?\n new Uint8Array(\n this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset),\n this.bb!.__vector_len(this.bb_pos + offset)) :\n null;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n stringData(index: number): string;\n stringData(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n stringData(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n stringDataLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startTensor(builder: flatbuffers.Builder) {\n builder.startObject(6);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nameOffset\n */\n static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset docStringOffset\n */\n static addDocString(builder: flatbuffers.Builder, docStringOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, docStringOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dimsOffset\n */\n static addDims(builder: flatbuffers.Builder, dimsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, dimsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createDimsVector(builder: flatbuffers.Builder, data: flatbuffers.Long[]): flatbuffers.Offset {\n builder.startVector(8, data.length, 8);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt64(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startDimsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(8, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.TensorDataType dataType\n */\n static addDataType(builder: flatbuffers.Builder, dataType: onnxruntime.experimental.fbs.TensorDataType) {\n builder.addFieldInt32(3, dataType, onnxruntime.experimental.fbs.TensorDataType.UNDEFINED);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset rawDataOffset\n */\n static addRawData(builder: flatbuffers.Builder, rawDataOffset: flatbuffers.Offset) {\n builder.addFieldOffset(4, rawDataOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createRawDataVector(builder: flatbuffers.Builder, data: number[]|Uint8Array): flatbuffers.Offset {\n builder.startVector(1, data.length, 1);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt8(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startRawDataVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(1, numElems, 1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset stringDataOffset\n */\n static addStringData(builder: flatbuffers.Builder, stringDataOffset: flatbuffers.Offset) {\n builder.addFieldOffset(5, stringDataOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createStringDataVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startStringDataVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTensor(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createTensor(\n builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset, docStringOffset: flatbuffers.Offset,\n dimsOffset: flatbuffers.Offset, dataType: onnxruntime.experimental.fbs.TensorDataType,\n rawDataOffset: flatbuffers.Offset, stringDataOffset: flatbuffers.Offset): flatbuffers.Offset {\n Tensor.startTensor(builder);\n Tensor.addName(builder, nameOffset);\n Tensor.addDocString(builder, docStringOffset);\n Tensor.addDims(builder, dimsOffset);\n Tensor.addDataType(builder, dataType);\n Tensor.addRawData(builder, rawDataOffset);\n Tensor.addStringData(builder, stringDataOffset);\n return Tensor.endTensor(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class SparseTensor {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns SparseTensor\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): SparseTensor {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SparseTensor= obj\n * @returns SparseTensor\n */\n static getRootAsSparseTensor(bb: flatbuffers.ByteBuffer, obj?: SparseTensor): SparseTensor {\n return (obj || new SparseTensor()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SparseTensor= obj\n * @returns SparseTensor\n */\n static getSizePrefixedRootAsSparseTensor(bb: flatbuffers.ByteBuffer, obj?: SparseTensor): SparseTensor {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SparseTensor()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Tensor= obj\n * @returns onnxruntime.experimental.fbs.Tensor|null\n */\n values(obj?: onnxruntime.experimental.fbs.Tensor): onnxruntime.experimental.fbs.Tensor|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new onnxruntime.experimental.fbs.Tensor())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Tensor= obj\n * @returns onnxruntime.experimental.fbs.Tensor|null\n */\n indices(obj?: onnxruntime.experimental.fbs.Tensor): onnxruntime.experimental.fbs.Tensor|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.Tensor())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param number index\n * @returns flatbuffers.Long\n */\n dims(index: number): flatbuffers.Long|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.readInt64(this.bb!.__vector(this.bb_pos + offset) + index * 8) :\n this.bb!.createLong(0, 0);\n }\n\n /**\n * @returns number\n */\n dimsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startSparseTensor(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset valuesOffset\n */\n static addValues(builder: flatbuffers.Builder, valuesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, valuesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset indicesOffset\n */\n static addIndices(builder: flatbuffers.Builder, indicesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, indicesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dimsOffset\n */\n static addDims(builder: flatbuffers.Builder, dimsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, dimsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createDimsVector(builder: flatbuffers.Builder, data: flatbuffers.Long[]): flatbuffers.Offset {\n builder.startVector(8, data.length, 8);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt64(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startDimsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(8, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endSparseTensor(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createSparseTensor(\n builder: flatbuffers.Builder, valuesOffset: flatbuffers.Offset, indicesOffset: flatbuffers.Offset,\n dimsOffset: flatbuffers.Offset): flatbuffers.Offset {\n SparseTensor.startSparseTensor(builder);\n SparseTensor.addValues(builder, valuesOffset);\n SparseTensor.addIndices(builder, indicesOffset);\n SparseTensor.addDims(builder, dimsOffset);\n return SparseTensor.endSparseTensor(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Attribute {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Attribute\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Attribute {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Attribute= obj\n * @returns Attribute\n */\n static getRootAsAttribute(bb: flatbuffers.ByteBuffer, obj?: Attribute): Attribute {\n return (obj || new Attribute()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Attribute= obj\n * @returns Attribute\n */\n static getSizePrefixedRootAsAttribute(bb: flatbuffers.ByteBuffer, obj?: Attribute): Attribute {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Attribute()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n name(): string|null;\n name(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n name(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n docString(): string|null;\n docString(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n docString(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @returns onnxruntime.experimental.fbs.AttributeType\n */\n type(): onnxruntime.experimental.fbs.AttributeType {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? /** */ (this.bb!.readInt32(this.bb_pos + offset)) :\n onnxruntime.experimental.fbs.AttributeType.UNDEFINED;\n }\n\n /**\n * @returns number\n */\n f(): number {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readFloat32(this.bb_pos + offset) : 0.0;\n }\n\n /**\n * @returns flatbuffers.Long\n */\n i(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n s(): string|null;\n s(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n s(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Tensor= obj\n * @returns onnxruntime.experimental.fbs.Tensor|null\n */\n t(obj?: onnxruntime.experimental.fbs.Tensor): onnxruntime.experimental.fbs.Tensor|null {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? (obj || new onnxruntime.experimental.fbs.Tensor())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Graph= obj\n * @returns onnxruntime.experimental.fbs.Graph|null\n */\n g(obj?: onnxruntime.experimental.fbs.Graph): onnxruntime.experimental.fbs.Graph|null {\n let offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? (obj || new onnxruntime.experimental.fbs.Graph())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param number index\n * @returns number\n */\n floats(index: number): number|null {\n let offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ? this.bb!.readFloat32(this.bb!.__vector(this.bb_pos + offset) + index * 4) : 0;\n }\n\n /**\n * @returns number\n */\n floatsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns Float32Array\n */\n floatsArray(): Float32Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ?\n new Float32Array(\n this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset),\n this.bb!.__vector_len(this.bb_pos + offset)) :\n null;\n }\n\n /**\n * @param number index\n * @returns flatbuffers.Long\n */\n ints(index: number): flatbuffers.Long|null {\n let offset = this.bb!.__offset(this.bb_pos, 22);\n return offset ? this.bb!.readInt64(this.bb!.__vector(this.bb_pos + offset) + index * 8) :\n this.bb!.createLong(0, 0);\n }\n\n /**\n * @returns number\n */\n intsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 22);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n strings(index: number): string;\n strings(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n strings(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 24);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n stringsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 24);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.Tensor= obj\n * @returns onnxruntime.experimental.fbs.Tensor\n */\n tensors(index: number, obj?: onnxruntime.experimental.fbs.Tensor): onnxruntime.experimental.fbs.Tensor|null {\n let offset = this.bb!.__offset(this.bb_pos, 26);\n return offset ? (obj || new onnxruntime.experimental.fbs.Tensor())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n tensorsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 26);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.Graph= obj\n * @returns onnxruntime.experimental.fbs.Graph\n */\n graphs(index: number, obj?: onnxruntime.experimental.fbs.Graph): onnxruntime.experimental.fbs.Graph|null {\n let offset = this.bb!.__offset(this.bb_pos, 28);\n return offset ? (obj || new onnxruntime.experimental.fbs.Graph())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n graphsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 28);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startAttribute(builder: flatbuffers.Builder) {\n builder.startObject(13);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nameOffset\n */\n static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset docStringOffset\n */\n static addDocString(builder: flatbuffers.Builder, docStringOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, docStringOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param onnxruntime.experimental.fbs.AttributeType type\n */\n static addType(builder: flatbuffers.Builder, type: onnxruntime.experimental.fbs.AttributeType) {\n builder.addFieldInt32(2, type, onnxruntime.experimental.fbs.AttributeType.UNDEFINED);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number f\n */\n static addF(builder: flatbuffers.Builder, f: number) {\n builder.addFieldFloat32(3, f, 0.0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long i\n */\n static addI(builder: flatbuffers.Builder, i: flatbuffers.Long) {\n builder.addFieldInt64(4, i, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset sOffset\n */\n static addS(builder: flatbuffers.Builder, sOffset: flatbuffers.Offset) {\n builder.addFieldOffset(5, sOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset tOffset\n */\n static addT(builder: flatbuffers.Builder, tOffset: flatbuffers.Offset) {\n builder.addFieldOffset(6, tOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset gOffset\n */\n static addG(builder: flatbuffers.Builder, gOffset: flatbuffers.Offset) {\n builder.addFieldOffset(7, gOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset floatsOffset\n */\n static addFloats(builder: flatbuffers.Builder, floatsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(8, floatsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createFloatsVector(builder: flatbuffers.Builder, data: number[]|Uint8Array): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addFloat32(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startFloatsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset intsOffset\n */\n static addInts(builder: flatbuffers.Builder, intsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(9, intsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createIntsVector(builder: flatbuffers.Builder, data: flatbuffers.Long[]): flatbuffers.Offset {\n builder.startVector(8, data.length, 8);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt64(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startIntsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(8, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset stringsOffset\n */\n static addStrings(builder: flatbuffers.Builder, stringsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(10, stringsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createStringsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startStringsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset tensorsOffset\n */\n static addTensors(builder: flatbuffers.Builder, tensorsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(11, tensorsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createTensorsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startTensorsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset graphsOffset\n */\n static addGraphs(builder: flatbuffers.Builder, graphsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(12, graphsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createGraphsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startGraphsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endAttribute(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createAttribute(\n builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset, docStringOffset: flatbuffers.Offset,\n type: onnxruntime.experimental.fbs.AttributeType, f: number, i: flatbuffers.Long, sOffset: flatbuffers.Offset,\n tOffset: flatbuffers.Offset, gOffset: flatbuffers.Offset, floatsOffset: flatbuffers.Offset,\n intsOffset: flatbuffers.Offset, stringsOffset: flatbuffers.Offset, tensorsOffset: flatbuffers.Offset,\n graphsOffset: flatbuffers.Offset): flatbuffers.Offset {\n Attribute.startAttribute(builder);\n Attribute.addName(builder, nameOffset);\n Attribute.addDocString(builder, docStringOffset);\n Attribute.addType(builder, type);\n Attribute.addF(builder, f);\n Attribute.addI(builder, i);\n Attribute.addS(builder, sOffset);\n Attribute.addT(builder, tOffset);\n Attribute.addG(builder, gOffset);\n Attribute.addFloats(builder, floatsOffset);\n Attribute.addInts(builder, intsOffset);\n Attribute.addStrings(builder, stringsOffset);\n Attribute.addTensors(builder, tensorsOffset);\n Attribute.addGraphs(builder, graphsOffset);\n return Attribute.endAttribute(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Graph {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Graph\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Graph {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Graph= obj\n * @returns Graph\n */\n static getRootAsGraph(bb: flatbuffers.ByteBuffer, obj?: Graph): Graph {\n return (obj || new Graph()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Graph= obj\n * @returns Graph\n */\n static getSizePrefixedRootAsGraph(bb: flatbuffers.ByteBuffer, obj?: Graph): Graph {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Graph()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.Tensor= obj\n * @returns onnxruntime.experimental.fbs.Tensor\n */\n initializers(index: number, obj?: onnxruntime.experimental.fbs.Tensor): onnxruntime.experimental.fbs.Tensor|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new onnxruntime.experimental.fbs.Tensor())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n initializersLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.ValueInfo= obj\n * @returns onnxruntime.experimental.fbs.ValueInfo\n */\n nodeArgs(index: number, obj?: onnxruntime.experimental.fbs.ValueInfo): onnxruntime.experimental.fbs.ValueInfo|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.ValueInfo())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n nodeArgsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.Node= obj\n * @returns onnxruntime.experimental.fbs.Node\n */\n nodes(index: number, obj?: onnxruntime.experimental.fbs.Node): onnxruntime.experimental.fbs.Node|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new onnxruntime.experimental.fbs.Node())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n nodesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns number\n */\n maxNodeIndex(): number {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.NodeEdge= obj\n * @returns onnxruntime.experimental.fbs.NodeEdge\n */\n nodeEdges(index: number, obj?: onnxruntime.experimental.fbs.NodeEdge): onnxruntime.experimental.fbs.NodeEdge|null {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? (obj || new onnxruntime.experimental.fbs.NodeEdge())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n nodeEdgesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n inputs(index: number): string;\n inputs(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n inputs(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n inputsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array\n */\n outputs(index: number): string;\n outputs(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array;\n outputs(index: number, optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n }\n\n /**\n * @returns number\n */\n outputsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.SparseTensor= obj\n * @returns onnxruntime.experimental.fbs.SparseTensor\n */\n sparseInitializers(index: number, obj?: onnxruntime.experimental.fbs.SparseTensor):\n onnxruntime.experimental.fbs.SparseTensor|null {\n let offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? (obj || new onnxruntime.experimental.fbs.SparseTensor())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n sparseInitializersLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startGraph(builder: flatbuffers.Builder) {\n builder.startObject(8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset initializersOffset\n */\n static addInitializers(builder: flatbuffers.Builder, initializersOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, initializersOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createInitializersVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startInitializersVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nodeArgsOffset\n */\n static addNodeArgs(builder: flatbuffers.Builder, nodeArgsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, nodeArgsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createNodeArgsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startNodeArgsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nodesOffset\n */\n static addNodes(builder: flatbuffers.Builder, nodesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, nodesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createNodesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startNodesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number maxNodeIndex\n */\n static addMaxNodeIndex(builder: flatbuffers.Builder, maxNodeIndex: number) {\n builder.addFieldInt32(3, maxNodeIndex, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nodeEdgesOffset\n */\n static addNodeEdges(builder: flatbuffers.Builder, nodeEdgesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(4, nodeEdgesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createNodeEdgesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startNodeEdgesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset inputsOffset\n */\n static addInputs(builder: flatbuffers.Builder, inputsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(5, inputsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createInputsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startInputsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset outputsOffset\n */\n static addOutputs(builder: flatbuffers.Builder, outputsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(6, outputsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createOutputsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startOutputsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset sparseInitializersOffset\n */\n static addSparseInitializers(builder: flatbuffers.Builder, sparseInitializersOffset: flatbuffers.Offset) {\n builder.addFieldOffset(7, sparseInitializersOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createSparseInitializersVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]):\n flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startSparseInitializersVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endGraph(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createGraph(\n builder: flatbuffers.Builder, initializersOffset: flatbuffers.Offset, nodeArgsOffset: flatbuffers.Offset,\n nodesOffset: flatbuffers.Offset, maxNodeIndex: number, nodeEdgesOffset: flatbuffers.Offset,\n inputsOffset: flatbuffers.Offset, outputsOffset: flatbuffers.Offset,\n sparseInitializersOffset: flatbuffers.Offset): flatbuffers.Offset {\n Graph.startGraph(builder);\n Graph.addInitializers(builder, initializersOffset);\n Graph.addNodeArgs(builder, nodeArgsOffset);\n Graph.addNodes(builder, nodesOffset);\n Graph.addMaxNodeIndex(builder, maxNodeIndex);\n Graph.addNodeEdges(builder, nodeEdgesOffset);\n Graph.addInputs(builder, inputsOffset);\n Graph.addOutputs(builder, outputsOffset);\n Graph.addSparseInitializers(builder, sparseInitializersOffset);\n return Graph.endGraph(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class Model {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Model\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Model {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Model= obj\n * @returns Model\n */\n static getRootAsModel(bb: flatbuffers.ByteBuffer, obj?: Model): Model {\n return (obj || new Model()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Model= obj\n * @returns Model\n */\n static getSizePrefixedRootAsModel(bb: flatbuffers.ByteBuffer, obj?: Model): Model {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Model()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns flatbuffers.Long\n */\n irVersion(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.OperatorSetId= obj\n * @returns onnxruntime.experimental.fbs.OperatorSetId\n */\n opsetImport(index: number, obj?: onnxruntime.experimental.fbs.OperatorSetId):\n onnxruntime.experimental.fbs.OperatorSetId|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.OperatorSetId())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n opsetImportLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n producerName(): string|null;\n producerName(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n producerName(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n producerVersion(): string|null;\n producerVersion(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n producerVersion(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n domain(): string|null;\n domain(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n domain(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @returns flatbuffers.Long\n */\n modelVersion(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n docString(): string|null;\n docString(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n docString(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Graph= obj\n * @returns onnxruntime.experimental.fbs.Graph|null\n */\n graph(obj?: onnxruntime.experimental.fbs.Graph): onnxruntime.experimental.fbs.Graph|null {\n let offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? (obj || new onnxruntime.experimental.fbs.Graph())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n graphDocString(): string|null;\n graphDocString(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n graphDocString(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startModel(builder: flatbuffers.Builder) {\n builder.startObject(9);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long irVersion\n */\n static addIrVersion(builder: flatbuffers.Builder, irVersion: flatbuffers.Long) {\n builder.addFieldInt64(0, irVersion, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset opsetImportOffset\n */\n static addOpsetImport(builder: flatbuffers.Builder, opsetImportOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, opsetImportOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createOpsetImportVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startOpsetImportVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset producerNameOffset\n */\n static addProducerName(builder: flatbuffers.Builder, producerNameOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, producerNameOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset producerVersionOffset\n */\n static addProducerVersion(builder: flatbuffers.Builder, producerVersionOffset: flatbuffers.Offset) {\n builder.addFieldOffset(3, producerVersionOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset domainOffset\n */\n static addDomain(builder: flatbuffers.Builder, domainOffset: flatbuffers.Offset) {\n builder.addFieldOffset(4, domainOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long modelVersion\n */\n static addModelVersion(builder: flatbuffers.Builder, modelVersion: flatbuffers.Long) {\n builder.addFieldInt64(5, modelVersion, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset docStringOffset\n */\n static addDocString(builder: flatbuffers.Builder, docStringOffset: flatbuffers.Offset) {\n builder.addFieldOffset(6, docStringOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset graphOffset\n */\n static addGraph(builder: flatbuffers.Builder, graphOffset: flatbuffers.Offset) {\n builder.addFieldOffset(7, graphOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset graphDocStringOffset\n */\n static addGraphDocString(builder: flatbuffers.Builder, graphDocStringOffset: flatbuffers.Offset) {\n builder.addFieldOffset(8, graphDocStringOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endModel(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createModel(\n builder: flatbuffers.Builder, irVersion: flatbuffers.Long, opsetImportOffset: flatbuffers.Offset,\n producerNameOffset: flatbuffers.Offset, producerVersionOffset: flatbuffers.Offset,\n domainOffset: flatbuffers.Offset, modelVersion: flatbuffers.Long, docStringOffset: flatbuffers.Offset,\n graphOffset: flatbuffers.Offset, graphDocStringOffset: flatbuffers.Offset): flatbuffers.Offset {\n Model.startModel(builder);\n Model.addIrVersion(builder, irVersion);\n Model.addOpsetImport(builder, opsetImportOffset);\n Model.addProducerName(builder, producerNameOffset);\n Model.addProducerVersion(builder, producerVersionOffset);\n Model.addDomain(builder, domainOffset);\n Model.addModelVersion(builder, modelVersion);\n Model.addDocString(builder, docStringOffset);\n Model.addGraph(builder, graphOffset);\n Model.addGraphDocString(builder, graphDocStringOffset);\n return Model.endModel(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class KernelCreateInfos {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns KernelCreateInfos\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): KernelCreateInfos {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param KernelCreateInfos= obj\n * @returns KernelCreateInfos\n */\n static getRootAsKernelCreateInfos(bb: flatbuffers.ByteBuffer, obj?: KernelCreateInfos): KernelCreateInfos {\n return (obj || new KernelCreateInfos()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param KernelCreateInfos= obj\n * @returns KernelCreateInfos\n */\n static getSizePrefixedRootAsKernelCreateInfos(bb: flatbuffers.ByteBuffer, obj?: KernelCreateInfos):\n KernelCreateInfos {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new KernelCreateInfos()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param number index\n * @returns number\n */\n nodeIndices(index: number): number|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb!.__vector(this.bb_pos + offset) + index * 4) : 0;\n }\n\n /**\n * @returns number\n */\n nodeIndicesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns Uint32Array\n */\n nodeIndicesArray(): Uint32Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ?\n new Uint32Array(\n this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset),\n this.bb!.__vector_len(this.bb_pos + offset)) :\n null;\n }\n\n /**\n * @param number index\n * @returns flatbuffers.Long\n */\n kernelDefHashes(index: number): flatbuffers.Long|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint64(this.bb!.__vector(this.bb_pos + offset) + index * 8) :\n this.bb!.createLong(0, 0);\n }\n\n /**\n * @returns number\n */\n kernelDefHashesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startKernelCreateInfos(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nodeIndicesOffset\n */\n static addNodeIndices(builder: flatbuffers.Builder, nodeIndicesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, nodeIndicesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createNodeIndicesVector(builder: flatbuffers.Builder, data: number[]|Uint8Array): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt32(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startNodeIndicesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset kernelDefHashesOffset\n */\n static addKernelDefHashes(builder: flatbuffers.Builder, kernelDefHashesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, kernelDefHashesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createKernelDefHashesVector(builder: flatbuffers.Builder, data: flatbuffers.Long[]): flatbuffers.Offset {\n builder.startVector(8, data.length, 8);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt64(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startKernelDefHashesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(8, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endKernelCreateInfos(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createKernelCreateInfos(\n builder: flatbuffers.Builder, nodeIndicesOffset: flatbuffers.Offset,\n kernelDefHashesOffset: flatbuffers.Offset): flatbuffers.Offset {\n KernelCreateInfos.startKernelCreateInfos(builder);\n KernelCreateInfos.addNodeIndices(builder, nodeIndicesOffset);\n KernelCreateInfos.addKernelDefHashes(builder, kernelDefHashesOffset);\n return KernelCreateInfos.endKernelCreateInfos(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class SubGraphSessionState {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns SubGraphSessionState\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): SubGraphSessionState {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SubGraphSessionState= obj\n * @returns SubGraphSessionState\n */\n static getRootAsSubGraphSessionState(bb: flatbuffers.ByteBuffer, obj?: SubGraphSessionState): SubGraphSessionState {\n return (obj || new SubGraphSessionState()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SubGraphSessionState= obj\n * @returns SubGraphSessionState\n */\n static getSizePrefixedRootAsSubGraphSessionState(bb: flatbuffers.ByteBuffer, obj?: SubGraphSessionState):\n SubGraphSessionState {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SubGraphSessionState()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n graphId(): string|null;\n graphId(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n graphId(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.SessionState= obj\n * @returns onnxruntime.experimental.fbs.SessionState|null\n */\n sessionState(obj?: onnxruntime.experimental.fbs.SessionState): onnxruntime.experimental.fbs.SessionState|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.SessionState())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startSubGraphSessionState(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset graphIdOffset\n */\n static addGraphId(builder: flatbuffers.Builder, graphIdOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, graphIdOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset sessionStateOffset\n */\n static addSessionState(builder: flatbuffers.Builder, sessionStateOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, sessionStateOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endSubGraphSessionState(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n builder.requiredField(offset, 4); // graph_id\n return offset;\n }\n\n static createSubGraphSessionState(\n builder: flatbuffers.Builder, graphIdOffset: flatbuffers.Offset,\n sessionStateOffset: flatbuffers.Offset): flatbuffers.Offset {\n SubGraphSessionState.startSubGraphSessionState(builder);\n SubGraphSessionState.addGraphId(builder, graphIdOffset);\n SubGraphSessionState.addSessionState(builder, sessionStateOffset);\n return SubGraphSessionState.endSubGraphSessionState(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class SessionState {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns SessionState\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): SessionState {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SessionState= obj\n * @returns SessionState\n */\n static getRootAsSessionState(bb: flatbuffers.ByteBuffer, obj?: SessionState): SessionState {\n return (obj || new SessionState()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param SessionState= obj\n * @returns SessionState\n */\n static getSizePrefixedRootAsSessionState(bb: flatbuffers.ByteBuffer, obj?: SessionState): SessionState {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SessionState()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param onnxruntime.experimental.fbs.KernelCreateInfos= obj\n * @returns onnxruntime.experimental.fbs.KernelCreateInfos|null\n */\n kernels(obj?: onnxruntime.experimental.fbs.KernelCreateInfos): onnxruntime.experimental.fbs.KernelCreateInfos|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new onnxruntime.experimental.fbs.KernelCreateInfos())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param number index\n * @param onnxruntime.experimental.fbs.SubGraphSessionState= obj\n * @returns onnxruntime.experimental.fbs.SubGraphSessionState\n */\n subGraphSessionStates(index: number, obj?: onnxruntime.experimental.fbs.SubGraphSessionState):\n onnxruntime.experimental.fbs.SubGraphSessionState|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.SubGraphSessionState())\n .__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) :\n null;\n }\n\n /**\n * @returns number\n */\n subGraphSessionStatesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startSessionState(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset kernelsOffset\n */\n static addKernels(builder: flatbuffers.Builder, kernelsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, kernelsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset subGraphSessionStatesOffset\n */\n static addSubGraphSessionStates(builder: flatbuffers.Builder, subGraphSessionStatesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, subGraphSessionStatesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createSubGraphSessionStatesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]):\n flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startSubGraphSessionStatesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endSessionState(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createSessionState(\n builder: flatbuffers.Builder, kernelsOffset: flatbuffers.Offset,\n subGraphSessionStatesOffset: flatbuffers.Offset): flatbuffers.Offset {\n SessionState.startSessionState(builder);\n SessionState.addKernels(builder, kernelsOffset);\n SessionState.addSubGraphSessionStates(builder, subGraphSessionStatesOffset);\n return SessionState.endSessionState(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace onnxruntime.experimental.fbs {\n export class InferenceSession {\n bb: flatbuffers.ByteBuffer|null = null;\n\n bb_pos = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns InferenceSession\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): InferenceSession {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param InferenceSession= obj\n * @returns InferenceSession\n */\n static getRootAsInferenceSession(bb: flatbuffers.ByteBuffer, obj?: InferenceSession): InferenceSession {\n return (obj || new InferenceSession()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param InferenceSession= obj\n * @returns InferenceSession\n */\n static getSizePrefixedRootAsInferenceSession(bb: flatbuffers.ByteBuffer, obj?: InferenceSession): InferenceSession {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new InferenceSession()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @returns boolean\n */\n static bufferHasIdentifier(bb: flatbuffers.ByteBuffer): boolean {\n return bb.__has_identifier('ORTM');\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n ortVersion(): string|null;\n ortVersion(optionalEncoding: flatbuffers.Encoding): string|Uint8Array|null;\n ortVersion(optionalEncoding?: any): string|Uint8Array|null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.Model= obj\n * @returns onnxruntime.experimental.fbs.Model|null\n */\n model(obj?: onnxruntime.experimental.fbs.Model): onnxruntime.experimental.fbs.Model|null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new onnxruntime.experimental.fbs.Model())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param onnxruntime.experimental.fbs.SessionState= obj\n * @returns onnxruntime.experimental.fbs.SessionState|null\n */\n sessionState(obj?: onnxruntime.experimental.fbs.SessionState): onnxruntime.experimental.fbs.SessionState|null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new onnxruntime.experimental.fbs.SessionState())\n .__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) :\n null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startInferenceSession(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset ortVersionOffset\n */\n static addOrtVersion(builder: flatbuffers.Builder, ortVersionOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, ortVersionOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset modelOffset\n */\n static addModel(builder: flatbuffers.Builder, modelOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, modelOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset sessionStateOffset\n */\n static addSessionState(builder: flatbuffers.Builder, sessionStateOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, sessionStateOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endInferenceSession(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishInferenceSessionBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) {\n builder.finish(offset, 'ORTM');\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishSizePrefixedInferenceSessionBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) {\n builder.finish(offset, 'ORTM', true);\n }\n\n static createInferenceSession(\n builder: flatbuffers.Builder, ortVersionOffset: flatbuffers.Offset, modelOffset: flatbuffers.Offset,\n sessionStateOffset: flatbuffers.Offset): flatbuffers.Offset {\n InferenceSession.startInferenceSession(builder);\n InferenceSession.addOrtVersion(builder, ortVersionOffset);\n InferenceSession.addModel(builder, modelOffset);\n InferenceSession.addSessionState(builder, sessionStateOffset);\n return InferenceSession.endInferenceSession(builder);\n }\n }\n}\n","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\n\nvar $protobuf = require(\"protobufjs/minimal\");\n\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n$root.onnx = (function() {\n\n /**\n * Namespace onnx.\n * @exports onnx\n * @namespace\n */\n var onnx = {};\n\n /**\n * Version enum.\n * @name onnx.Version\n * @enum {number}\n * @property {number} _START_VERSION=0 _START_VERSION value\n * @property {number} IR_VERSION_2017_10_10=1 IR_VERSION_2017_10_10 value\n * @property {number} IR_VERSION_2017_10_30=2 IR_VERSION_2017_10_30 value\n * @property {number} IR_VERSION_2017_11_3=3 IR_VERSION_2017_11_3 value\n * @property {number} IR_VERSION_2019_1_22=4 IR_VERSION_2019_1_22 value\n * @property {number} IR_VERSION_2019_3_18=5 IR_VERSION_2019_3_18 value\n * @property {number} IR_VERSION_2019_9_19=6 IR_VERSION_2019_9_19 value\n * @property {number} IR_VERSION_2020_5_8=7 IR_VERSION_2020_5_8 value\n * @property {number} IR_VERSION_2021_7_30=8 IR_VERSION_2021_7_30 value\n * @property {number} IR_VERSION=9 IR_VERSION value\n */\n onnx.Version = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"_START_VERSION\"] = 0;\n values[valuesById[1] = \"IR_VERSION_2017_10_10\"] = 1;\n values[valuesById[2] = \"IR_VERSION_2017_10_30\"] = 2;\n values[valuesById[3] = \"IR_VERSION_2017_11_3\"] = 3;\n values[valuesById[4] = \"IR_VERSION_2019_1_22\"] = 4;\n values[valuesById[5] = \"IR_VERSION_2019_3_18\"] = 5;\n values[valuesById[6] = \"IR_VERSION_2019_9_19\"] = 6;\n values[valuesById[7] = \"IR_VERSION_2020_5_8\"] = 7;\n values[valuesById[8] = \"IR_VERSION_2021_7_30\"] = 8;\n values[valuesById[9] = \"IR_VERSION\"] = 9;\n return values;\n })();\n\n onnx.AttributeProto = (function() {\n\n /**\n * Properties of an AttributeProto.\n * @memberof onnx\n * @interface IAttributeProto\n * @property {string|null} [name] AttributeProto name\n * @property {string|null} [refAttrName] AttributeProto refAttrName\n * @property {string|null} [docString] AttributeProto docString\n * @property {onnx.AttributeProto.AttributeType|null} [type] AttributeProto type\n * @property {number|null} [f] AttributeProto f\n * @property {number|Long|null} [i] AttributeProto i\n * @property {Uint8Array|null} [s] AttributeProto s\n * @property {onnx.ITensorProto|null} [t] AttributeProto t\n * @property {onnx.IGraphProto|null} [g] AttributeProto g\n * @property {onnx.ISparseTensorProto|null} [sparseTensor] AttributeProto sparseTensor\n * @property {onnx.ITypeProto|null} [tp] AttributeProto tp\n * @property {Array.|null} [floats] AttributeProto floats\n * @property {Array.|null} [ints] AttributeProto ints\n * @property {Array.|null} [strings] AttributeProto strings\n * @property {Array.|null} [tensors] AttributeProto tensors\n * @property {Array.|null} [graphs] AttributeProto graphs\n * @property {Array.|null} [sparseTensors] AttributeProto sparseTensors\n * @property {Array.|null} [typeProtos] AttributeProto typeProtos\n */\n\n /**\n * Constructs a new AttributeProto.\n * @memberof onnx\n * @classdesc Represents an AttributeProto.\n * @implements IAttributeProto\n * @constructor\n * @param {onnx.IAttributeProto=} [properties] Properties to set\n */\n function AttributeProto(properties) {\n this.floats = [];\n this.ints = [];\n this.strings = [];\n this.tensors = [];\n this.graphs = [];\n this.sparseTensors = [];\n this.typeProtos = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * AttributeProto name.\n * @member {string} name\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.name = \"\";\n\n /**\n * AttributeProto refAttrName.\n * @member {string} refAttrName\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.refAttrName = \"\";\n\n /**\n * AttributeProto docString.\n * @member {string} docString\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.docString = \"\";\n\n /**\n * AttributeProto type.\n * @member {onnx.AttributeProto.AttributeType} type\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.type = 0;\n\n /**\n * AttributeProto f.\n * @member {number} f\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.f = 0;\n\n /**\n * AttributeProto i.\n * @member {number|Long} i\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.i = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * AttributeProto s.\n * @member {Uint8Array} s\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.s = $util.newBuffer([]);\n\n /**\n * AttributeProto t.\n * @member {onnx.ITensorProto|null|undefined} t\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.t = null;\n\n /**\n * AttributeProto g.\n * @member {onnx.IGraphProto|null|undefined} g\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.g = null;\n\n /**\n * AttributeProto sparseTensor.\n * @member {onnx.ISparseTensorProto|null|undefined} sparseTensor\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.sparseTensor = null;\n\n /**\n * AttributeProto tp.\n * @member {onnx.ITypeProto|null|undefined} tp\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.tp = null;\n\n /**\n * AttributeProto floats.\n * @member {Array.} floats\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.floats = $util.emptyArray;\n\n /**\n * AttributeProto ints.\n * @member {Array.} ints\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.ints = $util.emptyArray;\n\n /**\n * AttributeProto strings.\n * @member {Array.} strings\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.strings = $util.emptyArray;\n\n /**\n * AttributeProto tensors.\n * @member {Array.} tensors\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.tensors = $util.emptyArray;\n\n /**\n * AttributeProto graphs.\n * @member {Array.} graphs\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.graphs = $util.emptyArray;\n\n /**\n * AttributeProto sparseTensors.\n * @member {Array.} sparseTensors\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.sparseTensors = $util.emptyArray;\n\n /**\n * AttributeProto typeProtos.\n * @member {Array.} typeProtos\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.typeProtos = $util.emptyArray;\n\n /**\n * Creates a new AttributeProto instance using the specified properties.\n * @function create\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.IAttributeProto=} [properties] Properties to set\n * @returns {onnx.AttributeProto} AttributeProto instance\n */\n AttributeProto.create = function create(properties) {\n return new AttributeProto(properties);\n };\n\n /**\n * Encodes the specified AttributeProto message. Does not implicitly {@link onnx.AttributeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.IAttributeProto} message AttributeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AttributeProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.f != null && Object.hasOwnProperty.call(message, \"f\"))\n writer.uint32(/* id 2, wireType 5 =*/21).float(message.f);\n if (message.i != null && Object.hasOwnProperty.call(message, \"i\"))\n writer.uint32(/* id 3, wireType 0 =*/24).int64(message.i);\n if (message.s != null && Object.hasOwnProperty.call(message, \"s\"))\n writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.s);\n if (message.t != null && Object.hasOwnProperty.call(message, \"t\"))\n $root.onnx.TensorProto.encode(message.t, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.g != null && Object.hasOwnProperty.call(message, \"g\"))\n $root.onnx.GraphProto.encode(message.g, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.floats != null && message.floats.length) {\n writer.uint32(/* id 7, wireType 2 =*/58).fork();\n for (var i = 0; i < message.floats.length; ++i)\n writer.float(message.floats[i]);\n writer.ldelim();\n }\n if (message.ints != null && message.ints.length) {\n writer.uint32(/* id 8, wireType 2 =*/66).fork();\n for (var i = 0; i < message.ints.length; ++i)\n writer.int64(message.ints[i]);\n writer.ldelim();\n }\n if (message.strings != null && message.strings.length)\n for (var i = 0; i < message.strings.length; ++i)\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.strings[i]);\n if (message.tensors != null && message.tensors.length)\n for (var i = 0; i < message.tensors.length; ++i)\n $root.onnx.TensorProto.encode(message.tensors[i], writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.graphs != null && message.graphs.length)\n for (var i = 0; i < message.graphs.length; ++i)\n $root.onnx.GraphProto.encode(message.graphs[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 13, wireType 2 =*/106).string(message.docString);\n if (message.tp != null && Object.hasOwnProperty.call(message, \"tp\"))\n $root.onnx.TypeProto.encode(message.tp, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.typeProtos != null && message.typeProtos.length)\n for (var i = 0; i < message.typeProtos.length; ++i)\n $root.onnx.TypeProto.encode(message.typeProtos[i], writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 20, wireType 0 =*/160).int32(message.type);\n if (message.refAttrName != null && Object.hasOwnProperty.call(message, \"refAttrName\"))\n writer.uint32(/* id 21, wireType 2 =*/170).string(message.refAttrName);\n if (message.sparseTensor != null && Object.hasOwnProperty.call(message, \"sparseTensor\"))\n $root.onnx.SparseTensorProto.encode(message.sparseTensor, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();\n if (message.sparseTensors != null && message.sparseTensors.length)\n for (var i = 0; i < message.sparseTensors.length; ++i)\n $root.onnx.SparseTensorProto.encode(message.sparseTensors[i], writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified AttributeProto message, length delimited. Does not implicitly {@link onnx.AttributeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.IAttributeProto} message AttributeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AttributeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an AttributeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.AttributeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.AttributeProto} AttributeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AttributeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.AttributeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 21: {\n message.refAttrName = reader.string();\n break;\n }\n case 13: {\n message.docString = reader.string();\n break;\n }\n case 20: {\n message.type = reader.int32();\n break;\n }\n case 2: {\n message.f = reader.float();\n break;\n }\n case 3: {\n message.i = reader.int64();\n break;\n }\n case 4: {\n message.s = reader.bytes();\n break;\n }\n case 5: {\n message.t = $root.onnx.TensorProto.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.g = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 22: {\n message.sparseTensor = $root.onnx.SparseTensorProto.decode(reader, reader.uint32());\n break;\n }\n case 14: {\n message.tp = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n if (!(message.floats && message.floats.length))\n message.floats = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.floats.push(reader.float());\n } else\n message.floats.push(reader.float());\n break;\n }\n case 8: {\n if (!(message.ints && message.ints.length))\n message.ints = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.ints.push(reader.int64());\n } else\n message.ints.push(reader.int64());\n break;\n }\n case 9: {\n if (!(message.strings && message.strings.length))\n message.strings = [];\n message.strings.push(reader.bytes());\n break;\n }\n case 10: {\n if (!(message.tensors && message.tensors.length))\n message.tensors = [];\n message.tensors.push($root.onnx.TensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 11: {\n if (!(message.graphs && message.graphs.length))\n message.graphs = [];\n message.graphs.push($root.onnx.GraphProto.decode(reader, reader.uint32()));\n break;\n }\n case 23: {\n if (!(message.sparseTensors && message.sparseTensors.length))\n message.sparseTensors = [];\n message.sparseTensors.push($root.onnx.SparseTensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 15: {\n if (!(message.typeProtos && message.typeProtos.length))\n message.typeProtos = [];\n message.typeProtos.push($root.onnx.TypeProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an AttributeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.AttributeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.AttributeProto} AttributeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AttributeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an AttributeProto message.\n * @function verify\n * @memberof onnx.AttributeProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n AttributeProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.refAttrName != null && message.hasOwnProperty(\"refAttrName\"))\n if (!$util.isString(message.refAttrName))\n return \"refAttrName: string expected\";\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 11:\n case 13:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 12:\n case 14:\n break;\n }\n if (message.f != null && message.hasOwnProperty(\"f\"))\n if (typeof message.f !== \"number\")\n return \"f: number expected\";\n if (message.i != null && message.hasOwnProperty(\"i\"))\n if (!$util.isInteger(message.i) && !(message.i && $util.isInteger(message.i.low) && $util.isInteger(message.i.high)))\n return \"i: integer|Long expected\";\n if (message.s != null && message.hasOwnProperty(\"s\"))\n if (!(message.s && typeof message.s.length === \"number\" || $util.isString(message.s)))\n return \"s: buffer expected\";\n if (message.t != null && message.hasOwnProperty(\"t\")) {\n var error = $root.onnx.TensorProto.verify(message.t);\n if (error)\n return \"t.\" + error;\n }\n if (message.g != null && message.hasOwnProperty(\"g\")) {\n var error = $root.onnx.GraphProto.verify(message.g);\n if (error)\n return \"g.\" + error;\n }\n if (message.sparseTensor != null && message.hasOwnProperty(\"sparseTensor\")) {\n var error = $root.onnx.SparseTensorProto.verify(message.sparseTensor);\n if (error)\n return \"sparseTensor.\" + error;\n }\n if (message.tp != null && message.hasOwnProperty(\"tp\")) {\n var error = $root.onnx.TypeProto.verify(message.tp);\n if (error)\n return \"tp.\" + error;\n }\n if (message.floats != null && message.hasOwnProperty(\"floats\")) {\n if (!Array.isArray(message.floats))\n return \"floats: array expected\";\n for (var i = 0; i < message.floats.length; ++i)\n if (typeof message.floats[i] !== \"number\")\n return \"floats: number[] expected\";\n }\n if (message.ints != null && message.hasOwnProperty(\"ints\")) {\n if (!Array.isArray(message.ints))\n return \"ints: array expected\";\n for (var i = 0; i < message.ints.length; ++i)\n if (!$util.isInteger(message.ints[i]) && !(message.ints[i] && $util.isInteger(message.ints[i].low) && $util.isInteger(message.ints[i].high)))\n return \"ints: integer|Long[] expected\";\n }\n if (message.strings != null && message.hasOwnProperty(\"strings\")) {\n if (!Array.isArray(message.strings))\n return \"strings: array expected\";\n for (var i = 0; i < message.strings.length; ++i)\n if (!(message.strings[i] && typeof message.strings[i].length === \"number\" || $util.isString(message.strings[i])))\n return \"strings: buffer[] expected\";\n }\n if (message.tensors != null && message.hasOwnProperty(\"tensors\")) {\n if (!Array.isArray(message.tensors))\n return \"tensors: array expected\";\n for (var i = 0; i < message.tensors.length; ++i) {\n var error = $root.onnx.TensorProto.verify(message.tensors[i]);\n if (error)\n return \"tensors.\" + error;\n }\n }\n if (message.graphs != null && message.hasOwnProperty(\"graphs\")) {\n if (!Array.isArray(message.graphs))\n return \"graphs: array expected\";\n for (var i = 0; i < message.graphs.length; ++i) {\n var error = $root.onnx.GraphProto.verify(message.graphs[i]);\n if (error)\n return \"graphs.\" + error;\n }\n }\n if (message.sparseTensors != null && message.hasOwnProperty(\"sparseTensors\")) {\n if (!Array.isArray(message.sparseTensors))\n return \"sparseTensors: array expected\";\n for (var i = 0; i < message.sparseTensors.length; ++i) {\n var error = $root.onnx.SparseTensorProto.verify(message.sparseTensors[i]);\n if (error)\n return \"sparseTensors.\" + error;\n }\n }\n if (message.typeProtos != null && message.hasOwnProperty(\"typeProtos\")) {\n if (!Array.isArray(message.typeProtos))\n return \"typeProtos: array expected\";\n for (var i = 0; i < message.typeProtos.length; ++i) {\n var error = $root.onnx.TypeProto.verify(message.typeProtos[i]);\n if (error)\n return \"typeProtos.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an AttributeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.AttributeProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.AttributeProto} AttributeProto\n */\n AttributeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.AttributeProto)\n return object;\n var message = new $root.onnx.AttributeProto();\n if (object.name != null)\n message.name = String(object.name);\n if (object.refAttrName != null)\n message.refAttrName = String(object.refAttrName);\n if (object.docString != null)\n message.docString = String(object.docString);\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"UNDEFINED\":\n case 0:\n message.type = 0;\n break;\n case \"FLOAT\":\n case 1:\n message.type = 1;\n break;\n case \"INT\":\n case 2:\n message.type = 2;\n break;\n case \"STRING\":\n case 3:\n message.type = 3;\n break;\n case \"TENSOR\":\n case 4:\n message.type = 4;\n break;\n case \"GRAPH\":\n case 5:\n message.type = 5;\n break;\n case \"SPARSE_TENSOR\":\n case 11:\n message.type = 11;\n break;\n case \"TYPE_PROTO\":\n case 13:\n message.type = 13;\n break;\n case \"FLOATS\":\n case 6:\n message.type = 6;\n break;\n case \"INTS\":\n case 7:\n message.type = 7;\n break;\n case \"STRINGS\":\n case 8:\n message.type = 8;\n break;\n case \"TENSORS\":\n case 9:\n message.type = 9;\n break;\n case \"GRAPHS\":\n case 10:\n message.type = 10;\n break;\n case \"SPARSE_TENSORS\":\n case 12:\n message.type = 12;\n break;\n case \"TYPE_PROTOS\":\n case 14:\n message.type = 14;\n break;\n }\n if (object.f != null)\n message.f = Number(object.f);\n if (object.i != null)\n if ($util.Long)\n (message.i = $util.Long.fromValue(object.i)).unsigned = false;\n else if (typeof object.i === \"string\")\n message.i = parseInt(object.i, 10);\n else if (typeof object.i === \"number\")\n message.i = object.i;\n else if (typeof object.i === \"object\")\n message.i = new $util.LongBits(object.i.low >>> 0, object.i.high >>> 0).toNumber();\n if (object.s != null)\n if (typeof object.s === \"string\")\n $util.base64.decode(object.s, message.s = $util.newBuffer($util.base64.length(object.s)), 0);\n else if (object.s.length >= 0)\n message.s = object.s;\n if (object.t != null) {\n if (typeof object.t !== \"object\")\n throw TypeError(\".onnx.AttributeProto.t: object expected\");\n message.t = $root.onnx.TensorProto.fromObject(object.t);\n }\n if (object.g != null) {\n if (typeof object.g !== \"object\")\n throw TypeError(\".onnx.AttributeProto.g: object expected\");\n message.g = $root.onnx.GraphProto.fromObject(object.g);\n }\n if (object.sparseTensor != null) {\n if (typeof object.sparseTensor !== \"object\")\n throw TypeError(\".onnx.AttributeProto.sparseTensor: object expected\");\n message.sparseTensor = $root.onnx.SparseTensorProto.fromObject(object.sparseTensor);\n }\n if (object.tp != null) {\n if (typeof object.tp !== \"object\")\n throw TypeError(\".onnx.AttributeProto.tp: object expected\");\n message.tp = $root.onnx.TypeProto.fromObject(object.tp);\n }\n if (object.floats) {\n if (!Array.isArray(object.floats))\n throw TypeError(\".onnx.AttributeProto.floats: array expected\");\n message.floats = [];\n for (var i = 0; i < object.floats.length; ++i)\n message.floats[i] = Number(object.floats[i]);\n }\n if (object.ints) {\n if (!Array.isArray(object.ints))\n throw TypeError(\".onnx.AttributeProto.ints: array expected\");\n message.ints = [];\n for (var i = 0; i < object.ints.length; ++i)\n if ($util.Long)\n (message.ints[i] = $util.Long.fromValue(object.ints[i])).unsigned = false;\n else if (typeof object.ints[i] === \"string\")\n message.ints[i] = parseInt(object.ints[i], 10);\n else if (typeof object.ints[i] === \"number\")\n message.ints[i] = object.ints[i];\n else if (typeof object.ints[i] === \"object\")\n message.ints[i] = new $util.LongBits(object.ints[i].low >>> 0, object.ints[i].high >>> 0).toNumber();\n }\n if (object.strings) {\n if (!Array.isArray(object.strings))\n throw TypeError(\".onnx.AttributeProto.strings: array expected\");\n message.strings = [];\n for (var i = 0; i < object.strings.length; ++i)\n if (typeof object.strings[i] === \"string\")\n $util.base64.decode(object.strings[i], message.strings[i] = $util.newBuffer($util.base64.length(object.strings[i])), 0);\n else if (object.strings[i].length >= 0)\n message.strings[i] = object.strings[i];\n }\n if (object.tensors) {\n if (!Array.isArray(object.tensors))\n throw TypeError(\".onnx.AttributeProto.tensors: array expected\");\n message.tensors = [];\n for (var i = 0; i < object.tensors.length; ++i) {\n if (typeof object.tensors[i] !== \"object\")\n throw TypeError(\".onnx.AttributeProto.tensors: object expected\");\n message.tensors[i] = $root.onnx.TensorProto.fromObject(object.tensors[i]);\n }\n }\n if (object.graphs) {\n if (!Array.isArray(object.graphs))\n throw TypeError(\".onnx.AttributeProto.graphs: array expected\");\n message.graphs = [];\n for (var i = 0; i < object.graphs.length; ++i) {\n if (typeof object.graphs[i] !== \"object\")\n throw TypeError(\".onnx.AttributeProto.graphs: object expected\");\n message.graphs[i] = $root.onnx.GraphProto.fromObject(object.graphs[i]);\n }\n }\n if (object.sparseTensors) {\n if (!Array.isArray(object.sparseTensors))\n throw TypeError(\".onnx.AttributeProto.sparseTensors: array expected\");\n message.sparseTensors = [];\n for (var i = 0; i < object.sparseTensors.length; ++i) {\n if (typeof object.sparseTensors[i] !== \"object\")\n throw TypeError(\".onnx.AttributeProto.sparseTensors: object expected\");\n message.sparseTensors[i] = $root.onnx.SparseTensorProto.fromObject(object.sparseTensors[i]);\n }\n }\n if (object.typeProtos) {\n if (!Array.isArray(object.typeProtos))\n throw TypeError(\".onnx.AttributeProto.typeProtos: array expected\");\n message.typeProtos = [];\n for (var i = 0; i < object.typeProtos.length; ++i) {\n if (typeof object.typeProtos[i] !== \"object\")\n throw TypeError(\".onnx.AttributeProto.typeProtos: object expected\");\n message.typeProtos[i] = $root.onnx.TypeProto.fromObject(object.typeProtos[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an AttributeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.AttributeProto} message AttributeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n AttributeProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.floats = [];\n object.ints = [];\n object.strings = [];\n object.tensors = [];\n object.graphs = [];\n object.typeProtos = [];\n object.sparseTensors = [];\n }\n if (options.defaults) {\n object.name = \"\";\n object.f = 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.i = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.i = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.s = \"\";\n else {\n object.s = [];\n if (options.bytes !== Array)\n object.s = $util.newBuffer(object.s);\n }\n object.t = null;\n object.g = null;\n object.docString = \"\";\n object.tp = null;\n object.type = options.enums === String ? \"UNDEFINED\" : 0;\n object.refAttrName = \"\";\n object.sparseTensor = null;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.f != null && message.hasOwnProperty(\"f\"))\n object.f = options.json && !isFinite(message.f) ? String(message.f) : message.f;\n if (message.i != null && message.hasOwnProperty(\"i\"))\n if (typeof message.i === \"number\")\n object.i = options.longs === String ? String(message.i) : message.i;\n else\n object.i = options.longs === String ? $util.Long.prototype.toString.call(message.i) : options.longs === Number ? new $util.LongBits(message.i.low >>> 0, message.i.high >>> 0).toNumber() : message.i;\n if (message.s != null && message.hasOwnProperty(\"s\"))\n object.s = options.bytes === String ? $util.base64.encode(message.s, 0, message.s.length) : options.bytes === Array ? Array.prototype.slice.call(message.s) : message.s;\n if (message.t != null && message.hasOwnProperty(\"t\"))\n object.t = $root.onnx.TensorProto.toObject(message.t, options);\n if (message.g != null && message.hasOwnProperty(\"g\"))\n object.g = $root.onnx.GraphProto.toObject(message.g, options);\n if (message.floats && message.floats.length) {\n object.floats = [];\n for (var j = 0; j < message.floats.length; ++j)\n object.floats[j] = options.json && !isFinite(message.floats[j]) ? String(message.floats[j]) : message.floats[j];\n }\n if (message.ints && message.ints.length) {\n object.ints = [];\n for (var j = 0; j < message.ints.length; ++j)\n if (typeof message.ints[j] === \"number\")\n object.ints[j] = options.longs === String ? String(message.ints[j]) : message.ints[j];\n else\n object.ints[j] = options.longs === String ? $util.Long.prototype.toString.call(message.ints[j]) : options.longs === Number ? new $util.LongBits(message.ints[j].low >>> 0, message.ints[j].high >>> 0).toNumber() : message.ints[j];\n }\n if (message.strings && message.strings.length) {\n object.strings = [];\n for (var j = 0; j < message.strings.length; ++j)\n object.strings[j] = options.bytes === String ? $util.base64.encode(message.strings[j], 0, message.strings[j].length) : options.bytes === Array ? Array.prototype.slice.call(message.strings[j]) : message.strings[j];\n }\n if (message.tensors && message.tensors.length) {\n object.tensors = [];\n for (var j = 0; j < message.tensors.length; ++j)\n object.tensors[j] = $root.onnx.TensorProto.toObject(message.tensors[j], options);\n }\n if (message.graphs && message.graphs.length) {\n object.graphs = [];\n for (var j = 0; j < message.graphs.length; ++j)\n object.graphs[j] = $root.onnx.GraphProto.toObject(message.graphs[j], options);\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n if (message.tp != null && message.hasOwnProperty(\"tp\"))\n object.tp = $root.onnx.TypeProto.toObject(message.tp, options);\n if (message.typeProtos && message.typeProtos.length) {\n object.typeProtos = [];\n for (var j = 0; j < message.typeProtos.length; ++j)\n object.typeProtos[j] = $root.onnx.TypeProto.toObject(message.typeProtos[j], options);\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.onnx.AttributeProto.AttributeType[message.type] === undefined ? message.type : $root.onnx.AttributeProto.AttributeType[message.type] : message.type;\n if (message.refAttrName != null && message.hasOwnProperty(\"refAttrName\"))\n object.refAttrName = message.refAttrName;\n if (message.sparseTensor != null && message.hasOwnProperty(\"sparseTensor\"))\n object.sparseTensor = $root.onnx.SparseTensorProto.toObject(message.sparseTensor, options);\n if (message.sparseTensors && message.sparseTensors.length) {\n object.sparseTensors = [];\n for (var j = 0; j < message.sparseTensors.length; ++j)\n object.sparseTensors[j] = $root.onnx.SparseTensorProto.toObject(message.sparseTensors[j], options);\n }\n return object;\n };\n\n /**\n * Converts this AttributeProto to JSON.\n * @function toJSON\n * @memberof onnx.AttributeProto\n * @instance\n * @returns {Object.} JSON object\n */\n AttributeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for AttributeProto\n * @function getTypeUrl\n * @memberof onnx.AttributeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n AttributeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.AttributeProto\";\n };\n\n /**\n * AttributeType enum.\n * @name onnx.AttributeProto.AttributeType\n * @enum {number}\n * @property {number} UNDEFINED=0 UNDEFINED value\n * @property {number} FLOAT=1 FLOAT value\n * @property {number} INT=2 INT value\n * @property {number} STRING=3 STRING value\n * @property {number} TENSOR=4 TENSOR value\n * @property {number} GRAPH=5 GRAPH value\n * @property {number} SPARSE_TENSOR=11 SPARSE_TENSOR value\n * @property {number} TYPE_PROTO=13 TYPE_PROTO value\n * @property {number} FLOATS=6 FLOATS value\n * @property {number} INTS=7 INTS value\n * @property {number} STRINGS=8 STRINGS value\n * @property {number} TENSORS=9 TENSORS value\n * @property {number} GRAPHS=10 GRAPHS value\n * @property {number} SPARSE_TENSORS=12 SPARSE_TENSORS value\n * @property {number} TYPE_PROTOS=14 TYPE_PROTOS value\n */\n AttributeProto.AttributeType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"UNDEFINED\"] = 0;\n values[valuesById[1] = \"FLOAT\"] = 1;\n values[valuesById[2] = \"INT\"] = 2;\n values[valuesById[3] = \"STRING\"] = 3;\n values[valuesById[4] = \"TENSOR\"] = 4;\n values[valuesById[5] = \"GRAPH\"] = 5;\n values[valuesById[11] = \"SPARSE_TENSOR\"] = 11;\n values[valuesById[13] = \"TYPE_PROTO\"] = 13;\n values[valuesById[6] = \"FLOATS\"] = 6;\n values[valuesById[7] = \"INTS\"] = 7;\n values[valuesById[8] = \"STRINGS\"] = 8;\n values[valuesById[9] = \"TENSORS\"] = 9;\n values[valuesById[10] = \"GRAPHS\"] = 10;\n values[valuesById[12] = \"SPARSE_TENSORS\"] = 12;\n values[valuesById[14] = \"TYPE_PROTOS\"] = 14;\n return values;\n })();\n\n return AttributeProto;\n })();\n\n onnx.ValueInfoProto = (function() {\n\n /**\n * Properties of a ValueInfoProto.\n * @memberof onnx\n * @interface IValueInfoProto\n * @property {string|null} [name] ValueInfoProto name\n * @property {onnx.ITypeProto|null} [type] ValueInfoProto type\n * @property {string|null} [docString] ValueInfoProto docString\n */\n\n /**\n * Constructs a new ValueInfoProto.\n * @memberof onnx\n * @classdesc Represents a ValueInfoProto.\n * @implements IValueInfoProto\n * @constructor\n * @param {onnx.IValueInfoProto=} [properties] Properties to set\n */\n function ValueInfoProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ValueInfoProto name.\n * @member {string} name\n * @memberof onnx.ValueInfoProto\n * @instance\n */\n ValueInfoProto.prototype.name = \"\";\n\n /**\n * ValueInfoProto type.\n * @member {onnx.ITypeProto|null|undefined} type\n * @memberof onnx.ValueInfoProto\n * @instance\n */\n ValueInfoProto.prototype.type = null;\n\n /**\n * ValueInfoProto docString.\n * @member {string} docString\n * @memberof onnx.ValueInfoProto\n * @instance\n */\n ValueInfoProto.prototype.docString = \"\";\n\n /**\n * Creates a new ValueInfoProto instance using the specified properties.\n * @function create\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.IValueInfoProto=} [properties] Properties to set\n * @returns {onnx.ValueInfoProto} ValueInfoProto instance\n */\n ValueInfoProto.create = function create(properties) {\n return new ValueInfoProto(properties);\n };\n\n /**\n * Encodes the specified ValueInfoProto message. Does not implicitly {@link onnx.ValueInfoProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.IValueInfoProto} message ValueInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueInfoProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n $root.onnx.TypeProto.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.docString);\n return writer;\n };\n\n /**\n * Encodes the specified ValueInfoProto message, length delimited. Does not implicitly {@link onnx.ValueInfoProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.IValueInfoProto} message ValueInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueInfoProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a ValueInfoProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.ValueInfoProto} ValueInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueInfoProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.ValueInfoProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 2: {\n message.type = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n message.docString = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a ValueInfoProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.ValueInfoProto} ValueInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueInfoProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a ValueInfoProto message.\n * @function verify\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ValueInfoProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.type != null && message.hasOwnProperty(\"type\")) {\n var error = $root.onnx.TypeProto.verify(message.type);\n if (error)\n return \"type.\" + error;\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n return null;\n };\n\n /**\n * Creates a ValueInfoProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.ValueInfoProto} ValueInfoProto\n */\n ValueInfoProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.ValueInfoProto)\n return object;\n var message = new $root.onnx.ValueInfoProto();\n if (object.name != null)\n message.name = String(object.name);\n if (object.type != null) {\n if (typeof object.type !== \"object\")\n throw TypeError(\".onnx.ValueInfoProto.type: object expected\");\n message.type = $root.onnx.TypeProto.fromObject(object.type);\n }\n if (object.docString != null)\n message.docString = String(object.docString);\n return message;\n };\n\n /**\n * Creates a plain object from a ValueInfoProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.ValueInfoProto} message ValueInfoProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ValueInfoProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.name = \"\";\n object.type = null;\n object.docString = \"\";\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = $root.onnx.TypeProto.toObject(message.type, options);\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n return object;\n };\n\n /**\n * Converts this ValueInfoProto to JSON.\n * @function toJSON\n * @memberof onnx.ValueInfoProto\n * @instance\n * @returns {Object.} JSON object\n */\n ValueInfoProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for ValueInfoProto\n * @function getTypeUrl\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ValueInfoProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.ValueInfoProto\";\n };\n\n return ValueInfoProto;\n })();\n\n onnx.NodeProto = (function() {\n\n /**\n * Properties of a NodeProto.\n * @memberof onnx\n * @interface INodeProto\n * @property {Array.|null} [input] NodeProto input\n * @property {Array.|null} [output] NodeProto output\n * @property {string|null} [name] NodeProto name\n * @property {string|null} [opType] NodeProto opType\n * @property {string|null} [domain] NodeProto domain\n * @property {Array.|null} [attribute] NodeProto attribute\n * @property {string|null} [docString] NodeProto docString\n */\n\n /**\n * Constructs a new NodeProto.\n * @memberof onnx\n * @classdesc Represents a NodeProto.\n * @implements INodeProto\n * @constructor\n * @param {onnx.INodeProto=} [properties] Properties to set\n */\n function NodeProto(properties) {\n this.input = [];\n this.output = [];\n this.attribute = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * NodeProto input.\n * @member {Array.} input\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.input = $util.emptyArray;\n\n /**\n * NodeProto output.\n * @member {Array.} output\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.output = $util.emptyArray;\n\n /**\n * NodeProto name.\n * @member {string} name\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.name = \"\";\n\n /**\n * NodeProto opType.\n * @member {string} opType\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.opType = \"\";\n\n /**\n * NodeProto domain.\n * @member {string} domain\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.domain = \"\";\n\n /**\n * NodeProto attribute.\n * @member {Array.} attribute\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.attribute = $util.emptyArray;\n\n /**\n * NodeProto docString.\n * @member {string} docString\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.docString = \"\";\n\n /**\n * Creates a new NodeProto instance using the specified properties.\n * @function create\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.INodeProto=} [properties] Properties to set\n * @returns {onnx.NodeProto} NodeProto instance\n */\n NodeProto.create = function create(properties) {\n return new NodeProto(properties);\n };\n\n /**\n * Encodes the specified NodeProto message. Does not implicitly {@link onnx.NodeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.INodeProto} message NodeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NodeProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.input != null && message.input.length)\n for (var i = 0; i < message.input.length; ++i)\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.input[i]);\n if (message.output != null && message.output.length)\n for (var i = 0; i < message.output.length; ++i)\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.output[i]);\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.name);\n if (message.opType != null && Object.hasOwnProperty.call(message, \"opType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.opType);\n if (message.attribute != null && message.attribute.length)\n for (var i = 0; i < message.attribute.length; ++i)\n $root.onnx.AttributeProto.encode(message.attribute[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.docString);\n if (message.domain != null && Object.hasOwnProperty.call(message, \"domain\"))\n writer.uint32(/* id 7, wireType 2 =*/58).string(message.domain);\n return writer;\n };\n\n /**\n * Encodes the specified NodeProto message, length delimited. Does not implicitly {@link onnx.NodeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.INodeProto} message NodeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NodeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a NodeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.NodeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.NodeProto} NodeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NodeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.NodeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.input && message.input.length))\n message.input = [];\n message.input.push(reader.string());\n break;\n }\n case 2: {\n if (!(message.output && message.output.length))\n message.output = [];\n message.output.push(reader.string());\n break;\n }\n case 3: {\n message.name = reader.string();\n break;\n }\n case 4: {\n message.opType = reader.string();\n break;\n }\n case 7: {\n message.domain = reader.string();\n break;\n }\n case 5: {\n if (!(message.attribute && message.attribute.length))\n message.attribute = [];\n message.attribute.push($root.onnx.AttributeProto.decode(reader, reader.uint32()));\n break;\n }\n case 6: {\n message.docString = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a NodeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.NodeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.NodeProto} NodeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NodeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a NodeProto message.\n * @function verify\n * @memberof onnx.NodeProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n NodeProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.input != null && message.hasOwnProperty(\"input\")) {\n if (!Array.isArray(message.input))\n return \"input: array expected\";\n for (var i = 0; i < message.input.length; ++i)\n if (!$util.isString(message.input[i]))\n return \"input: string[] expected\";\n }\n if (message.output != null && message.hasOwnProperty(\"output\")) {\n if (!Array.isArray(message.output))\n return \"output: array expected\";\n for (var i = 0; i < message.output.length; ++i)\n if (!$util.isString(message.output[i]))\n return \"output: string[] expected\";\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.opType != null && message.hasOwnProperty(\"opType\"))\n if (!$util.isString(message.opType))\n return \"opType: string expected\";\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n if (!$util.isString(message.domain))\n return \"domain: string expected\";\n if (message.attribute != null && message.hasOwnProperty(\"attribute\")) {\n if (!Array.isArray(message.attribute))\n return \"attribute: array expected\";\n for (var i = 0; i < message.attribute.length; ++i) {\n var error = $root.onnx.AttributeProto.verify(message.attribute[i]);\n if (error)\n return \"attribute.\" + error;\n }\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n return null;\n };\n\n /**\n * Creates a NodeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.NodeProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.NodeProto} NodeProto\n */\n NodeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.NodeProto)\n return object;\n var message = new $root.onnx.NodeProto();\n if (object.input) {\n if (!Array.isArray(object.input))\n throw TypeError(\".onnx.NodeProto.input: array expected\");\n message.input = [];\n for (var i = 0; i < object.input.length; ++i)\n message.input[i] = String(object.input[i]);\n }\n if (object.output) {\n if (!Array.isArray(object.output))\n throw TypeError(\".onnx.NodeProto.output: array expected\");\n message.output = [];\n for (var i = 0; i < object.output.length; ++i)\n message.output[i] = String(object.output[i]);\n }\n if (object.name != null)\n message.name = String(object.name);\n if (object.opType != null)\n message.opType = String(object.opType);\n if (object.domain != null)\n message.domain = String(object.domain);\n if (object.attribute) {\n if (!Array.isArray(object.attribute))\n throw TypeError(\".onnx.NodeProto.attribute: array expected\");\n message.attribute = [];\n for (var i = 0; i < object.attribute.length; ++i) {\n if (typeof object.attribute[i] !== \"object\")\n throw TypeError(\".onnx.NodeProto.attribute: object expected\");\n message.attribute[i] = $root.onnx.AttributeProto.fromObject(object.attribute[i]);\n }\n }\n if (object.docString != null)\n message.docString = String(object.docString);\n return message;\n };\n\n /**\n * Creates a plain object from a NodeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.NodeProto} message NodeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n NodeProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.input = [];\n object.output = [];\n object.attribute = [];\n }\n if (options.defaults) {\n object.name = \"\";\n object.opType = \"\";\n object.docString = \"\";\n object.domain = \"\";\n }\n if (message.input && message.input.length) {\n object.input = [];\n for (var j = 0; j < message.input.length; ++j)\n object.input[j] = message.input[j];\n }\n if (message.output && message.output.length) {\n object.output = [];\n for (var j = 0; j < message.output.length; ++j)\n object.output[j] = message.output[j];\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.opType != null && message.hasOwnProperty(\"opType\"))\n object.opType = message.opType;\n if (message.attribute && message.attribute.length) {\n object.attribute = [];\n for (var j = 0; j < message.attribute.length; ++j)\n object.attribute[j] = $root.onnx.AttributeProto.toObject(message.attribute[j], options);\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n object.domain = message.domain;\n return object;\n };\n\n /**\n * Converts this NodeProto to JSON.\n * @function toJSON\n * @memberof onnx.NodeProto\n * @instance\n * @returns {Object.} JSON object\n */\n NodeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for NodeProto\n * @function getTypeUrl\n * @memberof onnx.NodeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n NodeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.NodeProto\";\n };\n\n return NodeProto;\n })();\n\n onnx.TrainingInfoProto = (function() {\n\n /**\n * Properties of a TrainingInfoProto.\n * @memberof onnx\n * @interface ITrainingInfoProto\n * @property {onnx.IGraphProto|null} [initialization] TrainingInfoProto initialization\n * @property {onnx.IGraphProto|null} [algorithm] TrainingInfoProto algorithm\n * @property {Array.|null} [initializationBinding] TrainingInfoProto initializationBinding\n * @property {Array.|null} [updateBinding] TrainingInfoProto updateBinding\n */\n\n /**\n * Constructs a new TrainingInfoProto.\n * @memberof onnx\n * @classdesc Represents a TrainingInfoProto.\n * @implements ITrainingInfoProto\n * @constructor\n * @param {onnx.ITrainingInfoProto=} [properties] Properties to set\n */\n function TrainingInfoProto(properties) {\n this.initializationBinding = [];\n this.updateBinding = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TrainingInfoProto initialization.\n * @member {onnx.IGraphProto|null|undefined} initialization\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.initialization = null;\n\n /**\n * TrainingInfoProto algorithm.\n * @member {onnx.IGraphProto|null|undefined} algorithm\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.algorithm = null;\n\n /**\n * TrainingInfoProto initializationBinding.\n * @member {Array.} initializationBinding\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.initializationBinding = $util.emptyArray;\n\n /**\n * TrainingInfoProto updateBinding.\n * @member {Array.} updateBinding\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.updateBinding = $util.emptyArray;\n\n /**\n * Creates a new TrainingInfoProto instance using the specified properties.\n * @function create\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.ITrainingInfoProto=} [properties] Properties to set\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto instance\n */\n TrainingInfoProto.create = function create(properties) {\n return new TrainingInfoProto(properties);\n };\n\n /**\n * Encodes the specified TrainingInfoProto message. Does not implicitly {@link onnx.TrainingInfoProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.ITrainingInfoProto} message TrainingInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TrainingInfoProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.initialization != null && Object.hasOwnProperty.call(message, \"initialization\"))\n $root.onnx.GraphProto.encode(message.initialization, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.algorithm != null && Object.hasOwnProperty.call(message, \"algorithm\"))\n $root.onnx.GraphProto.encode(message.algorithm, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.initializationBinding != null && message.initializationBinding.length)\n for (var i = 0; i < message.initializationBinding.length; ++i)\n $root.onnx.StringStringEntryProto.encode(message.initializationBinding[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.updateBinding != null && message.updateBinding.length)\n for (var i = 0; i < message.updateBinding.length; ++i)\n $root.onnx.StringStringEntryProto.encode(message.updateBinding[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TrainingInfoProto message, length delimited. Does not implicitly {@link onnx.TrainingInfoProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.ITrainingInfoProto} message TrainingInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TrainingInfoProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TrainingInfoProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TrainingInfoProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TrainingInfoProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.initialization = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.algorithm = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n if (!(message.initializationBinding && message.initializationBinding.length))\n message.initializationBinding = [];\n message.initializationBinding.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n if (!(message.updateBinding && message.updateBinding.length))\n message.updateBinding = [];\n message.updateBinding.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TrainingInfoProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TrainingInfoProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TrainingInfoProto message.\n * @function verify\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TrainingInfoProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.initialization != null && message.hasOwnProperty(\"initialization\")) {\n var error = $root.onnx.GraphProto.verify(message.initialization);\n if (error)\n return \"initialization.\" + error;\n }\n if (message.algorithm != null && message.hasOwnProperty(\"algorithm\")) {\n var error = $root.onnx.GraphProto.verify(message.algorithm);\n if (error)\n return \"algorithm.\" + error;\n }\n if (message.initializationBinding != null && message.hasOwnProperty(\"initializationBinding\")) {\n if (!Array.isArray(message.initializationBinding))\n return \"initializationBinding: array expected\";\n for (var i = 0; i < message.initializationBinding.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.initializationBinding[i]);\n if (error)\n return \"initializationBinding.\" + error;\n }\n }\n if (message.updateBinding != null && message.hasOwnProperty(\"updateBinding\")) {\n if (!Array.isArray(message.updateBinding))\n return \"updateBinding: array expected\";\n for (var i = 0; i < message.updateBinding.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.updateBinding[i]);\n if (error)\n return \"updateBinding.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a TrainingInfoProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto\n */\n TrainingInfoProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TrainingInfoProto)\n return object;\n var message = new $root.onnx.TrainingInfoProto();\n if (object.initialization != null) {\n if (typeof object.initialization !== \"object\")\n throw TypeError(\".onnx.TrainingInfoProto.initialization: object expected\");\n message.initialization = $root.onnx.GraphProto.fromObject(object.initialization);\n }\n if (object.algorithm != null) {\n if (typeof object.algorithm !== \"object\")\n throw TypeError(\".onnx.TrainingInfoProto.algorithm: object expected\");\n message.algorithm = $root.onnx.GraphProto.fromObject(object.algorithm);\n }\n if (object.initializationBinding) {\n if (!Array.isArray(object.initializationBinding))\n throw TypeError(\".onnx.TrainingInfoProto.initializationBinding: array expected\");\n message.initializationBinding = [];\n for (var i = 0; i < object.initializationBinding.length; ++i) {\n if (typeof object.initializationBinding[i] !== \"object\")\n throw TypeError(\".onnx.TrainingInfoProto.initializationBinding: object expected\");\n message.initializationBinding[i] = $root.onnx.StringStringEntryProto.fromObject(object.initializationBinding[i]);\n }\n }\n if (object.updateBinding) {\n if (!Array.isArray(object.updateBinding))\n throw TypeError(\".onnx.TrainingInfoProto.updateBinding: array expected\");\n message.updateBinding = [];\n for (var i = 0; i < object.updateBinding.length; ++i) {\n if (typeof object.updateBinding[i] !== \"object\")\n throw TypeError(\".onnx.TrainingInfoProto.updateBinding: object expected\");\n message.updateBinding[i] = $root.onnx.StringStringEntryProto.fromObject(object.updateBinding[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TrainingInfoProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.TrainingInfoProto} message TrainingInfoProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TrainingInfoProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.initializationBinding = [];\n object.updateBinding = [];\n }\n if (options.defaults) {\n object.initialization = null;\n object.algorithm = null;\n }\n if (message.initialization != null && message.hasOwnProperty(\"initialization\"))\n object.initialization = $root.onnx.GraphProto.toObject(message.initialization, options);\n if (message.algorithm != null && message.hasOwnProperty(\"algorithm\"))\n object.algorithm = $root.onnx.GraphProto.toObject(message.algorithm, options);\n if (message.initializationBinding && message.initializationBinding.length) {\n object.initializationBinding = [];\n for (var j = 0; j < message.initializationBinding.length; ++j)\n object.initializationBinding[j] = $root.onnx.StringStringEntryProto.toObject(message.initializationBinding[j], options);\n }\n if (message.updateBinding && message.updateBinding.length) {\n object.updateBinding = [];\n for (var j = 0; j < message.updateBinding.length; ++j)\n object.updateBinding[j] = $root.onnx.StringStringEntryProto.toObject(message.updateBinding[j], options);\n }\n return object;\n };\n\n /**\n * Converts this TrainingInfoProto to JSON.\n * @function toJSON\n * @memberof onnx.TrainingInfoProto\n * @instance\n * @returns {Object.} JSON object\n */\n TrainingInfoProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TrainingInfoProto\n * @function getTypeUrl\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TrainingInfoProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TrainingInfoProto\";\n };\n\n return TrainingInfoProto;\n })();\n\n onnx.ModelProto = (function() {\n\n /**\n * Properties of a ModelProto.\n * @memberof onnx\n * @interface IModelProto\n * @property {number|Long|null} [irVersion] ModelProto irVersion\n * @property {Array.|null} [opsetImport] ModelProto opsetImport\n * @property {string|null} [producerName] ModelProto producerName\n * @property {string|null} [producerVersion] ModelProto producerVersion\n * @property {string|null} [domain] ModelProto domain\n * @property {number|Long|null} [modelVersion] ModelProto modelVersion\n * @property {string|null} [docString] ModelProto docString\n * @property {onnx.IGraphProto|null} [graph] ModelProto graph\n * @property {Array.|null} [metadataProps] ModelProto metadataProps\n * @property {Array.|null} [trainingInfo] ModelProto trainingInfo\n * @property {Array.|null} [functions] ModelProto functions\n */\n\n /**\n * Constructs a new ModelProto.\n * @memberof onnx\n * @classdesc Represents a ModelProto.\n * @implements IModelProto\n * @constructor\n * @param {onnx.IModelProto=} [properties] Properties to set\n */\n function ModelProto(properties) {\n this.opsetImport = [];\n this.metadataProps = [];\n this.trainingInfo = [];\n this.functions = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ModelProto irVersion.\n * @member {number|Long} irVersion\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.irVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ModelProto opsetImport.\n * @member {Array.} opsetImport\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.opsetImport = $util.emptyArray;\n\n /**\n * ModelProto producerName.\n * @member {string} producerName\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.producerName = \"\";\n\n /**\n * ModelProto producerVersion.\n * @member {string} producerVersion\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.producerVersion = \"\";\n\n /**\n * ModelProto domain.\n * @member {string} domain\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.domain = \"\";\n\n /**\n * ModelProto modelVersion.\n * @member {number|Long} modelVersion\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.modelVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ModelProto docString.\n * @member {string} docString\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.docString = \"\";\n\n /**\n * ModelProto graph.\n * @member {onnx.IGraphProto|null|undefined} graph\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.graph = null;\n\n /**\n * ModelProto metadataProps.\n * @member {Array.} metadataProps\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.metadataProps = $util.emptyArray;\n\n /**\n * ModelProto trainingInfo.\n * @member {Array.} trainingInfo\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.trainingInfo = $util.emptyArray;\n\n /**\n * ModelProto functions.\n * @member {Array.} functions\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.functions = $util.emptyArray;\n\n /**\n * Creates a new ModelProto instance using the specified properties.\n * @function create\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.IModelProto=} [properties] Properties to set\n * @returns {onnx.ModelProto} ModelProto instance\n */\n ModelProto.create = function create(properties) {\n return new ModelProto(properties);\n };\n\n /**\n * Encodes the specified ModelProto message. Does not implicitly {@link onnx.ModelProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.IModelProto} message ModelProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ModelProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.irVersion != null && Object.hasOwnProperty.call(message, \"irVersion\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int64(message.irVersion);\n if (message.producerName != null && Object.hasOwnProperty.call(message, \"producerName\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.producerName);\n if (message.producerVersion != null && Object.hasOwnProperty.call(message, \"producerVersion\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.producerVersion);\n if (message.domain != null && Object.hasOwnProperty.call(message, \"domain\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.domain);\n if (message.modelVersion != null && Object.hasOwnProperty.call(message, \"modelVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).int64(message.modelVersion);\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.docString);\n if (message.graph != null && Object.hasOwnProperty.call(message, \"graph\"))\n $root.onnx.GraphProto.encode(message.graph, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.opsetImport != null && message.opsetImport.length)\n for (var i = 0; i < message.opsetImport.length; ++i)\n $root.onnx.OperatorSetIdProto.encode(message.opsetImport[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.metadataProps != null && message.metadataProps.length)\n for (var i = 0; i < message.metadataProps.length; ++i)\n $root.onnx.StringStringEntryProto.encode(message.metadataProps[i], writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.trainingInfo != null && message.trainingInfo.length)\n for (var i = 0; i < message.trainingInfo.length; ++i)\n $root.onnx.TrainingInfoProto.encode(message.trainingInfo[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();\n if (message.functions != null && message.functions.length)\n for (var i = 0; i < message.functions.length; ++i)\n $root.onnx.FunctionProto.encode(message.functions[i], writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ModelProto message, length delimited. Does not implicitly {@link onnx.ModelProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.IModelProto} message ModelProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ModelProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a ModelProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.ModelProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.ModelProto} ModelProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ModelProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.ModelProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.irVersion = reader.int64();\n break;\n }\n case 8: {\n if (!(message.opsetImport && message.opsetImport.length))\n message.opsetImport = [];\n message.opsetImport.push($root.onnx.OperatorSetIdProto.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.producerName = reader.string();\n break;\n }\n case 3: {\n message.producerVersion = reader.string();\n break;\n }\n case 4: {\n message.domain = reader.string();\n break;\n }\n case 5: {\n message.modelVersion = reader.int64();\n break;\n }\n case 6: {\n message.docString = reader.string();\n break;\n }\n case 7: {\n message.graph = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 14: {\n if (!(message.metadataProps && message.metadataProps.length))\n message.metadataProps = [];\n message.metadataProps.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n case 20: {\n if (!(message.trainingInfo && message.trainingInfo.length))\n message.trainingInfo = [];\n message.trainingInfo.push($root.onnx.TrainingInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 25: {\n if (!(message.functions && message.functions.length))\n message.functions = [];\n message.functions.push($root.onnx.FunctionProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a ModelProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.ModelProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.ModelProto} ModelProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ModelProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a ModelProto message.\n * @function verify\n * @memberof onnx.ModelProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ModelProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.irVersion != null && message.hasOwnProperty(\"irVersion\"))\n if (!$util.isInteger(message.irVersion) && !(message.irVersion && $util.isInteger(message.irVersion.low) && $util.isInteger(message.irVersion.high)))\n return \"irVersion: integer|Long expected\";\n if (message.opsetImport != null && message.hasOwnProperty(\"opsetImport\")) {\n if (!Array.isArray(message.opsetImport))\n return \"opsetImport: array expected\";\n for (var i = 0; i < message.opsetImport.length; ++i) {\n var error = $root.onnx.OperatorSetIdProto.verify(message.opsetImport[i]);\n if (error)\n return \"opsetImport.\" + error;\n }\n }\n if (message.producerName != null && message.hasOwnProperty(\"producerName\"))\n if (!$util.isString(message.producerName))\n return \"producerName: string expected\";\n if (message.producerVersion != null && message.hasOwnProperty(\"producerVersion\"))\n if (!$util.isString(message.producerVersion))\n return \"producerVersion: string expected\";\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n if (!$util.isString(message.domain))\n return \"domain: string expected\";\n if (message.modelVersion != null && message.hasOwnProperty(\"modelVersion\"))\n if (!$util.isInteger(message.modelVersion) && !(message.modelVersion && $util.isInteger(message.modelVersion.low) && $util.isInteger(message.modelVersion.high)))\n return \"modelVersion: integer|Long expected\";\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n if (message.graph != null && message.hasOwnProperty(\"graph\")) {\n var error = $root.onnx.GraphProto.verify(message.graph);\n if (error)\n return \"graph.\" + error;\n }\n if (message.metadataProps != null && message.hasOwnProperty(\"metadataProps\")) {\n if (!Array.isArray(message.metadataProps))\n return \"metadataProps: array expected\";\n for (var i = 0; i < message.metadataProps.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.metadataProps[i]);\n if (error)\n return \"metadataProps.\" + error;\n }\n }\n if (message.trainingInfo != null && message.hasOwnProperty(\"trainingInfo\")) {\n if (!Array.isArray(message.trainingInfo))\n return \"trainingInfo: array expected\";\n for (var i = 0; i < message.trainingInfo.length; ++i) {\n var error = $root.onnx.TrainingInfoProto.verify(message.trainingInfo[i]);\n if (error)\n return \"trainingInfo.\" + error;\n }\n }\n if (message.functions != null && message.hasOwnProperty(\"functions\")) {\n if (!Array.isArray(message.functions))\n return \"functions: array expected\";\n for (var i = 0; i < message.functions.length; ++i) {\n var error = $root.onnx.FunctionProto.verify(message.functions[i]);\n if (error)\n return \"functions.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a ModelProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.ModelProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.ModelProto} ModelProto\n */\n ModelProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.ModelProto)\n return object;\n var message = new $root.onnx.ModelProto();\n if (object.irVersion != null)\n if ($util.Long)\n (message.irVersion = $util.Long.fromValue(object.irVersion)).unsigned = false;\n else if (typeof object.irVersion === \"string\")\n message.irVersion = parseInt(object.irVersion, 10);\n else if (typeof object.irVersion === \"number\")\n message.irVersion = object.irVersion;\n else if (typeof object.irVersion === \"object\")\n message.irVersion = new $util.LongBits(object.irVersion.low >>> 0, object.irVersion.high >>> 0).toNumber();\n if (object.opsetImport) {\n if (!Array.isArray(object.opsetImport))\n throw TypeError(\".onnx.ModelProto.opsetImport: array expected\");\n message.opsetImport = [];\n for (var i = 0; i < object.opsetImport.length; ++i) {\n if (typeof object.opsetImport[i] !== \"object\")\n throw TypeError(\".onnx.ModelProto.opsetImport: object expected\");\n message.opsetImport[i] = $root.onnx.OperatorSetIdProto.fromObject(object.opsetImport[i]);\n }\n }\n if (object.producerName != null)\n message.producerName = String(object.producerName);\n if (object.producerVersion != null)\n message.producerVersion = String(object.producerVersion);\n if (object.domain != null)\n message.domain = String(object.domain);\n if (object.modelVersion != null)\n if ($util.Long)\n (message.modelVersion = $util.Long.fromValue(object.modelVersion)).unsigned = false;\n else if (typeof object.modelVersion === \"string\")\n message.modelVersion = parseInt(object.modelVersion, 10);\n else if (typeof object.modelVersion === \"number\")\n message.modelVersion = object.modelVersion;\n else if (typeof object.modelVersion === \"object\")\n message.modelVersion = new $util.LongBits(object.modelVersion.low >>> 0, object.modelVersion.high >>> 0).toNumber();\n if (object.docString != null)\n message.docString = String(object.docString);\n if (object.graph != null) {\n if (typeof object.graph !== \"object\")\n throw TypeError(\".onnx.ModelProto.graph: object expected\");\n message.graph = $root.onnx.GraphProto.fromObject(object.graph);\n }\n if (object.metadataProps) {\n if (!Array.isArray(object.metadataProps))\n throw TypeError(\".onnx.ModelProto.metadataProps: array expected\");\n message.metadataProps = [];\n for (var i = 0; i < object.metadataProps.length; ++i) {\n if (typeof object.metadataProps[i] !== \"object\")\n throw TypeError(\".onnx.ModelProto.metadataProps: object expected\");\n message.metadataProps[i] = $root.onnx.StringStringEntryProto.fromObject(object.metadataProps[i]);\n }\n }\n if (object.trainingInfo) {\n if (!Array.isArray(object.trainingInfo))\n throw TypeError(\".onnx.ModelProto.trainingInfo: array expected\");\n message.trainingInfo = [];\n for (var i = 0; i < object.trainingInfo.length; ++i) {\n if (typeof object.trainingInfo[i] !== \"object\")\n throw TypeError(\".onnx.ModelProto.trainingInfo: object expected\");\n message.trainingInfo[i] = $root.onnx.TrainingInfoProto.fromObject(object.trainingInfo[i]);\n }\n }\n if (object.functions) {\n if (!Array.isArray(object.functions))\n throw TypeError(\".onnx.ModelProto.functions: array expected\");\n message.functions = [];\n for (var i = 0; i < object.functions.length; ++i) {\n if (typeof object.functions[i] !== \"object\")\n throw TypeError(\".onnx.ModelProto.functions: object expected\");\n message.functions[i] = $root.onnx.FunctionProto.fromObject(object.functions[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a ModelProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.ModelProto} message ModelProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ModelProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.opsetImport = [];\n object.metadataProps = [];\n object.trainingInfo = [];\n object.functions = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.irVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.irVersion = options.longs === String ? \"0\" : 0;\n object.producerName = \"\";\n object.producerVersion = \"\";\n object.domain = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.modelVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.modelVersion = options.longs === String ? \"0\" : 0;\n object.docString = \"\";\n object.graph = null;\n }\n if (message.irVersion != null && message.hasOwnProperty(\"irVersion\"))\n if (typeof message.irVersion === \"number\")\n object.irVersion = options.longs === String ? String(message.irVersion) : message.irVersion;\n else\n object.irVersion = options.longs === String ? $util.Long.prototype.toString.call(message.irVersion) : options.longs === Number ? new $util.LongBits(message.irVersion.low >>> 0, message.irVersion.high >>> 0).toNumber() : message.irVersion;\n if (message.producerName != null && message.hasOwnProperty(\"producerName\"))\n object.producerName = message.producerName;\n if (message.producerVersion != null && message.hasOwnProperty(\"producerVersion\"))\n object.producerVersion = message.producerVersion;\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n object.domain = message.domain;\n if (message.modelVersion != null && message.hasOwnProperty(\"modelVersion\"))\n if (typeof message.modelVersion === \"number\")\n object.modelVersion = options.longs === String ? String(message.modelVersion) : message.modelVersion;\n else\n object.modelVersion = options.longs === String ? $util.Long.prototype.toString.call(message.modelVersion) : options.longs === Number ? new $util.LongBits(message.modelVersion.low >>> 0, message.modelVersion.high >>> 0).toNumber() : message.modelVersion;\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n if (message.graph != null && message.hasOwnProperty(\"graph\"))\n object.graph = $root.onnx.GraphProto.toObject(message.graph, options);\n if (message.opsetImport && message.opsetImport.length) {\n object.opsetImport = [];\n for (var j = 0; j < message.opsetImport.length; ++j)\n object.opsetImport[j] = $root.onnx.OperatorSetIdProto.toObject(message.opsetImport[j], options);\n }\n if (message.metadataProps && message.metadataProps.length) {\n object.metadataProps = [];\n for (var j = 0; j < message.metadataProps.length; ++j)\n object.metadataProps[j] = $root.onnx.StringStringEntryProto.toObject(message.metadataProps[j], options);\n }\n if (message.trainingInfo && message.trainingInfo.length) {\n object.trainingInfo = [];\n for (var j = 0; j < message.trainingInfo.length; ++j)\n object.trainingInfo[j] = $root.onnx.TrainingInfoProto.toObject(message.trainingInfo[j], options);\n }\n if (message.functions && message.functions.length) {\n object.functions = [];\n for (var j = 0; j < message.functions.length; ++j)\n object.functions[j] = $root.onnx.FunctionProto.toObject(message.functions[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ModelProto to JSON.\n * @function toJSON\n * @memberof onnx.ModelProto\n * @instance\n * @returns {Object.} JSON object\n */\n ModelProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for ModelProto\n * @function getTypeUrl\n * @memberof onnx.ModelProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ModelProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.ModelProto\";\n };\n\n return ModelProto;\n })();\n\n onnx.StringStringEntryProto = (function() {\n\n /**\n * Properties of a StringStringEntryProto.\n * @memberof onnx\n * @interface IStringStringEntryProto\n * @property {string|null} [key] StringStringEntryProto key\n * @property {string|null} [value] StringStringEntryProto value\n */\n\n /**\n * Constructs a new StringStringEntryProto.\n * @memberof onnx\n * @classdesc Represents a StringStringEntryProto.\n * @implements IStringStringEntryProto\n * @constructor\n * @param {onnx.IStringStringEntryProto=} [properties] Properties to set\n */\n function StringStringEntryProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * StringStringEntryProto key.\n * @member {string} key\n * @memberof onnx.StringStringEntryProto\n * @instance\n */\n StringStringEntryProto.prototype.key = \"\";\n\n /**\n * StringStringEntryProto value.\n * @member {string} value\n * @memberof onnx.StringStringEntryProto\n * @instance\n */\n StringStringEntryProto.prototype.value = \"\";\n\n /**\n * Creates a new StringStringEntryProto instance using the specified properties.\n * @function create\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.IStringStringEntryProto=} [properties] Properties to set\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto instance\n */\n StringStringEntryProto.create = function create(properties) {\n return new StringStringEntryProto(properties);\n };\n\n /**\n * Encodes the specified StringStringEntryProto message. Does not implicitly {@link onnx.StringStringEntryProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.IStringStringEntryProto} message StringStringEntryProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n StringStringEntryProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.key);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.value);\n return writer;\n };\n\n /**\n * Encodes the specified StringStringEntryProto message, length delimited. Does not implicitly {@link onnx.StringStringEntryProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.IStringStringEntryProto} message StringStringEntryProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n StringStringEntryProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a StringStringEntryProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n StringStringEntryProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.StringStringEntryProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.key = reader.string();\n break;\n }\n case 2: {\n message.value = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a StringStringEntryProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n StringStringEntryProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a StringStringEntryProto message.\n * @function verify\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n StringStringEntryProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.value != null && message.hasOwnProperty(\"value\"))\n if (!$util.isString(message.value))\n return \"value: string expected\";\n return null;\n };\n\n /**\n * Creates a StringStringEntryProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto\n */\n StringStringEntryProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.StringStringEntryProto)\n return object;\n var message = new $root.onnx.StringStringEntryProto();\n if (object.key != null)\n message.key = String(object.key);\n if (object.value != null)\n message.value = String(object.value);\n return message;\n };\n\n /**\n * Creates a plain object from a StringStringEntryProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.StringStringEntryProto} message StringStringEntryProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n StringStringEntryProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.key = \"\";\n object.value = \"\";\n }\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = message.value;\n return object;\n };\n\n /**\n * Converts this StringStringEntryProto to JSON.\n * @function toJSON\n * @memberof onnx.StringStringEntryProto\n * @instance\n * @returns {Object.} JSON object\n */\n StringStringEntryProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for StringStringEntryProto\n * @function getTypeUrl\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n StringStringEntryProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.StringStringEntryProto\";\n };\n\n return StringStringEntryProto;\n })();\n\n onnx.TensorAnnotation = (function() {\n\n /**\n * Properties of a TensorAnnotation.\n * @memberof onnx\n * @interface ITensorAnnotation\n * @property {string|null} [tensorName] TensorAnnotation tensorName\n * @property {Array.|null} [quantParameterTensorNames] TensorAnnotation quantParameterTensorNames\n */\n\n /**\n * Constructs a new TensorAnnotation.\n * @memberof onnx\n * @classdesc Represents a TensorAnnotation.\n * @implements ITensorAnnotation\n * @constructor\n * @param {onnx.ITensorAnnotation=} [properties] Properties to set\n */\n function TensorAnnotation(properties) {\n this.quantParameterTensorNames = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TensorAnnotation tensorName.\n * @member {string} tensorName\n * @memberof onnx.TensorAnnotation\n * @instance\n */\n TensorAnnotation.prototype.tensorName = \"\";\n\n /**\n * TensorAnnotation quantParameterTensorNames.\n * @member {Array.} quantParameterTensorNames\n * @memberof onnx.TensorAnnotation\n * @instance\n */\n TensorAnnotation.prototype.quantParameterTensorNames = $util.emptyArray;\n\n /**\n * Creates a new TensorAnnotation instance using the specified properties.\n * @function create\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.ITensorAnnotation=} [properties] Properties to set\n * @returns {onnx.TensorAnnotation} TensorAnnotation instance\n */\n TensorAnnotation.create = function create(properties) {\n return new TensorAnnotation(properties);\n };\n\n /**\n * Encodes the specified TensorAnnotation message. Does not implicitly {@link onnx.TensorAnnotation.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.ITensorAnnotation} message TensorAnnotation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorAnnotation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.tensorName != null && Object.hasOwnProperty.call(message, \"tensorName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.tensorName);\n if (message.quantParameterTensorNames != null && message.quantParameterTensorNames.length)\n for (var i = 0; i < message.quantParameterTensorNames.length; ++i)\n $root.onnx.StringStringEntryProto.encode(message.quantParameterTensorNames[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TensorAnnotation message, length delimited. Does not implicitly {@link onnx.TensorAnnotation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.ITensorAnnotation} message TensorAnnotation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorAnnotation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TensorAnnotation message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorAnnotation} TensorAnnotation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorAnnotation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TensorAnnotation();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.tensorName = reader.string();\n break;\n }\n case 2: {\n if (!(message.quantParameterTensorNames && message.quantParameterTensorNames.length))\n message.quantParameterTensorNames = [];\n message.quantParameterTensorNames.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TensorAnnotation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorAnnotation} TensorAnnotation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorAnnotation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TensorAnnotation message.\n * @function verify\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TensorAnnotation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.tensorName != null && message.hasOwnProperty(\"tensorName\"))\n if (!$util.isString(message.tensorName))\n return \"tensorName: string expected\";\n if (message.quantParameterTensorNames != null && message.hasOwnProperty(\"quantParameterTensorNames\")) {\n if (!Array.isArray(message.quantParameterTensorNames))\n return \"quantParameterTensorNames: array expected\";\n for (var i = 0; i < message.quantParameterTensorNames.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.quantParameterTensorNames[i]);\n if (error)\n return \"quantParameterTensorNames.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a TensorAnnotation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TensorAnnotation} TensorAnnotation\n */\n TensorAnnotation.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorAnnotation)\n return object;\n var message = new $root.onnx.TensorAnnotation();\n if (object.tensorName != null)\n message.tensorName = String(object.tensorName);\n if (object.quantParameterTensorNames) {\n if (!Array.isArray(object.quantParameterTensorNames))\n throw TypeError(\".onnx.TensorAnnotation.quantParameterTensorNames: array expected\");\n message.quantParameterTensorNames = [];\n for (var i = 0; i < object.quantParameterTensorNames.length; ++i) {\n if (typeof object.quantParameterTensorNames[i] !== \"object\")\n throw TypeError(\".onnx.TensorAnnotation.quantParameterTensorNames: object expected\");\n message.quantParameterTensorNames[i] = $root.onnx.StringStringEntryProto.fromObject(object.quantParameterTensorNames[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TensorAnnotation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.TensorAnnotation} message TensorAnnotation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TensorAnnotation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.quantParameterTensorNames = [];\n if (options.defaults)\n object.tensorName = \"\";\n if (message.tensorName != null && message.hasOwnProperty(\"tensorName\"))\n object.tensorName = message.tensorName;\n if (message.quantParameterTensorNames && message.quantParameterTensorNames.length) {\n object.quantParameterTensorNames = [];\n for (var j = 0; j < message.quantParameterTensorNames.length; ++j)\n object.quantParameterTensorNames[j] = $root.onnx.StringStringEntryProto.toObject(message.quantParameterTensorNames[j], options);\n }\n return object;\n };\n\n /**\n * Converts this TensorAnnotation to JSON.\n * @function toJSON\n * @memberof onnx.TensorAnnotation\n * @instance\n * @returns {Object.} JSON object\n */\n TensorAnnotation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TensorAnnotation\n * @function getTypeUrl\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TensorAnnotation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TensorAnnotation\";\n };\n\n return TensorAnnotation;\n })();\n\n onnx.GraphProto = (function() {\n\n /**\n * Properties of a GraphProto.\n * @memberof onnx\n * @interface IGraphProto\n * @property {Array.|null} [node] GraphProto node\n * @property {string|null} [name] GraphProto name\n * @property {Array.|null} [initializer] GraphProto initializer\n * @property {Array.|null} [sparseInitializer] GraphProto sparseInitializer\n * @property {string|null} [docString] GraphProto docString\n * @property {Array.|null} [input] GraphProto input\n * @property {Array.|null} [output] GraphProto output\n * @property {Array.|null} [valueInfo] GraphProto valueInfo\n * @property {Array.|null} [quantizationAnnotation] GraphProto quantizationAnnotation\n */\n\n /**\n * Constructs a new GraphProto.\n * @memberof onnx\n * @classdesc Represents a GraphProto.\n * @implements IGraphProto\n * @constructor\n * @param {onnx.IGraphProto=} [properties] Properties to set\n */\n function GraphProto(properties) {\n this.node = [];\n this.initializer = [];\n this.sparseInitializer = [];\n this.input = [];\n this.output = [];\n this.valueInfo = [];\n this.quantizationAnnotation = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * GraphProto node.\n * @member {Array.} node\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.node = $util.emptyArray;\n\n /**\n * GraphProto name.\n * @member {string} name\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.name = \"\";\n\n /**\n * GraphProto initializer.\n * @member {Array.} initializer\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.initializer = $util.emptyArray;\n\n /**\n * GraphProto sparseInitializer.\n * @member {Array.} sparseInitializer\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.sparseInitializer = $util.emptyArray;\n\n /**\n * GraphProto docString.\n * @member {string} docString\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.docString = \"\";\n\n /**\n * GraphProto input.\n * @member {Array.} input\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.input = $util.emptyArray;\n\n /**\n * GraphProto output.\n * @member {Array.} output\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.output = $util.emptyArray;\n\n /**\n * GraphProto valueInfo.\n * @member {Array.} valueInfo\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.valueInfo = $util.emptyArray;\n\n /**\n * GraphProto quantizationAnnotation.\n * @member {Array.} quantizationAnnotation\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.quantizationAnnotation = $util.emptyArray;\n\n /**\n * Creates a new GraphProto instance using the specified properties.\n * @function create\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.IGraphProto=} [properties] Properties to set\n * @returns {onnx.GraphProto} GraphProto instance\n */\n GraphProto.create = function create(properties) {\n return new GraphProto(properties);\n };\n\n /**\n * Encodes the specified GraphProto message. Does not implicitly {@link onnx.GraphProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.IGraphProto} message GraphProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n GraphProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.node != null && message.node.length)\n for (var i = 0; i < message.node.length; ++i)\n $root.onnx.NodeProto.encode(message.node[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.name);\n if (message.initializer != null && message.initializer.length)\n for (var i = 0; i < message.initializer.length; ++i)\n $root.onnx.TensorProto.encode(message.initializer[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 10, wireType 2 =*/82).string(message.docString);\n if (message.input != null && message.input.length)\n for (var i = 0; i < message.input.length; ++i)\n $root.onnx.ValueInfoProto.encode(message.input[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.output != null && message.output.length)\n for (var i = 0; i < message.output.length; ++i)\n $root.onnx.ValueInfoProto.encode(message.output[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\n if (message.valueInfo != null && message.valueInfo.length)\n for (var i = 0; i < message.valueInfo.length; ++i)\n $root.onnx.ValueInfoProto.encode(message.valueInfo[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.quantizationAnnotation != null && message.quantizationAnnotation.length)\n for (var i = 0; i < message.quantizationAnnotation.length; ++i)\n $root.onnx.TensorAnnotation.encode(message.quantizationAnnotation[i], writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.sparseInitializer != null && message.sparseInitializer.length)\n for (var i = 0; i < message.sparseInitializer.length; ++i)\n $root.onnx.SparseTensorProto.encode(message.sparseInitializer[i], writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified GraphProto message, length delimited. Does not implicitly {@link onnx.GraphProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.IGraphProto} message GraphProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n GraphProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a GraphProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.GraphProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.GraphProto} GraphProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n GraphProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.GraphProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.node && message.node.length))\n message.node = [];\n message.node.push($root.onnx.NodeProto.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.name = reader.string();\n break;\n }\n case 5: {\n if (!(message.initializer && message.initializer.length))\n message.initializer = [];\n message.initializer.push($root.onnx.TensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 15: {\n if (!(message.sparseInitializer && message.sparseInitializer.length))\n message.sparseInitializer = [];\n message.sparseInitializer.push($root.onnx.SparseTensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.docString = reader.string();\n break;\n }\n case 11: {\n if (!(message.input && message.input.length))\n message.input = [];\n message.input.push($root.onnx.ValueInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 12: {\n if (!(message.output && message.output.length))\n message.output = [];\n message.output.push($root.onnx.ValueInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 13: {\n if (!(message.valueInfo && message.valueInfo.length))\n message.valueInfo = [];\n message.valueInfo.push($root.onnx.ValueInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 14: {\n if (!(message.quantizationAnnotation && message.quantizationAnnotation.length))\n message.quantizationAnnotation = [];\n message.quantizationAnnotation.push($root.onnx.TensorAnnotation.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a GraphProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.GraphProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.GraphProto} GraphProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n GraphProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a GraphProto message.\n * @function verify\n * @memberof onnx.GraphProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n GraphProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.node != null && message.hasOwnProperty(\"node\")) {\n if (!Array.isArray(message.node))\n return \"node: array expected\";\n for (var i = 0; i < message.node.length; ++i) {\n var error = $root.onnx.NodeProto.verify(message.node[i]);\n if (error)\n return \"node.\" + error;\n }\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.initializer != null && message.hasOwnProperty(\"initializer\")) {\n if (!Array.isArray(message.initializer))\n return \"initializer: array expected\";\n for (var i = 0; i < message.initializer.length; ++i) {\n var error = $root.onnx.TensorProto.verify(message.initializer[i]);\n if (error)\n return \"initializer.\" + error;\n }\n }\n if (message.sparseInitializer != null && message.hasOwnProperty(\"sparseInitializer\")) {\n if (!Array.isArray(message.sparseInitializer))\n return \"sparseInitializer: array expected\";\n for (var i = 0; i < message.sparseInitializer.length; ++i) {\n var error = $root.onnx.SparseTensorProto.verify(message.sparseInitializer[i]);\n if (error)\n return \"sparseInitializer.\" + error;\n }\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n if (message.input != null && message.hasOwnProperty(\"input\")) {\n if (!Array.isArray(message.input))\n return \"input: array expected\";\n for (var i = 0; i < message.input.length; ++i) {\n var error = $root.onnx.ValueInfoProto.verify(message.input[i]);\n if (error)\n return \"input.\" + error;\n }\n }\n if (message.output != null && message.hasOwnProperty(\"output\")) {\n if (!Array.isArray(message.output))\n return \"output: array expected\";\n for (var i = 0; i < message.output.length; ++i) {\n var error = $root.onnx.ValueInfoProto.verify(message.output[i]);\n if (error)\n return \"output.\" + error;\n }\n }\n if (message.valueInfo != null && message.hasOwnProperty(\"valueInfo\")) {\n if (!Array.isArray(message.valueInfo))\n return \"valueInfo: array expected\";\n for (var i = 0; i < message.valueInfo.length; ++i) {\n var error = $root.onnx.ValueInfoProto.verify(message.valueInfo[i]);\n if (error)\n return \"valueInfo.\" + error;\n }\n }\n if (message.quantizationAnnotation != null && message.hasOwnProperty(\"quantizationAnnotation\")) {\n if (!Array.isArray(message.quantizationAnnotation))\n return \"quantizationAnnotation: array expected\";\n for (var i = 0; i < message.quantizationAnnotation.length; ++i) {\n var error = $root.onnx.TensorAnnotation.verify(message.quantizationAnnotation[i]);\n if (error)\n return \"quantizationAnnotation.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a GraphProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.GraphProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.GraphProto} GraphProto\n */\n GraphProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.GraphProto)\n return object;\n var message = new $root.onnx.GraphProto();\n if (object.node) {\n if (!Array.isArray(object.node))\n throw TypeError(\".onnx.GraphProto.node: array expected\");\n message.node = [];\n for (var i = 0; i < object.node.length; ++i) {\n if (typeof object.node[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.node: object expected\");\n message.node[i] = $root.onnx.NodeProto.fromObject(object.node[i]);\n }\n }\n if (object.name != null)\n message.name = String(object.name);\n if (object.initializer) {\n if (!Array.isArray(object.initializer))\n throw TypeError(\".onnx.GraphProto.initializer: array expected\");\n message.initializer = [];\n for (var i = 0; i < object.initializer.length; ++i) {\n if (typeof object.initializer[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.initializer: object expected\");\n message.initializer[i] = $root.onnx.TensorProto.fromObject(object.initializer[i]);\n }\n }\n if (object.sparseInitializer) {\n if (!Array.isArray(object.sparseInitializer))\n throw TypeError(\".onnx.GraphProto.sparseInitializer: array expected\");\n message.sparseInitializer = [];\n for (var i = 0; i < object.sparseInitializer.length; ++i) {\n if (typeof object.sparseInitializer[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.sparseInitializer: object expected\");\n message.sparseInitializer[i] = $root.onnx.SparseTensorProto.fromObject(object.sparseInitializer[i]);\n }\n }\n if (object.docString != null)\n message.docString = String(object.docString);\n if (object.input) {\n if (!Array.isArray(object.input))\n throw TypeError(\".onnx.GraphProto.input: array expected\");\n message.input = [];\n for (var i = 0; i < object.input.length; ++i) {\n if (typeof object.input[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.input: object expected\");\n message.input[i] = $root.onnx.ValueInfoProto.fromObject(object.input[i]);\n }\n }\n if (object.output) {\n if (!Array.isArray(object.output))\n throw TypeError(\".onnx.GraphProto.output: array expected\");\n message.output = [];\n for (var i = 0; i < object.output.length; ++i) {\n if (typeof object.output[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.output: object expected\");\n message.output[i] = $root.onnx.ValueInfoProto.fromObject(object.output[i]);\n }\n }\n if (object.valueInfo) {\n if (!Array.isArray(object.valueInfo))\n throw TypeError(\".onnx.GraphProto.valueInfo: array expected\");\n message.valueInfo = [];\n for (var i = 0; i < object.valueInfo.length; ++i) {\n if (typeof object.valueInfo[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.valueInfo: object expected\");\n message.valueInfo[i] = $root.onnx.ValueInfoProto.fromObject(object.valueInfo[i]);\n }\n }\n if (object.quantizationAnnotation) {\n if (!Array.isArray(object.quantizationAnnotation))\n throw TypeError(\".onnx.GraphProto.quantizationAnnotation: array expected\");\n message.quantizationAnnotation = [];\n for (var i = 0; i < object.quantizationAnnotation.length; ++i) {\n if (typeof object.quantizationAnnotation[i] !== \"object\")\n throw TypeError(\".onnx.GraphProto.quantizationAnnotation: object expected\");\n message.quantizationAnnotation[i] = $root.onnx.TensorAnnotation.fromObject(object.quantizationAnnotation[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a GraphProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.GraphProto} message GraphProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n GraphProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.node = [];\n object.initializer = [];\n object.input = [];\n object.output = [];\n object.valueInfo = [];\n object.quantizationAnnotation = [];\n object.sparseInitializer = [];\n }\n if (options.defaults) {\n object.name = \"\";\n object.docString = \"\";\n }\n if (message.node && message.node.length) {\n object.node = [];\n for (var j = 0; j < message.node.length; ++j)\n object.node[j] = $root.onnx.NodeProto.toObject(message.node[j], options);\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.initializer && message.initializer.length) {\n object.initializer = [];\n for (var j = 0; j < message.initializer.length; ++j)\n object.initializer[j] = $root.onnx.TensorProto.toObject(message.initializer[j], options);\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n if (message.input && message.input.length) {\n object.input = [];\n for (var j = 0; j < message.input.length; ++j)\n object.input[j] = $root.onnx.ValueInfoProto.toObject(message.input[j], options);\n }\n if (message.output && message.output.length) {\n object.output = [];\n for (var j = 0; j < message.output.length; ++j)\n object.output[j] = $root.onnx.ValueInfoProto.toObject(message.output[j], options);\n }\n if (message.valueInfo && message.valueInfo.length) {\n object.valueInfo = [];\n for (var j = 0; j < message.valueInfo.length; ++j)\n object.valueInfo[j] = $root.onnx.ValueInfoProto.toObject(message.valueInfo[j], options);\n }\n if (message.quantizationAnnotation && message.quantizationAnnotation.length) {\n object.quantizationAnnotation = [];\n for (var j = 0; j < message.quantizationAnnotation.length; ++j)\n object.quantizationAnnotation[j] = $root.onnx.TensorAnnotation.toObject(message.quantizationAnnotation[j], options);\n }\n if (message.sparseInitializer && message.sparseInitializer.length) {\n object.sparseInitializer = [];\n for (var j = 0; j < message.sparseInitializer.length; ++j)\n object.sparseInitializer[j] = $root.onnx.SparseTensorProto.toObject(message.sparseInitializer[j], options);\n }\n return object;\n };\n\n /**\n * Converts this GraphProto to JSON.\n * @function toJSON\n * @memberof onnx.GraphProto\n * @instance\n * @returns {Object.} JSON object\n */\n GraphProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for GraphProto\n * @function getTypeUrl\n * @memberof onnx.GraphProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n GraphProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.GraphProto\";\n };\n\n return GraphProto;\n })();\n\n onnx.TensorProto = (function() {\n\n /**\n * Properties of a TensorProto.\n * @memberof onnx\n * @interface ITensorProto\n * @property {Array.|null} [dims] TensorProto dims\n * @property {number|null} [dataType] TensorProto dataType\n * @property {onnx.TensorProto.ISegment|null} [segment] TensorProto segment\n * @property {Array.|null} [floatData] TensorProto floatData\n * @property {Array.|null} [int32Data] TensorProto int32Data\n * @property {Array.|null} [stringData] TensorProto stringData\n * @property {Array.|null} [int64Data] TensorProto int64Data\n * @property {string|null} [name] TensorProto name\n * @property {string|null} [docString] TensorProto docString\n * @property {Uint8Array|null} [rawData] TensorProto rawData\n * @property {Array.|null} [externalData] TensorProto externalData\n * @property {onnx.TensorProto.DataLocation|null} [dataLocation] TensorProto dataLocation\n * @property {Array.|null} [doubleData] TensorProto doubleData\n * @property {Array.|null} [uint64Data] TensorProto uint64Data\n */\n\n /**\n * Constructs a new TensorProto.\n * @memberof onnx\n * @classdesc Represents a TensorProto.\n * @implements ITensorProto\n * @constructor\n * @param {onnx.ITensorProto=} [properties] Properties to set\n */\n function TensorProto(properties) {\n this.dims = [];\n this.floatData = [];\n this.int32Data = [];\n this.stringData = [];\n this.int64Data = [];\n this.externalData = [];\n this.doubleData = [];\n this.uint64Data = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TensorProto dims.\n * @member {Array.} dims\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.dims = $util.emptyArray;\n\n /**\n * TensorProto dataType.\n * @member {number} dataType\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.dataType = 0;\n\n /**\n * TensorProto segment.\n * @member {onnx.TensorProto.ISegment|null|undefined} segment\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.segment = null;\n\n /**\n * TensorProto floatData.\n * @member {Array.} floatData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.floatData = $util.emptyArray;\n\n /**\n * TensorProto int32Data.\n * @member {Array.} int32Data\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.int32Data = $util.emptyArray;\n\n /**\n * TensorProto stringData.\n * @member {Array.} stringData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.stringData = $util.emptyArray;\n\n /**\n * TensorProto int64Data.\n * @member {Array.} int64Data\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.int64Data = $util.emptyArray;\n\n /**\n * TensorProto name.\n * @member {string} name\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.name = \"\";\n\n /**\n * TensorProto docString.\n * @member {string} docString\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.docString = \"\";\n\n /**\n * TensorProto rawData.\n * @member {Uint8Array} rawData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.rawData = $util.newBuffer([]);\n\n /**\n * TensorProto externalData.\n * @member {Array.} externalData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.externalData = $util.emptyArray;\n\n /**\n * TensorProto dataLocation.\n * @member {onnx.TensorProto.DataLocation} dataLocation\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.dataLocation = 0;\n\n /**\n * TensorProto doubleData.\n * @member {Array.} doubleData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.doubleData = $util.emptyArray;\n\n /**\n * TensorProto uint64Data.\n * @member {Array.} uint64Data\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.uint64Data = $util.emptyArray;\n\n /**\n * Creates a new TensorProto instance using the specified properties.\n * @function create\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.ITensorProto=} [properties] Properties to set\n * @returns {onnx.TensorProto} TensorProto instance\n */\n TensorProto.create = function create(properties) {\n return new TensorProto(properties);\n };\n\n /**\n * Encodes the specified TensorProto message. Does not implicitly {@link onnx.TensorProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.ITensorProto} message TensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dims != null && message.dims.length) {\n writer.uint32(/* id 1, wireType 2 =*/10).fork();\n for (var i = 0; i < message.dims.length; ++i)\n writer.int64(message.dims[i]);\n writer.ldelim();\n }\n if (message.dataType != null && Object.hasOwnProperty.call(message, \"dataType\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int32(message.dataType);\n if (message.segment != null && Object.hasOwnProperty.call(message, \"segment\"))\n $root.onnx.TensorProto.Segment.encode(message.segment, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.floatData != null && message.floatData.length) {\n writer.uint32(/* id 4, wireType 2 =*/34).fork();\n for (var i = 0; i < message.floatData.length; ++i)\n writer.float(message.floatData[i]);\n writer.ldelim();\n }\n if (message.int32Data != null && message.int32Data.length) {\n writer.uint32(/* id 5, wireType 2 =*/42).fork();\n for (var i = 0; i < message.int32Data.length; ++i)\n writer.int32(message.int32Data[i]);\n writer.ldelim();\n }\n if (message.stringData != null && message.stringData.length)\n for (var i = 0; i < message.stringData.length; ++i)\n writer.uint32(/* id 6, wireType 2 =*/50).bytes(message.stringData[i]);\n if (message.int64Data != null && message.int64Data.length) {\n writer.uint32(/* id 7, wireType 2 =*/58).fork();\n for (var i = 0; i < message.int64Data.length; ++i)\n writer.int64(message.int64Data[i]);\n writer.ldelim();\n }\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.name);\n if (message.rawData != null && Object.hasOwnProperty.call(message, \"rawData\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.rawData);\n if (message.doubleData != null && message.doubleData.length) {\n writer.uint32(/* id 10, wireType 2 =*/82).fork();\n for (var i = 0; i < message.doubleData.length; ++i)\n writer.double(message.doubleData[i]);\n writer.ldelim();\n }\n if (message.uint64Data != null && message.uint64Data.length) {\n writer.uint32(/* id 11, wireType 2 =*/90).fork();\n for (var i = 0; i < message.uint64Data.length; ++i)\n writer.uint64(message.uint64Data[i]);\n writer.ldelim();\n }\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.docString);\n if (message.externalData != null && message.externalData.length)\n for (var i = 0; i < message.externalData.length; ++i)\n $root.onnx.StringStringEntryProto.encode(message.externalData[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.dataLocation != null && Object.hasOwnProperty.call(message, \"dataLocation\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int32(message.dataLocation);\n return writer;\n };\n\n /**\n * Encodes the specified TensorProto message, length delimited. Does not implicitly {@link onnx.TensorProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.ITensorProto} message TensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TensorProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorProto} TensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TensorProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dims && message.dims.length))\n message.dims = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.dims.push(reader.int64());\n } else\n message.dims.push(reader.int64());\n break;\n }\n case 2: {\n message.dataType = reader.int32();\n break;\n }\n case 3: {\n message.segment = $root.onnx.TensorProto.Segment.decode(reader, reader.uint32());\n break;\n }\n case 4: {\n if (!(message.floatData && message.floatData.length))\n message.floatData = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.floatData.push(reader.float());\n } else\n message.floatData.push(reader.float());\n break;\n }\n case 5: {\n if (!(message.int32Data && message.int32Data.length))\n message.int32Data = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.int32Data.push(reader.int32());\n } else\n message.int32Data.push(reader.int32());\n break;\n }\n case 6: {\n if (!(message.stringData && message.stringData.length))\n message.stringData = [];\n message.stringData.push(reader.bytes());\n break;\n }\n case 7: {\n if (!(message.int64Data && message.int64Data.length))\n message.int64Data = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.int64Data.push(reader.int64());\n } else\n message.int64Data.push(reader.int64());\n break;\n }\n case 8: {\n message.name = reader.string();\n break;\n }\n case 12: {\n message.docString = reader.string();\n break;\n }\n case 9: {\n message.rawData = reader.bytes();\n break;\n }\n case 13: {\n if (!(message.externalData && message.externalData.length))\n message.externalData = [];\n message.externalData.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n case 14: {\n message.dataLocation = reader.int32();\n break;\n }\n case 10: {\n if (!(message.doubleData && message.doubleData.length))\n message.doubleData = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.doubleData.push(reader.double());\n } else\n message.doubleData.push(reader.double());\n break;\n }\n case 11: {\n if (!(message.uint64Data && message.uint64Data.length))\n message.uint64Data = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.uint64Data.push(reader.uint64());\n } else\n message.uint64Data.push(reader.uint64());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TensorProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorProto} TensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TensorProto message.\n * @function verify\n * @memberof onnx.TensorProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TensorProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dims != null && message.hasOwnProperty(\"dims\")) {\n if (!Array.isArray(message.dims))\n return \"dims: array expected\";\n for (var i = 0; i < message.dims.length; ++i)\n if (!$util.isInteger(message.dims[i]) && !(message.dims[i] && $util.isInteger(message.dims[i].low) && $util.isInteger(message.dims[i].high)))\n return \"dims: integer|Long[] expected\";\n }\n if (message.dataType != null && message.hasOwnProperty(\"dataType\"))\n if (!$util.isInteger(message.dataType))\n return \"dataType: integer expected\";\n if (message.segment != null && message.hasOwnProperty(\"segment\")) {\n var error = $root.onnx.TensorProto.Segment.verify(message.segment);\n if (error)\n return \"segment.\" + error;\n }\n if (message.floatData != null && message.hasOwnProperty(\"floatData\")) {\n if (!Array.isArray(message.floatData))\n return \"floatData: array expected\";\n for (var i = 0; i < message.floatData.length; ++i)\n if (typeof message.floatData[i] !== \"number\")\n return \"floatData: number[] expected\";\n }\n if (message.int32Data != null && message.hasOwnProperty(\"int32Data\")) {\n if (!Array.isArray(message.int32Data))\n return \"int32Data: array expected\";\n for (var i = 0; i < message.int32Data.length; ++i)\n if (!$util.isInteger(message.int32Data[i]))\n return \"int32Data: integer[] expected\";\n }\n if (message.stringData != null && message.hasOwnProperty(\"stringData\")) {\n if (!Array.isArray(message.stringData))\n return \"stringData: array expected\";\n for (var i = 0; i < message.stringData.length; ++i)\n if (!(message.stringData[i] && typeof message.stringData[i].length === \"number\" || $util.isString(message.stringData[i])))\n return \"stringData: buffer[] expected\";\n }\n if (message.int64Data != null && message.hasOwnProperty(\"int64Data\")) {\n if (!Array.isArray(message.int64Data))\n return \"int64Data: array expected\";\n for (var i = 0; i < message.int64Data.length; ++i)\n if (!$util.isInteger(message.int64Data[i]) && !(message.int64Data[i] && $util.isInteger(message.int64Data[i].low) && $util.isInteger(message.int64Data[i].high)))\n return \"int64Data: integer|Long[] expected\";\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n if (message.rawData != null && message.hasOwnProperty(\"rawData\"))\n if (!(message.rawData && typeof message.rawData.length === \"number\" || $util.isString(message.rawData)))\n return \"rawData: buffer expected\";\n if (message.externalData != null && message.hasOwnProperty(\"externalData\")) {\n if (!Array.isArray(message.externalData))\n return \"externalData: array expected\";\n for (var i = 0; i < message.externalData.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.externalData[i]);\n if (error)\n return \"externalData.\" + error;\n }\n }\n if (message.dataLocation != null && message.hasOwnProperty(\"dataLocation\"))\n switch (message.dataLocation) {\n default:\n return \"dataLocation: enum value expected\";\n case 0:\n case 1:\n break;\n }\n if (message.doubleData != null && message.hasOwnProperty(\"doubleData\")) {\n if (!Array.isArray(message.doubleData))\n return \"doubleData: array expected\";\n for (var i = 0; i < message.doubleData.length; ++i)\n if (typeof message.doubleData[i] !== \"number\")\n return \"doubleData: number[] expected\";\n }\n if (message.uint64Data != null && message.hasOwnProperty(\"uint64Data\")) {\n if (!Array.isArray(message.uint64Data))\n return \"uint64Data: array expected\";\n for (var i = 0; i < message.uint64Data.length; ++i)\n if (!$util.isInteger(message.uint64Data[i]) && !(message.uint64Data[i] && $util.isInteger(message.uint64Data[i].low) && $util.isInteger(message.uint64Data[i].high)))\n return \"uint64Data: integer|Long[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a TensorProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TensorProto} TensorProto\n */\n TensorProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorProto)\n return object;\n var message = new $root.onnx.TensorProto();\n if (object.dims) {\n if (!Array.isArray(object.dims))\n throw TypeError(\".onnx.TensorProto.dims: array expected\");\n message.dims = [];\n for (var i = 0; i < object.dims.length; ++i)\n if ($util.Long)\n (message.dims[i] = $util.Long.fromValue(object.dims[i])).unsigned = false;\n else if (typeof object.dims[i] === \"string\")\n message.dims[i] = parseInt(object.dims[i], 10);\n else if (typeof object.dims[i] === \"number\")\n message.dims[i] = object.dims[i];\n else if (typeof object.dims[i] === \"object\")\n message.dims[i] = new $util.LongBits(object.dims[i].low >>> 0, object.dims[i].high >>> 0).toNumber();\n }\n if (object.dataType != null)\n message.dataType = object.dataType | 0;\n if (object.segment != null) {\n if (typeof object.segment !== \"object\")\n throw TypeError(\".onnx.TensorProto.segment: object expected\");\n message.segment = $root.onnx.TensorProto.Segment.fromObject(object.segment);\n }\n if (object.floatData) {\n if (!Array.isArray(object.floatData))\n throw TypeError(\".onnx.TensorProto.floatData: array expected\");\n message.floatData = [];\n for (var i = 0; i < object.floatData.length; ++i)\n message.floatData[i] = Number(object.floatData[i]);\n }\n if (object.int32Data) {\n if (!Array.isArray(object.int32Data))\n throw TypeError(\".onnx.TensorProto.int32Data: array expected\");\n message.int32Data = [];\n for (var i = 0; i < object.int32Data.length; ++i)\n message.int32Data[i] = object.int32Data[i] | 0;\n }\n if (object.stringData) {\n if (!Array.isArray(object.stringData))\n throw TypeError(\".onnx.TensorProto.stringData: array expected\");\n message.stringData = [];\n for (var i = 0; i < object.stringData.length; ++i)\n if (typeof object.stringData[i] === \"string\")\n $util.base64.decode(object.stringData[i], message.stringData[i] = $util.newBuffer($util.base64.length(object.stringData[i])), 0);\n else if (object.stringData[i].length >= 0)\n message.stringData[i] = object.stringData[i];\n }\n if (object.int64Data) {\n if (!Array.isArray(object.int64Data))\n throw TypeError(\".onnx.TensorProto.int64Data: array expected\");\n message.int64Data = [];\n for (var i = 0; i < object.int64Data.length; ++i)\n if ($util.Long)\n (message.int64Data[i] = $util.Long.fromValue(object.int64Data[i])).unsigned = false;\n else if (typeof object.int64Data[i] === \"string\")\n message.int64Data[i] = parseInt(object.int64Data[i], 10);\n else if (typeof object.int64Data[i] === \"number\")\n message.int64Data[i] = object.int64Data[i];\n else if (typeof object.int64Data[i] === \"object\")\n message.int64Data[i] = new $util.LongBits(object.int64Data[i].low >>> 0, object.int64Data[i].high >>> 0).toNumber();\n }\n if (object.name != null)\n message.name = String(object.name);\n if (object.docString != null)\n message.docString = String(object.docString);\n if (object.rawData != null)\n if (typeof object.rawData === \"string\")\n $util.base64.decode(object.rawData, message.rawData = $util.newBuffer($util.base64.length(object.rawData)), 0);\n else if (object.rawData.length >= 0)\n message.rawData = object.rawData;\n if (object.externalData) {\n if (!Array.isArray(object.externalData))\n throw TypeError(\".onnx.TensorProto.externalData: array expected\");\n message.externalData = [];\n for (var i = 0; i < object.externalData.length; ++i) {\n if (typeof object.externalData[i] !== \"object\")\n throw TypeError(\".onnx.TensorProto.externalData: object expected\");\n message.externalData[i] = $root.onnx.StringStringEntryProto.fromObject(object.externalData[i]);\n }\n }\n switch (object.dataLocation) {\n default:\n if (typeof object.dataLocation === \"number\") {\n message.dataLocation = object.dataLocation;\n break;\n }\n break;\n case \"DEFAULT\":\n case 0:\n message.dataLocation = 0;\n break;\n case \"EXTERNAL\":\n case 1:\n message.dataLocation = 1;\n break;\n }\n if (object.doubleData) {\n if (!Array.isArray(object.doubleData))\n throw TypeError(\".onnx.TensorProto.doubleData: array expected\");\n message.doubleData = [];\n for (var i = 0; i < object.doubleData.length; ++i)\n message.doubleData[i] = Number(object.doubleData[i]);\n }\n if (object.uint64Data) {\n if (!Array.isArray(object.uint64Data))\n throw TypeError(\".onnx.TensorProto.uint64Data: array expected\");\n message.uint64Data = [];\n for (var i = 0; i < object.uint64Data.length; ++i)\n if ($util.Long)\n (message.uint64Data[i] = $util.Long.fromValue(object.uint64Data[i])).unsigned = true;\n else if (typeof object.uint64Data[i] === \"string\")\n message.uint64Data[i] = parseInt(object.uint64Data[i], 10);\n else if (typeof object.uint64Data[i] === \"number\")\n message.uint64Data[i] = object.uint64Data[i];\n else if (typeof object.uint64Data[i] === \"object\")\n message.uint64Data[i] = new $util.LongBits(object.uint64Data[i].low >>> 0, object.uint64Data[i].high >>> 0).toNumber(true);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TensorProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.TensorProto} message TensorProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TensorProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.dims = [];\n object.floatData = [];\n object.int32Data = [];\n object.stringData = [];\n object.int64Data = [];\n object.doubleData = [];\n object.uint64Data = [];\n object.externalData = [];\n }\n if (options.defaults) {\n object.dataType = 0;\n object.segment = null;\n object.name = \"\";\n if (options.bytes === String)\n object.rawData = \"\";\n else {\n object.rawData = [];\n if (options.bytes !== Array)\n object.rawData = $util.newBuffer(object.rawData);\n }\n object.docString = \"\";\n object.dataLocation = options.enums === String ? \"DEFAULT\" : 0;\n }\n if (message.dims && message.dims.length) {\n object.dims = [];\n for (var j = 0; j < message.dims.length; ++j)\n if (typeof message.dims[j] === \"number\")\n object.dims[j] = options.longs === String ? String(message.dims[j]) : message.dims[j];\n else\n object.dims[j] = options.longs === String ? $util.Long.prototype.toString.call(message.dims[j]) : options.longs === Number ? new $util.LongBits(message.dims[j].low >>> 0, message.dims[j].high >>> 0).toNumber() : message.dims[j];\n }\n if (message.dataType != null && message.hasOwnProperty(\"dataType\"))\n object.dataType = message.dataType;\n if (message.segment != null && message.hasOwnProperty(\"segment\"))\n object.segment = $root.onnx.TensorProto.Segment.toObject(message.segment, options);\n if (message.floatData && message.floatData.length) {\n object.floatData = [];\n for (var j = 0; j < message.floatData.length; ++j)\n object.floatData[j] = options.json && !isFinite(message.floatData[j]) ? String(message.floatData[j]) : message.floatData[j];\n }\n if (message.int32Data && message.int32Data.length) {\n object.int32Data = [];\n for (var j = 0; j < message.int32Data.length; ++j)\n object.int32Data[j] = message.int32Data[j];\n }\n if (message.stringData && message.stringData.length) {\n object.stringData = [];\n for (var j = 0; j < message.stringData.length; ++j)\n object.stringData[j] = options.bytes === String ? $util.base64.encode(message.stringData[j], 0, message.stringData[j].length) : options.bytes === Array ? Array.prototype.slice.call(message.stringData[j]) : message.stringData[j];\n }\n if (message.int64Data && message.int64Data.length) {\n object.int64Data = [];\n for (var j = 0; j < message.int64Data.length; ++j)\n if (typeof message.int64Data[j] === \"number\")\n object.int64Data[j] = options.longs === String ? String(message.int64Data[j]) : message.int64Data[j];\n else\n object.int64Data[j] = options.longs === String ? $util.Long.prototype.toString.call(message.int64Data[j]) : options.longs === Number ? new $util.LongBits(message.int64Data[j].low >>> 0, message.int64Data[j].high >>> 0).toNumber() : message.int64Data[j];\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.rawData != null && message.hasOwnProperty(\"rawData\"))\n object.rawData = options.bytes === String ? $util.base64.encode(message.rawData, 0, message.rawData.length) : options.bytes === Array ? Array.prototype.slice.call(message.rawData) : message.rawData;\n if (message.doubleData && message.doubleData.length) {\n object.doubleData = [];\n for (var j = 0; j < message.doubleData.length; ++j)\n object.doubleData[j] = options.json && !isFinite(message.doubleData[j]) ? String(message.doubleData[j]) : message.doubleData[j];\n }\n if (message.uint64Data && message.uint64Data.length) {\n object.uint64Data = [];\n for (var j = 0; j < message.uint64Data.length; ++j)\n if (typeof message.uint64Data[j] === \"number\")\n object.uint64Data[j] = options.longs === String ? String(message.uint64Data[j]) : message.uint64Data[j];\n else\n object.uint64Data[j] = options.longs === String ? $util.Long.prototype.toString.call(message.uint64Data[j]) : options.longs === Number ? new $util.LongBits(message.uint64Data[j].low >>> 0, message.uint64Data[j].high >>> 0).toNumber(true) : message.uint64Data[j];\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n if (message.externalData && message.externalData.length) {\n object.externalData = [];\n for (var j = 0; j < message.externalData.length; ++j)\n object.externalData[j] = $root.onnx.StringStringEntryProto.toObject(message.externalData[j], options);\n }\n if (message.dataLocation != null && message.hasOwnProperty(\"dataLocation\"))\n object.dataLocation = options.enums === String ? $root.onnx.TensorProto.DataLocation[message.dataLocation] === undefined ? message.dataLocation : $root.onnx.TensorProto.DataLocation[message.dataLocation] : message.dataLocation;\n return object;\n };\n\n /**\n * Converts this TensorProto to JSON.\n * @function toJSON\n * @memberof onnx.TensorProto\n * @instance\n * @returns {Object.} JSON object\n */\n TensorProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TensorProto\n * @function getTypeUrl\n * @memberof onnx.TensorProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TensorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TensorProto\";\n };\n\n /**\n * DataType enum.\n * @name onnx.TensorProto.DataType\n * @enum {number}\n * @property {number} UNDEFINED=0 UNDEFINED value\n * @property {number} FLOAT=1 FLOAT value\n * @property {number} UINT8=2 UINT8 value\n * @property {number} INT8=3 INT8 value\n * @property {number} UINT16=4 UINT16 value\n * @property {number} INT16=5 INT16 value\n * @property {number} INT32=6 INT32 value\n * @property {number} INT64=7 INT64 value\n * @property {number} STRING=8 STRING value\n * @property {number} BOOL=9 BOOL value\n * @property {number} FLOAT16=10 FLOAT16 value\n * @property {number} DOUBLE=11 DOUBLE value\n * @property {number} UINT32=12 UINT32 value\n * @property {number} UINT64=13 UINT64 value\n * @property {number} COMPLEX64=14 COMPLEX64 value\n * @property {number} COMPLEX128=15 COMPLEX128 value\n * @property {number} BFLOAT16=16 BFLOAT16 value\n * @property {number} FLOAT8E4M3FN=17 FLOAT8E4M3FN value\n * @property {number} FLOAT8E4M3FNUZ=18 FLOAT8E4M3FNUZ value\n * @property {number} FLOAT8E5M2=19 FLOAT8E5M2 value\n * @property {number} FLOAT8E5M2FNUZ=20 FLOAT8E5M2FNUZ value\n */\n TensorProto.DataType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"UNDEFINED\"] = 0;\n values[valuesById[1] = \"FLOAT\"] = 1;\n values[valuesById[2] = \"UINT8\"] = 2;\n values[valuesById[3] = \"INT8\"] = 3;\n values[valuesById[4] = \"UINT16\"] = 4;\n values[valuesById[5] = \"INT16\"] = 5;\n values[valuesById[6] = \"INT32\"] = 6;\n values[valuesById[7] = \"INT64\"] = 7;\n values[valuesById[8] = \"STRING\"] = 8;\n values[valuesById[9] = \"BOOL\"] = 9;\n values[valuesById[10] = \"FLOAT16\"] = 10;\n values[valuesById[11] = \"DOUBLE\"] = 11;\n values[valuesById[12] = \"UINT32\"] = 12;\n values[valuesById[13] = \"UINT64\"] = 13;\n values[valuesById[14] = \"COMPLEX64\"] = 14;\n values[valuesById[15] = \"COMPLEX128\"] = 15;\n values[valuesById[16] = \"BFLOAT16\"] = 16;\n values[valuesById[17] = \"FLOAT8E4M3FN\"] = 17;\n values[valuesById[18] = \"FLOAT8E4M3FNUZ\"] = 18;\n values[valuesById[19] = \"FLOAT8E5M2\"] = 19;\n values[valuesById[20] = \"FLOAT8E5M2FNUZ\"] = 20;\n return values;\n })();\n\n TensorProto.Segment = (function() {\n\n /**\n * Properties of a Segment.\n * @memberof onnx.TensorProto\n * @interface ISegment\n * @property {number|Long|null} [begin] Segment begin\n * @property {number|Long|null} [end] Segment end\n */\n\n /**\n * Constructs a new Segment.\n * @memberof onnx.TensorProto\n * @classdesc Represents a Segment.\n * @implements ISegment\n * @constructor\n * @param {onnx.TensorProto.ISegment=} [properties] Properties to set\n */\n function Segment(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Segment begin.\n * @member {number|Long} begin\n * @memberof onnx.TensorProto.Segment\n * @instance\n */\n Segment.prototype.begin = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Segment end.\n * @member {number|Long} end\n * @memberof onnx.TensorProto.Segment\n * @instance\n */\n Segment.prototype.end = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new Segment instance using the specified properties.\n * @function create\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.ISegment=} [properties] Properties to set\n * @returns {onnx.TensorProto.Segment} Segment instance\n */\n Segment.create = function create(properties) {\n return new Segment(properties);\n };\n\n /**\n * Encodes the specified Segment message. Does not implicitly {@link onnx.TensorProto.Segment.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.ISegment} message Segment message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Segment.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.begin != null && Object.hasOwnProperty.call(message, \"begin\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int64(message.begin);\n if (message.end != null && Object.hasOwnProperty.call(message, \"end\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.end);\n return writer;\n };\n\n /**\n * Encodes the specified Segment message, length delimited. Does not implicitly {@link onnx.TensorProto.Segment.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.ISegment} message Segment message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Segment.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Segment message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorProto.Segment} Segment\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Segment.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TensorProto.Segment();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.begin = reader.int64();\n break;\n }\n case 2: {\n message.end = reader.int64();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Segment message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorProto.Segment} Segment\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Segment.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Segment message.\n * @function verify\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Segment.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.begin != null && message.hasOwnProperty(\"begin\"))\n if (!$util.isInteger(message.begin) && !(message.begin && $util.isInteger(message.begin.low) && $util.isInteger(message.begin.high)))\n return \"begin: integer|Long expected\";\n if (message.end != null && message.hasOwnProperty(\"end\"))\n if (!$util.isInteger(message.end) && !(message.end && $util.isInteger(message.end.low) && $util.isInteger(message.end.high)))\n return \"end: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a Segment message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TensorProto.Segment} Segment\n */\n Segment.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorProto.Segment)\n return object;\n var message = new $root.onnx.TensorProto.Segment();\n if (object.begin != null)\n if ($util.Long)\n (message.begin = $util.Long.fromValue(object.begin)).unsigned = false;\n else if (typeof object.begin === \"string\")\n message.begin = parseInt(object.begin, 10);\n else if (typeof object.begin === \"number\")\n message.begin = object.begin;\n else if (typeof object.begin === \"object\")\n message.begin = new $util.LongBits(object.begin.low >>> 0, object.begin.high >>> 0).toNumber();\n if (object.end != null)\n if ($util.Long)\n (message.end = $util.Long.fromValue(object.end)).unsigned = false;\n else if (typeof object.end === \"string\")\n message.end = parseInt(object.end, 10);\n else if (typeof object.end === \"number\")\n message.end = object.end;\n else if (typeof object.end === \"object\")\n message.end = new $util.LongBits(object.end.low >>> 0, object.end.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from a Segment message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.Segment} message Segment\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Segment.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.begin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.begin = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.end = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.end = options.longs === String ? \"0\" : 0;\n }\n if (message.begin != null && message.hasOwnProperty(\"begin\"))\n if (typeof message.begin === \"number\")\n object.begin = options.longs === String ? String(message.begin) : message.begin;\n else\n object.begin = options.longs === String ? $util.Long.prototype.toString.call(message.begin) : options.longs === Number ? new $util.LongBits(message.begin.low >>> 0, message.begin.high >>> 0).toNumber() : message.begin;\n if (message.end != null && message.hasOwnProperty(\"end\"))\n if (typeof message.end === \"number\")\n object.end = options.longs === String ? String(message.end) : message.end;\n else\n object.end = options.longs === String ? $util.Long.prototype.toString.call(message.end) : options.longs === Number ? new $util.LongBits(message.end.low >>> 0, message.end.high >>> 0).toNumber() : message.end;\n return object;\n };\n\n /**\n * Converts this Segment to JSON.\n * @function toJSON\n * @memberof onnx.TensorProto.Segment\n * @instance\n * @returns {Object.} JSON object\n */\n Segment.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Segment\n * @function getTypeUrl\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Segment.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TensorProto.Segment\";\n };\n\n return Segment;\n })();\n\n /**\n * DataLocation enum.\n * @name onnx.TensorProto.DataLocation\n * @enum {number}\n * @property {number} DEFAULT=0 DEFAULT value\n * @property {number} EXTERNAL=1 EXTERNAL value\n */\n TensorProto.DataLocation = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"DEFAULT\"] = 0;\n values[valuesById[1] = \"EXTERNAL\"] = 1;\n return values;\n })();\n\n return TensorProto;\n })();\n\n onnx.SparseTensorProto = (function() {\n\n /**\n * Properties of a SparseTensorProto.\n * @memberof onnx\n * @interface ISparseTensorProto\n * @property {onnx.ITensorProto|null} [values] SparseTensorProto values\n * @property {onnx.ITensorProto|null} [indices] SparseTensorProto indices\n * @property {Array.|null} [dims] SparseTensorProto dims\n */\n\n /**\n * Constructs a new SparseTensorProto.\n * @memberof onnx\n * @classdesc Represents a SparseTensorProto.\n * @implements ISparseTensorProto\n * @constructor\n * @param {onnx.ISparseTensorProto=} [properties] Properties to set\n */\n function SparseTensorProto(properties) {\n this.dims = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SparseTensorProto values.\n * @member {onnx.ITensorProto|null|undefined} values\n * @memberof onnx.SparseTensorProto\n * @instance\n */\n SparseTensorProto.prototype.values = null;\n\n /**\n * SparseTensorProto indices.\n * @member {onnx.ITensorProto|null|undefined} indices\n * @memberof onnx.SparseTensorProto\n * @instance\n */\n SparseTensorProto.prototype.indices = null;\n\n /**\n * SparseTensorProto dims.\n * @member {Array.} dims\n * @memberof onnx.SparseTensorProto\n * @instance\n */\n SparseTensorProto.prototype.dims = $util.emptyArray;\n\n /**\n * Creates a new SparseTensorProto instance using the specified properties.\n * @function create\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.ISparseTensorProto=} [properties] Properties to set\n * @returns {onnx.SparseTensorProto} SparseTensorProto instance\n */\n SparseTensorProto.create = function create(properties) {\n return new SparseTensorProto(properties);\n };\n\n /**\n * Encodes the specified SparseTensorProto message. Does not implicitly {@link onnx.SparseTensorProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.ISparseTensorProto} message SparseTensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensorProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.values != null && Object.hasOwnProperty.call(message, \"values\"))\n $root.onnx.TensorProto.encode(message.values, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.indices != null && Object.hasOwnProperty.call(message, \"indices\"))\n $root.onnx.TensorProto.encode(message.indices, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dims != null && message.dims.length) {\n writer.uint32(/* id 3, wireType 2 =*/26).fork();\n for (var i = 0; i < message.dims.length; ++i)\n writer.int64(message.dims[i]);\n writer.ldelim();\n }\n return writer;\n };\n\n /**\n * Encodes the specified SparseTensorProto message, length delimited. Does not implicitly {@link onnx.SparseTensorProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.ISparseTensorProto} message SparseTensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensorProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SparseTensorProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.SparseTensorProto} SparseTensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensorProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.SparseTensorProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.values = $root.onnx.TensorProto.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.indices = $root.onnx.TensorProto.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n if (!(message.dims && message.dims.length))\n message.dims = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.dims.push(reader.int64());\n } else\n message.dims.push(reader.int64());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SparseTensorProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.SparseTensorProto} SparseTensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensorProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SparseTensorProto message.\n * @function verify\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SparseTensorProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.values != null && message.hasOwnProperty(\"values\")) {\n var error = $root.onnx.TensorProto.verify(message.values);\n if (error)\n return \"values.\" + error;\n }\n if (message.indices != null && message.hasOwnProperty(\"indices\")) {\n var error = $root.onnx.TensorProto.verify(message.indices);\n if (error)\n return \"indices.\" + error;\n }\n if (message.dims != null && message.hasOwnProperty(\"dims\")) {\n if (!Array.isArray(message.dims))\n return \"dims: array expected\";\n for (var i = 0; i < message.dims.length; ++i)\n if (!$util.isInteger(message.dims[i]) && !(message.dims[i] && $util.isInteger(message.dims[i].low) && $util.isInteger(message.dims[i].high)))\n return \"dims: integer|Long[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a SparseTensorProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.SparseTensorProto} SparseTensorProto\n */\n SparseTensorProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.SparseTensorProto)\n return object;\n var message = new $root.onnx.SparseTensorProto();\n if (object.values != null) {\n if (typeof object.values !== \"object\")\n throw TypeError(\".onnx.SparseTensorProto.values: object expected\");\n message.values = $root.onnx.TensorProto.fromObject(object.values);\n }\n if (object.indices != null) {\n if (typeof object.indices !== \"object\")\n throw TypeError(\".onnx.SparseTensorProto.indices: object expected\");\n message.indices = $root.onnx.TensorProto.fromObject(object.indices);\n }\n if (object.dims) {\n if (!Array.isArray(object.dims))\n throw TypeError(\".onnx.SparseTensorProto.dims: array expected\");\n message.dims = [];\n for (var i = 0; i < object.dims.length; ++i)\n if ($util.Long)\n (message.dims[i] = $util.Long.fromValue(object.dims[i])).unsigned = false;\n else if (typeof object.dims[i] === \"string\")\n message.dims[i] = parseInt(object.dims[i], 10);\n else if (typeof object.dims[i] === \"number\")\n message.dims[i] = object.dims[i];\n else if (typeof object.dims[i] === \"object\")\n message.dims[i] = new $util.LongBits(object.dims[i].low >>> 0, object.dims[i].high >>> 0).toNumber();\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SparseTensorProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.SparseTensorProto} message SparseTensorProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SparseTensorProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dims = [];\n if (options.defaults) {\n object.values = null;\n object.indices = null;\n }\n if (message.values != null && message.hasOwnProperty(\"values\"))\n object.values = $root.onnx.TensorProto.toObject(message.values, options);\n if (message.indices != null && message.hasOwnProperty(\"indices\"))\n object.indices = $root.onnx.TensorProto.toObject(message.indices, options);\n if (message.dims && message.dims.length) {\n object.dims = [];\n for (var j = 0; j < message.dims.length; ++j)\n if (typeof message.dims[j] === \"number\")\n object.dims[j] = options.longs === String ? String(message.dims[j]) : message.dims[j];\n else\n object.dims[j] = options.longs === String ? $util.Long.prototype.toString.call(message.dims[j]) : options.longs === Number ? new $util.LongBits(message.dims[j].low >>> 0, message.dims[j].high >>> 0).toNumber() : message.dims[j];\n }\n return object;\n };\n\n /**\n * Converts this SparseTensorProto to JSON.\n * @function toJSON\n * @memberof onnx.SparseTensorProto\n * @instance\n * @returns {Object.} JSON object\n */\n SparseTensorProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SparseTensorProto\n * @function getTypeUrl\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SparseTensorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.SparseTensorProto\";\n };\n\n return SparseTensorProto;\n })();\n\n onnx.TensorShapeProto = (function() {\n\n /**\n * Properties of a TensorShapeProto.\n * @memberof onnx\n * @interface ITensorShapeProto\n * @property {Array.|null} [dim] TensorShapeProto dim\n */\n\n /**\n * Constructs a new TensorShapeProto.\n * @memberof onnx\n * @classdesc Represents a TensorShapeProto.\n * @implements ITensorShapeProto\n * @constructor\n * @param {onnx.ITensorShapeProto=} [properties] Properties to set\n */\n function TensorShapeProto(properties) {\n this.dim = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TensorShapeProto dim.\n * @member {Array.} dim\n * @memberof onnx.TensorShapeProto\n * @instance\n */\n TensorShapeProto.prototype.dim = $util.emptyArray;\n\n /**\n * Creates a new TensorShapeProto instance using the specified properties.\n * @function create\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.ITensorShapeProto=} [properties] Properties to set\n * @returns {onnx.TensorShapeProto} TensorShapeProto instance\n */\n TensorShapeProto.create = function create(properties) {\n return new TensorShapeProto(properties);\n };\n\n /**\n * Encodes the specified TensorShapeProto message. Does not implicitly {@link onnx.TensorShapeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.ITensorShapeProto} message TensorShapeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorShapeProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dim != null && message.dim.length)\n for (var i = 0; i < message.dim.length; ++i)\n $root.onnx.TensorShapeProto.Dimension.encode(message.dim[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TensorShapeProto message, length delimited. Does not implicitly {@link onnx.TensorShapeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.ITensorShapeProto} message TensorShapeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorShapeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TensorShapeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorShapeProto} TensorShapeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorShapeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TensorShapeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dim && message.dim.length))\n message.dim = [];\n message.dim.push($root.onnx.TensorShapeProto.Dimension.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TensorShapeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorShapeProto} TensorShapeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorShapeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TensorShapeProto message.\n * @function verify\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TensorShapeProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dim != null && message.hasOwnProperty(\"dim\")) {\n if (!Array.isArray(message.dim))\n return \"dim: array expected\";\n for (var i = 0; i < message.dim.length; ++i) {\n var error = $root.onnx.TensorShapeProto.Dimension.verify(message.dim[i]);\n if (error)\n return \"dim.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a TensorShapeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TensorShapeProto} TensorShapeProto\n */\n TensorShapeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorShapeProto)\n return object;\n var message = new $root.onnx.TensorShapeProto();\n if (object.dim) {\n if (!Array.isArray(object.dim))\n throw TypeError(\".onnx.TensorShapeProto.dim: array expected\");\n message.dim = [];\n for (var i = 0; i < object.dim.length; ++i) {\n if (typeof object.dim[i] !== \"object\")\n throw TypeError(\".onnx.TensorShapeProto.dim: object expected\");\n message.dim[i] = $root.onnx.TensorShapeProto.Dimension.fromObject(object.dim[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TensorShapeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.TensorShapeProto} message TensorShapeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TensorShapeProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dim = [];\n if (message.dim && message.dim.length) {\n object.dim = [];\n for (var j = 0; j < message.dim.length; ++j)\n object.dim[j] = $root.onnx.TensorShapeProto.Dimension.toObject(message.dim[j], options);\n }\n return object;\n };\n\n /**\n * Converts this TensorShapeProto to JSON.\n * @function toJSON\n * @memberof onnx.TensorShapeProto\n * @instance\n * @returns {Object.} JSON object\n */\n TensorShapeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TensorShapeProto\n * @function getTypeUrl\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TensorShapeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TensorShapeProto\";\n };\n\n TensorShapeProto.Dimension = (function() {\n\n /**\n * Properties of a Dimension.\n * @memberof onnx.TensorShapeProto\n * @interface IDimension\n * @property {number|Long|null} [dimValue] Dimension dimValue\n * @property {string|null} [dimParam] Dimension dimParam\n * @property {string|null} [denotation] Dimension denotation\n */\n\n /**\n * Constructs a new Dimension.\n * @memberof onnx.TensorShapeProto\n * @classdesc Represents a Dimension.\n * @implements IDimension\n * @constructor\n * @param {onnx.TensorShapeProto.IDimension=} [properties] Properties to set\n */\n function Dimension(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Dimension dimValue.\n * @member {number|Long|null|undefined} dimValue\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Dimension.prototype.dimValue = null;\n\n /**\n * Dimension dimParam.\n * @member {string|null|undefined} dimParam\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Dimension.prototype.dimParam = null;\n\n /**\n * Dimension denotation.\n * @member {string} denotation\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Dimension.prototype.denotation = \"\";\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Dimension value.\n * @member {\"dimValue\"|\"dimParam\"|undefined} value\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Object.defineProperty(Dimension.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"dimValue\", \"dimParam\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Creates a new Dimension instance using the specified properties.\n * @function create\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.IDimension=} [properties] Properties to set\n * @returns {onnx.TensorShapeProto.Dimension} Dimension instance\n */\n Dimension.create = function create(properties) {\n return new Dimension(properties);\n };\n\n /**\n * Encodes the specified Dimension message. Does not implicitly {@link onnx.TensorShapeProto.Dimension.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.IDimension} message Dimension message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Dimension.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dimValue != null && Object.hasOwnProperty.call(message, \"dimValue\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int64(message.dimValue);\n if (message.dimParam != null && Object.hasOwnProperty.call(message, \"dimParam\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.dimParam);\n if (message.denotation != null && Object.hasOwnProperty.call(message, \"denotation\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.denotation);\n return writer;\n };\n\n /**\n * Encodes the specified Dimension message, length delimited. Does not implicitly {@link onnx.TensorShapeProto.Dimension.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.IDimension} message Dimension message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Dimension.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Dimension message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorShapeProto.Dimension} Dimension\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Dimension.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TensorShapeProto.Dimension();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.dimValue = reader.int64();\n break;\n }\n case 2: {\n message.dimParam = reader.string();\n break;\n }\n case 3: {\n message.denotation = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Dimension message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorShapeProto.Dimension} Dimension\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Dimension.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Dimension message.\n * @function verify\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Dimension.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.dimValue != null && message.hasOwnProperty(\"dimValue\")) {\n properties.value = 1;\n if (!$util.isInteger(message.dimValue) && !(message.dimValue && $util.isInteger(message.dimValue.low) && $util.isInteger(message.dimValue.high)))\n return \"dimValue: integer|Long expected\";\n }\n if (message.dimParam != null && message.hasOwnProperty(\"dimParam\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isString(message.dimParam))\n return \"dimParam: string expected\";\n }\n if (message.denotation != null && message.hasOwnProperty(\"denotation\"))\n if (!$util.isString(message.denotation))\n return \"denotation: string expected\";\n return null;\n };\n\n /**\n * Creates a Dimension message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TensorShapeProto.Dimension} Dimension\n */\n Dimension.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorShapeProto.Dimension)\n return object;\n var message = new $root.onnx.TensorShapeProto.Dimension();\n if (object.dimValue != null)\n if ($util.Long)\n (message.dimValue = $util.Long.fromValue(object.dimValue)).unsigned = false;\n else if (typeof object.dimValue === \"string\")\n message.dimValue = parseInt(object.dimValue, 10);\n else if (typeof object.dimValue === \"number\")\n message.dimValue = object.dimValue;\n else if (typeof object.dimValue === \"object\")\n message.dimValue = new $util.LongBits(object.dimValue.low >>> 0, object.dimValue.high >>> 0).toNumber();\n if (object.dimParam != null)\n message.dimParam = String(object.dimParam);\n if (object.denotation != null)\n message.denotation = String(object.denotation);\n return message;\n };\n\n /**\n * Creates a plain object from a Dimension message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.Dimension} message Dimension\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Dimension.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.denotation = \"\";\n if (message.dimValue != null && message.hasOwnProperty(\"dimValue\")) {\n if (typeof message.dimValue === \"number\")\n object.dimValue = options.longs === String ? String(message.dimValue) : message.dimValue;\n else\n object.dimValue = options.longs === String ? $util.Long.prototype.toString.call(message.dimValue) : options.longs === Number ? new $util.LongBits(message.dimValue.low >>> 0, message.dimValue.high >>> 0).toNumber() : message.dimValue;\n if (options.oneofs)\n object.value = \"dimValue\";\n }\n if (message.dimParam != null && message.hasOwnProperty(\"dimParam\")) {\n object.dimParam = message.dimParam;\n if (options.oneofs)\n object.value = \"dimParam\";\n }\n if (message.denotation != null && message.hasOwnProperty(\"denotation\"))\n object.denotation = message.denotation;\n return object;\n };\n\n /**\n * Converts this Dimension to JSON.\n * @function toJSON\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n * @returns {Object.} JSON object\n */\n Dimension.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Dimension\n * @function getTypeUrl\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Dimension.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TensorShapeProto.Dimension\";\n };\n\n return Dimension;\n })();\n\n return TensorShapeProto;\n })();\n\n onnx.TypeProto = (function() {\n\n /**\n * Properties of a TypeProto.\n * @memberof onnx\n * @interface ITypeProto\n * @property {onnx.TypeProto.ITensor|null} [tensorType] TypeProto tensorType\n * @property {onnx.TypeProto.ISequence|null} [sequenceType] TypeProto sequenceType\n * @property {onnx.TypeProto.IMap|null} [mapType] TypeProto mapType\n * @property {onnx.TypeProto.IOptional|null} [optionalType] TypeProto optionalType\n * @property {onnx.TypeProto.ISparseTensor|null} [sparseTensorType] TypeProto sparseTensorType\n * @property {string|null} [denotation] TypeProto denotation\n */\n\n /**\n * Constructs a new TypeProto.\n * @memberof onnx\n * @classdesc Represents a TypeProto.\n * @implements ITypeProto\n * @constructor\n * @param {onnx.ITypeProto=} [properties] Properties to set\n */\n function TypeProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TypeProto tensorType.\n * @member {onnx.TypeProto.ITensor|null|undefined} tensorType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.tensorType = null;\n\n /**\n * TypeProto sequenceType.\n * @member {onnx.TypeProto.ISequence|null|undefined} sequenceType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.sequenceType = null;\n\n /**\n * TypeProto mapType.\n * @member {onnx.TypeProto.IMap|null|undefined} mapType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.mapType = null;\n\n /**\n * TypeProto optionalType.\n * @member {onnx.TypeProto.IOptional|null|undefined} optionalType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.optionalType = null;\n\n /**\n * TypeProto sparseTensorType.\n * @member {onnx.TypeProto.ISparseTensor|null|undefined} sparseTensorType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.sparseTensorType = null;\n\n /**\n * TypeProto denotation.\n * @member {string} denotation\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.denotation = \"\";\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * TypeProto value.\n * @member {\"tensorType\"|\"sequenceType\"|\"mapType\"|\"optionalType\"|\"sparseTensorType\"|undefined} value\n * @memberof onnx.TypeProto\n * @instance\n */\n Object.defineProperty(TypeProto.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"tensorType\", \"sequenceType\", \"mapType\", \"optionalType\", \"sparseTensorType\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Creates a new TypeProto instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.ITypeProto=} [properties] Properties to set\n * @returns {onnx.TypeProto} TypeProto instance\n */\n TypeProto.create = function create(properties) {\n return new TypeProto(properties);\n };\n\n /**\n * Encodes the specified TypeProto message. Does not implicitly {@link onnx.TypeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.ITypeProto} message TypeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TypeProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.tensorType != null && Object.hasOwnProperty.call(message, \"tensorType\"))\n $root.onnx.TypeProto.Tensor.encode(message.tensorType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.sequenceType != null && Object.hasOwnProperty.call(message, \"sequenceType\"))\n $root.onnx.TypeProto.Sequence.encode(message.sequenceType, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.mapType != null && Object.hasOwnProperty.call(message, \"mapType\"))\n $root.onnx.TypeProto.Map.encode(message.mapType, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.denotation != null && Object.hasOwnProperty.call(message, \"denotation\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.denotation);\n if (message.sparseTensorType != null && Object.hasOwnProperty.call(message, \"sparseTensorType\"))\n $root.onnx.TypeProto.SparseTensor.encode(message.sparseTensorType, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.optionalType != null && Object.hasOwnProperty.call(message, \"optionalType\"))\n $root.onnx.TypeProto.Optional.encode(message.optionalType, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TypeProto message, length delimited. Does not implicitly {@link onnx.TypeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.ITypeProto} message TypeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TypeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TypeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto} TypeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TypeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TypeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.tensorType = $root.onnx.TypeProto.Tensor.decode(reader, reader.uint32());\n break;\n }\n case 4: {\n message.sequenceType = $root.onnx.TypeProto.Sequence.decode(reader, reader.uint32());\n break;\n }\n case 5: {\n message.mapType = $root.onnx.TypeProto.Map.decode(reader, reader.uint32());\n break;\n }\n case 9: {\n message.optionalType = $root.onnx.TypeProto.Optional.decode(reader, reader.uint32());\n break;\n }\n case 8: {\n message.sparseTensorType = $root.onnx.TypeProto.SparseTensor.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.denotation = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TypeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto} TypeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TypeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TypeProto message.\n * @function verify\n * @memberof onnx.TypeProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TypeProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.tensorType != null && message.hasOwnProperty(\"tensorType\")) {\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Tensor.verify(message.tensorType);\n if (error)\n return \"tensorType.\" + error;\n }\n }\n if (message.sequenceType != null && message.hasOwnProperty(\"sequenceType\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Sequence.verify(message.sequenceType);\n if (error)\n return \"sequenceType.\" + error;\n }\n }\n if (message.mapType != null && message.hasOwnProperty(\"mapType\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Map.verify(message.mapType);\n if (error)\n return \"mapType.\" + error;\n }\n }\n if (message.optionalType != null && message.hasOwnProperty(\"optionalType\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Optional.verify(message.optionalType);\n if (error)\n return \"optionalType.\" + error;\n }\n }\n if (message.sparseTensorType != null && message.hasOwnProperty(\"sparseTensorType\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.SparseTensor.verify(message.sparseTensorType);\n if (error)\n return \"sparseTensorType.\" + error;\n }\n }\n if (message.denotation != null && message.hasOwnProperty(\"denotation\"))\n if (!$util.isString(message.denotation))\n return \"denotation: string expected\";\n return null;\n };\n\n /**\n * Creates a TypeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TypeProto} TypeProto\n */\n TypeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto)\n return object;\n var message = new $root.onnx.TypeProto();\n if (object.tensorType != null) {\n if (typeof object.tensorType !== \"object\")\n throw TypeError(\".onnx.TypeProto.tensorType: object expected\");\n message.tensorType = $root.onnx.TypeProto.Tensor.fromObject(object.tensorType);\n }\n if (object.sequenceType != null) {\n if (typeof object.sequenceType !== \"object\")\n throw TypeError(\".onnx.TypeProto.sequenceType: object expected\");\n message.sequenceType = $root.onnx.TypeProto.Sequence.fromObject(object.sequenceType);\n }\n if (object.mapType != null) {\n if (typeof object.mapType !== \"object\")\n throw TypeError(\".onnx.TypeProto.mapType: object expected\");\n message.mapType = $root.onnx.TypeProto.Map.fromObject(object.mapType);\n }\n if (object.optionalType != null) {\n if (typeof object.optionalType !== \"object\")\n throw TypeError(\".onnx.TypeProto.optionalType: object expected\");\n message.optionalType = $root.onnx.TypeProto.Optional.fromObject(object.optionalType);\n }\n if (object.sparseTensorType != null) {\n if (typeof object.sparseTensorType !== \"object\")\n throw TypeError(\".onnx.TypeProto.sparseTensorType: object expected\");\n message.sparseTensorType = $root.onnx.TypeProto.SparseTensor.fromObject(object.sparseTensorType);\n }\n if (object.denotation != null)\n message.denotation = String(object.denotation);\n return message;\n };\n\n /**\n * Creates a plain object from a TypeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.TypeProto} message TypeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TypeProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.denotation = \"\";\n if (message.tensorType != null && message.hasOwnProperty(\"tensorType\")) {\n object.tensorType = $root.onnx.TypeProto.Tensor.toObject(message.tensorType, options);\n if (options.oneofs)\n object.value = \"tensorType\";\n }\n if (message.sequenceType != null && message.hasOwnProperty(\"sequenceType\")) {\n object.sequenceType = $root.onnx.TypeProto.Sequence.toObject(message.sequenceType, options);\n if (options.oneofs)\n object.value = \"sequenceType\";\n }\n if (message.mapType != null && message.hasOwnProperty(\"mapType\")) {\n object.mapType = $root.onnx.TypeProto.Map.toObject(message.mapType, options);\n if (options.oneofs)\n object.value = \"mapType\";\n }\n if (message.denotation != null && message.hasOwnProperty(\"denotation\"))\n object.denotation = message.denotation;\n if (message.sparseTensorType != null && message.hasOwnProperty(\"sparseTensorType\")) {\n object.sparseTensorType = $root.onnx.TypeProto.SparseTensor.toObject(message.sparseTensorType, options);\n if (options.oneofs)\n object.value = \"sparseTensorType\";\n }\n if (message.optionalType != null && message.hasOwnProperty(\"optionalType\")) {\n object.optionalType = $root.onnx.TypeProto.Optional.toObject(message.optionalType, options);\n if (options.oneofs)\n object.value = \"optionalType\";\n }\n return object;\n };\n\n /**\n * Converts this TypeProto to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto\n * @instance\n * @returns {Object.} JSON object\n */\n TypeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TypeProto\n * @function getTypeUrl\n * @memberof onnx.TypeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TypeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TypeProto\";\n };\n\n TypeProto.Tensor = (function() {\n\n /**\n * Properties of a Tensor.\n * @memberof onnx.TypeProto\n * @interface ITensor\n * @property {number|null} [elemType] Tensor elemType\n * @property {onnx.ITensorShapeProto|null} [shape] Tensor shape\n */\n\n /**\n * Constructs a new Tensor.\n * @memberof onnx.TypeProto\n * @classdesc Represents a Tensor.\n * @implements ITensor\n * @constructor\n * @param {onnx.TypeProto.ITensor=} [properties] Properties to set\n */\n function Tensor(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Tensor elemType.\n * @member {number} elemType\n * @memberof onnx.TypeProto.Tensor\n * @instance\n */\n Tensor.prototype.elemType = 0;\n\n /**\n * Tensor shape.\n * @member {onnx.ITensorShapeProto|null|undefined} shape\n * @memberof onnx.TypeProto.Tensor\n * @instance\n */\n Tensor.prototype.shape = null;\n\n /**\n * Creates a new Tensor instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.ITensor=} [properties] Properties to set\n * @returns {onnx.TypeProto.Tensor} Tensor instance\n */\n Tensor.create = function create(properties) {\n return new Tensor(properties);\n };\n\n /**\n * Encodes the specified Tensor message. Does not implicitly {@link onnx.TypeProto.Tensor.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.ITensor} message Tensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Tensor.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, \"elemType\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.elemType);\n if (message.shape != null && Object.hasOwnProperty.call(message, \"shape\"))\n $root.onnx.TensorShapeProto.encode(message.shape, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Tensor message, length delimited. Does not implicitly {@link onnx.TypeProto.Tensor.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.ITensor} message Tensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Tensor.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Tensor message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Tensor} Tensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Tensor.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TypeProto.Tensor();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = reader.int32();\n break;\n }\n case 2: {\n message.shape = $root.onnx.TensorShapeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Tensor message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Tensor} Tensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Tensor.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Tensor message.\n * @function verify\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Tensor.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.elemType != null && message.hasOwnProperty(\"elemType\"))\n if (!$util.isInteger(message.elemType))\n return \"elemType: integer expected\";\n if (message.shape != null && message.hasOwnProperty(\"shape\")) {\n var error = $root.onnx.TensorShapeProto.verify(message.shape);\n if (error)\n return \"shape.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a Tensor message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TypeProto.Tensor} Tensor\n */\n Tensor.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Tensor)\n return object;\n var message = new $root.onnx.TypeProto.Tensor();\n if (object.elemType != null)\n message.elemType = object.elemType | 0;\n if (object.shape != null) {\n if (typeof object.shape !== \"object\")\n throw TypeError(\".onnx.TypeProto.Tensor.shape: object expected\");\n message.shape = $root.onnx.TensorShapeProto.fromObject(object.shape);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Tensor message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.Tensor} message Tensor\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Tensor.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.elemType = 0;\n object.shape = null;\n }\n if (message.elemType != null && message.hasOwnProperty(\"elemType\"))\n object.elemType = message.elemType;\n if (message.shape != null && message.hasOwnProperty(\"shape\"))\n object.shape = $root.onnx.TensorShapeProto.toObject(message.shape, options);\n return object;\n };\n\n /**\n * Converts this Tensor to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Tensor\n * @instance\n * @returns {Object.} JSON object\n */\n Tensor.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Tensor\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Tensor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TypeProto.Tensor\";\n };\n\n return Tensor;\n })();\n\n TypeProto.Sequence = (function() {\n\n /**\n * Properties of a Sequence.\n * @memberof onnx.TypeProto\n * @interface ISequence\n * @property {onnx.ITypeProto|null} [elemType] Sequence elemType\n */\n\n /**\n * Constructs a new Sequence.\n * @memberof onnx.TypeProto\n * @classdesc Represents a Sequence.\n * @implements ISequence\n * @constructor\n * @param {onnx.TypeProto.ISequence=} [properties] Properties to set\n */\n function Sequence(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Sequence elemType.\n * @member {onnx.ITypeProto|null|undefined} elemType\n * @memberof onnx.TypeProto.Sequence\n * @instance\n */\n Sequence.prototype.elemType = null;\n\n /**\n * Creates a new Sequence instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.ISequence=} [properties] Properties to set\n * @returns {onnx.TypeProto.Sequence} Sequence instance\n */\n Sequence.create = function create(properties) {\n return new Sequence(properties);\n };\n\n /**\n * Encodes the specified Sequence message. Does not implicitly {@link onnx.TypeProto.Sequence.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.ISequence} message Sequence message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sequence.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, \"elemType\"))\n $root.onnx.TypeProto.encode(message.elemType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Sequence message, length delimited. Does not implicitly {@link onnx.TypeProto.Sequence.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.ISequence} message Sequence message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sequence.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Sequence message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Sequence} Sequence\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sequence.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TypeProto.Sequence();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Sequence message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Sequence} Sequence\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sequence.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Sequence message.\n * @function verify\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Sequence.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.elemType != null && message.hasOwnProperty(\"elemType\")) {\n var error = $root.onnx.TypeProto.verify(message.elemType);\n if (error)\n return \"elemType.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a Sequence message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TypeProto.Sequence} Sequence\n */\n Sequence.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Sequence)\n return object;\n var message = new $root.onnx.TypeProto.Sequence();\n if (object.elemType != null) {\n if (typeof object.elemType !== \"object\")\n throw TypeError(\".onnx.TypeProto.Sequence.elemType: object expected\");\n message.elemType = $root.onnx.TypeProto.fromObject(object.elemType);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Sequence message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.Sequence} message Sequence\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Sequence.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.elemType = null;\n if (message.elemType != null && message.hasOwnProperty(\"elemType\"))\n object.elemType = $root.onnx.TypeProto.toObject(message.elemType, options);\n return object;\n };\n\n /**\n * Converts this Sequence to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Sequence\n * @instance\n * @returns {Object.} JSON object\n */\n Sequence.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Sequence\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Sequence.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TypeProto.Sequence\";\n };\n\n return Sequence;\n })();\n\n TypeProto.Map = (function() {\n\n /**\n * Properties of a Map.\n * @memberof onnx.TypeProto\n * @interface IMap\n * @property {number|null} [keyType] Map keyType\n * @property {onnx.ITypeProto|null} [valueType] Map valueType\n */\n\n /**\n * Constructs a new Map.\n * @memberof onnx.TypeProto\n * @classdesc Represents a Map.\n * @implements IMap\n * @constructor\n * @param {onnx.TypeProto.IMap=} [properties] Properties to set\n */\n function Map(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Map keyType.\n * @member {number} keyType\n * @memberof onnx.TypeProto.Map\n * @instance\n */\n Map.prototype.keyType = 0;\n\n /**\n * Map valueType.\n * @member {onnx.ITypeProto|null|undefined} valueType\n * @memberof onnx.TypeProto.Map\n * @instance\n */\n Map.prototype.valueType = null;\n\n /**\n * Creates a new Map instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.IMap=} [properties] Properties to set\n * @returns {onnx.TypeProto.Map} Map instance\n */\n Map.create = function create(properties) {\n return new Map(properties);\n };\n\n /**\n * Encodes the specified Map message. Does not implicitly {@link onnx.TypeProto.Map.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.IMap} message Map message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Map.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.keyType != null && Object.hasOwnProperty.call(message, \"keyType\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.keyType);\n if (message.valueType != null && Object.hasOwnProperty.call(message, \"valueType\"))\n $root.onnx.TypeProto.encode(message.valueType, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Map message, length delimited. Does not implicitly {@link onnx.TypeProto.Map.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.IMap} message Map message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Map.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Map message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Map} Map\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Map.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TypeProto.Map();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.keyType = reader.int32();\n break;\n }\n case 2: {\n message.valueType = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Map message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Map} Map\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Map.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Map message.\n * @function verify\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Map.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.keyType != null && message.hasOwnProperty(\"keyType\"))\n if (!$util.isInteger(message.keyType))\n return \"keyType: integer expected\";\n if (message.valueType != null && message.hasOwnProperty(\"valueType\")) {\n var error = $root.onnx.TypeProto.verify(message.valueType);\n if (error)\n return \"valueType.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a Map message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TypeProto.Map} Map\n */\n Map.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Map)\n return object;\n var message = new $root.onnx.TypeProto.Map();\n if (object.keyType != null)\n message.keyType = object.keyType | 0;\n if (object.valueType != null) {\n if (typeof object.valueType !== \"object\")\n throw TypeError(\".onnx.TypeProto.Map.valueType: object expected\");\n message.valueType = $root.onnx.TypeProto.fromObject(object.valueType);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Map message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.Map} message Map\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Map.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.keyType = 0;\n object.valueType = null;\n }\n if (message.keyType != null && message.hasOwnProperty(\"keyType\"))\n object.keyType = message.keyType;\n if (message.valueType != null && message.hasOwnProperty(\"valueType\"))\n object.valueType = $root.onnx.TypeProto.toObject(message.valueType, options);\n return object;\n };\n\n /**\n * Converts this Map to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Map\n * @instance\n * @returns {Object.} JSON object\n */\n Map.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Map\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Map.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TypeProto.Map\";\n };\n\n return Map;\n })();\n\n TypeProto.Optional = (function() {\n\n /**\n * Properties of an Optional.\n * @memberof onnx.TypeProto\n * @interface IOptional\n * @property {onnx.ITypeProto|null} [elemType] Optional elemType\n */\n\n /**\n * Constructs a new Optional.\n * @memberof onnx.TypeProto\n * @classdesc Represents an Optional.\n * @implements IOptional\n * @constructor\n * @param {onnx.TypeProto.IOptional=} [properties] Properties to set\n */\n function Optional(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Optional elemType.\n * @member {onnx.ITypeProto|null|undefined} elemType\n * @memberof onnx.TypeProto.Optional\n * @instance\n */\n Optional.prototype.elemType = null;\n\n /**\n * Creates a new Optional instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.IOptional=} [properties] Properties to set\n * @returns {onnx.TypeProto.Optional} Optional instance\n */\n Optional.create = function create(properties) {\n return new Optional(properties);\n };\n\n /**\n * Encodes the specified Optional message. Does not implicitly {@link onnx.TypeProto.Optional.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.IOptional} message Optional message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Optional.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, \"elemType\"))\n $root.onnx.TypeProto.encode(message.elemType, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Optional message, length delimited. Does not implicitly {@link onnx.TypeProto.Optional.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.IOptional} message Optional message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Optional.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Optional message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Optional} Optional\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Optional.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TypeProto.Optional();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Optional message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Optional} Optional\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Optional.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Optional message.\n * @function verify\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Optional.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.elemType != null && message.hasOwnProperty(\"elemType\")) {\n var error = $root.onnx.TypeProto.verify(message.elemType);\n if (error)\n return \"elemType.\" + error;\n }\n return null;\n };\n\n /**\n * Creates an Optional message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TypeProto.Optional} Optional\n */\n Optional.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Optional)\n return object;\n var message = new $root.onnx.TypeProto.Optional();\n if (object.elemType != null) {\n if (typeof object.elemType !== \"object\")\n throw TypeError(\".onnx.TypeProto.Optional.elemType: object expected\");\n message.elemType = $root.onnx.TypeProto.fromObject(object.elemType);\n }\n return message;\n };\n\n /**\n * Creates a plain object from an Optional message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.Optional} message Optional\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Optional.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.elemType = null;\n if (message.elemType != null && message.hasOwnProperty(\"elemType\"))\n object.elemType = $root.onnx.TypeProto.toObject(message.elemType, options);\n return object;\n };\n\n /**\n * Converts this Optional to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Optional\n * @instance\n * @returns {Object.} JSON object\n */\n Optional.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Optional\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Optional.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TypeProto.Optional\";\n };\n\n return Optional;\n })();\n\n TypeProto.SparseTensor = (function() {\n\n /**\n * Properties of a SparseTensor.\n * @memberof onnx.TypeProto\n * @interface ISparseTensor\n * @property {number|null} [elemType] SparseTensor elemType\n * @property {onnx.ITensorShapeProto|null} [shape] SparseTensor shape\n */\n\n /**\n * Constructs a new SparseTensor.\n * @memberof onnx.TypeProto\n * @classdesc Represents a SparseTensor.\n * @implements ISparseTensor\n * @constructor\n * @param {onnx.TypeProto.ISparseTensor=} [properties] Properties to set\n */\n function SparseTensor(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SparseTensor elemType.\n * @member {number} elemType\n * @memberof onnx.TypeProto.SparseTensor\n * @instance\n */\n SparseTensor.prototype.elemType = 0;\n\n /**\n * SparseTensor shape.\n * @member {onnx.ITensorShapeProto|null|undefined} shape\n * @memberof onnx.TypeProto.SparseTensor\n * @instance\n */\n SparseTensor.prototype.shape = null;\n\n /**\n * Creates a new SparseTensor instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.ISparseTensor=} [properties] Properties to set\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor instance\n */\n SparseTensor.create = function create(properties) {\n return new SparseTensor(properties);\n };\n\n /**\n * Encodes the specified SparseTensor message. Does not implicitly {@link onnx.TypeProto.SparseTensor.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.ISparseTensor} message SparseTensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensor.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, \"elemType\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.elemType);\n if (message.shape != null && Object.hasOwnProperty.call(message, \"shape\"))\n $root.onnx.TensorShapeProto.encode(message.shape, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SparseTensor message, length delimited. Does not implicitly {@link onnx.TypeProto.SparseTensor.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.ISparseTensor} message SparseTensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensor.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SparseTensor message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensor.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.TypeProto.SparseTensor();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = reader.int32();\n break;\n }\n case 2: {\n message.shape = $root.onnx.TensorShapeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SparseTensor message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensor.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SparseTensor message.\n * @function verify\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SparseTensor.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.elemType != null && message.hasOwnProperty(\"elemType\"))\n if (!$util.isInteger(message.elemType))\n return \"elemType: integer expected\";\n if (message.shape != null && message.hasOwnProperty(\"shape\")) {\n var error = $root.onnx.TensorShapeProto.verify(message.shape);\n if (error)\n return \"shape.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a SparseTensor message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor\n */\n SparseTensor.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.SparseTensor)\n return object;\n var message = new $root.onnx.TypeProto.SparseTensor();\n if (object.elemType != null)\n message.elemType = object.elemType | 0;\n if (object.shape != null) {\n if (typeof object.shape !== \"object\")\n throw TypeError(\".onnx.TypeProto.SparseTensor.shape: object expected\");\n message.shape = $root.onnx.TensorShapeProto.fromObject(object.shape);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SparseTensor message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.SparseTensor} message SparseTensor\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SparseTensor.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.elemType = 0;\n object.shape = null;\n }\n if (message.elemType != null && message.hasOwnProperty(\"elemType\"))\n object.elemType = message.elemType;\n if (message.shape != null && message.hasOwnProperty(\"shape\"))\n object.shape = $root.onnx.TensorShapeProto.toObject(message.shape, options);\n return object;\n };\n\n /**\n * Converts this SparseTensor to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.SparseTensor\n * @instance\n * @returns {Object.} JSON object\n */\n SparseTensor.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SparseTensor\n * @function getTypeUrl\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SparseTensor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.TypeProto.SparseTensor\";\n };\n\n return SparseTensor;\n })();\n\n return TypeProto;\n })();\n\n onnx.OperatorSetIdProto = (function() {\n\n /**\n * Properties of an OperatorSetIdProto.\n * @memberof onnx\n * @interface IOperatorSetIdProto\n * @property {string|null} [domain] OperatorSetIdProto domain\n * @property {number|Long|null} [version] OperatorSetIdProto version\n */\n\n /**\n * Constructs a new OperatorSetIdProto.\n * @memberof onnx\n * @classdesc Represents an OperatorSetIdProto.\n * @implements IOperatorSetIdProto\n * @constructor\n * @param {onnx.IOperatorSetIdProto=} [properties] Properties to set\n */\n function OperatorSetIdProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * OperatorSetIdProto domain.\n * @member {string} domain\n * @memberof onnx.OperatorSetIdProto\n * @instance\n */\n OperatorSetIdProto.prototype.domain = \"\";\n\n /**\n * OperatorSetIdProto version.\n * @member {number|Long} version\n * @memberof onnx.OperatorSetIdProto\n * @instance\n */\n OperatorSetIdProto.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new OperatorSetIdProto instance using the specified properties.\n * @function create\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.IOperatorSetIdProto=} [properties] Properties to set\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto instance\n */\n OperatorSetIdProto.create = function create(properties) {\n return new OperatorSetIdProto(properties);\n };\n\n /**\n * Encodes the specified OperatorSetIdProto message. Does not implicitly {@link onnx.OperatorSetIdProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.IOperatorSetIdProto} message OperatorSetIdProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n OperatorSetIdProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.domain != null && Object.hasOwnProperty.call(message, \"domain\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.domain);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n return writer;\n };\n\n /**\n * Encodes the specified OperatorSetIdProto message, length delimited. Does not implicitly {@link onnx.OperatorSetIdProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.IOperatorSetIdProto} message OperatorSetIdProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n OperatorSetIdProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an OperatorSetIdProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n OperatorSetIdProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.OperatorSetIdProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.domain = reader.string();\n break;\n }\n case 2: {\n message.version = reader.int64();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an OperatorSetIdProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n OperatorSetIdProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an OperatorSetIdProto message.\n * @function verify\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n OperatorSetIdProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n if (!$util.isString(message.domain))\n return \"domain: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an OperatorSetIdProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto\n */\n OperatorSetIdProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.OperatorSetIdProto)\n return object;\n var message = new $root.onnx.OperatorSetIdProto();\n if (object.domain != null)\n message.domain = String(object.domain);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an OperatorSetIdProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.OperatorSetIdProto} message OperatorSetIdProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n OperatorSetIdProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.domain = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n }\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n object.domain = message.domain;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n return object;\n };\n\n /**\n * Converts this OperatorSetIdProto to JSON.\n * @function toJSON\n * @memberof onnx.OperatorSetIdProto\n * @instance\n * @returns {Object.} JSON object\n */\n OperatorSetIdProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for OperatorSetIdProto\n * @function getTypeUrl\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n OperatorSetIdProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.OperatorSetIdProto\";\n };\n\n return OperatorSetIdProto;\n })();\n\n /**\n * OperatorStatus enum.\n * @name onnx.OperatorStatus\n * @enum {number}\n * @property {number} EXPERIMENTAL=0 EXPERIMENTAL value\n * @property {number} STABLE=1 STABLE value\n */\n onnx.OperatorStatus = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"EXPERIMENTAL\"] = 0;\n values[valuesById[1] = \"STABLE\"] = 1;\n return values;\n })();\n\n onnx.FunctionProto = (function() {\n\n /**\n * Properties of a FunctionProto.\n * @memberof onnx\n * @interface IFunctionProto\n * @property {string|null} [name] FunctionProto name\n * @property {Array.|null} [input] FunctionProto input\n * @property {Array.|null} [output] FunctionProto output\n * @property {Array.|null} [attribute] FunctionProto attribute\n * @property {Array.|null} [attributeProto] FunctionProto attributeProto\n * @property {Array.|null} [node] FunctionProto node\n * @property {string|null} [docString] FunctionProto docString\n * @property {Array.|null} [opsetImport] FunctionProto opsetImport\n * @property {string|null} [domain] FunctionProto domain\n */\n\n /**\n * Constructs a new FunctionProto.\n * @memberof onnx\n * @classdesc Represents a FunctionProto.\n * @implements IFunctionProto\n * @constructor\n * @param {onnx.IFunctionProto=} [properties] Properties to set\n */\n function FunctionProto(properties) {\n this.input = [];\n this.output = [];\n this.attribute = [];\n this.attributeProto = [];\n this.node = [];\n this.opsetImport = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * FunctionProto name.\n * @member {string} name\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.name = \"\";\n\n /**\n * FunctionProto input.\n * @member {Array.} input\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.input = $util.emptyArray;\n\n /**\n * FunctionProto output.\n * @member {Array.} output\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.output = $util.emptyArray;\n\n /**\n * FunctionProto attribute.\n * @member {Array.} attribute\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.attribute = $util.emptyArray;\n\n /**\n * FunctionProto attributeProto.\n * @member {Array.} attributeProto\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.attributeProto = $util.emptyArray;\n\n /**\n * FunctionProto node.\n * @member {Array.} node\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.node = $util.emptyArray;\n\n /**\n * FunctionProto docString.\n * @member {string} docString\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.docString = \"\";\n\n /**\n * FunctionProto opsetImport.\n * @member {Array.} opsetImport\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.opsetImport = $util.emptyArray;\n\n /**\n * FunctionProto domain.\n * @member {string} domain\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.domain = \"\";\n\n /**\n * Creates a new FunctionProto instance using the specified properties.\n * @function create\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.IFunctionProto=} [properties] Properties to set\n * @returns {onnx.FunctionProto} FunctionProto instance\n */\n FunctionProto.create = function create(properties) {\n return new FunctionProto(properties);\n };\n\n /**\n * Encodes the specified FunctionProto message. Does not implicitly {@link onnx.FunctionProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.IFunctionProto} message FunctionProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n FunctionProto.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.input != null && message.input.length)\n for (var i = 0; i < message.input.length; ++i)\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.input[i]);\n if (message.output != null && message.output.length)\n for (var i = 0; i < message.output.length; ++i)\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.output[i]);\n if (message.attribute != null && message.attribute.length)\n for (var i = 0; i < message.attribute.length; ++i)\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.attribute[i]);\n if (message.node != null && message.node.length)\n for (var i = 0; i < message.node.length; ++i)\n $root.onnx.NodeProto.encode(message.node[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, \"docString\"))\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.docString);\n if (message.opsetImport != null && message.opsetImport.length)\n for (var i = 0; i < message.opsetImport.length; ++i)\n $root.onnx.OperatorSetIdProto.encode(message.opsetImport[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.domain != null && Object.hasOwnProperty.call(message, \"domain\"))\n writer.uint32(/* id 10, wireType 2 =*/82).string(message.domain);\n if (message.attributeProto != null && message.attributeProto.length)\n for (var i = 0; i < message.attributeProto.length; ++i)\n $root.onnx.AttributeProto.encode(message.attributeProto[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified FunctionProto message, length delimited. Does not implicitly {@link onnx.FunctionProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.IFunctionProto} message FunctionProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n FunctionProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a FunctionProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.FunctionProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.FunctionProto} FunctionProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n FunctionProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.onnx.FunctionProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 4: {\n if (!(message.input && message.input.length))\n message.input = [];\n message.input.push(reader.string());\n break;\n }\n case 5: {\n if (!(message.output && message.output.length))\n message.output = [];\n message.output.push(reader.string());\n break;\n }\n case 6: {\n if (!(message.attribute && message.attribute.length))\n message.attribute = [];\n message.attribute.push(reader.string());\n break;\n }\n case 11: {\n if (!(message.attributeProto && message.attributeProto.length))\n message.attributeProto = [];\n message.attributeProto.push($root.onnx.AttributeProto.decode(reader, reader.uint32()));\n break;\n }\n case 7: {\n if (!(message.node && message.node.length))\n message.node = [];\n message.node.push($root.onnx.NodeProto.decode(reader, reader.uint32()));\n break;\n }\n case 8: {\n message.docString = reader.string();\n break;\n }\n case 9: {\n if (!(message.opsetImport && message.opsetImport.length))\n message.opsetImport = [];\n message.opsetImport.push($root.onnx.OperatorSetIdProto.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.domain = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a FunctionProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.FunctionProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.FunctionProto} FunctionProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n FunctionProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a FunctionProto message.\n * @function verify\n * @memberof onnx.FunctionProto\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n FunctionProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.input != null && message.hasOwnProperty(\"input\")) {\n if (!Array.isArray(message.input))\n return \"input: array expected\";\n for (var i = 0; i < message.input.length; ++i)\n if (!$util.isString(message.input[i]))\n return \"input: string[] expected\";\n }\n if (message.output != null && message.hasOwnProperty(\"output\")) {\n if (!Array.isArray(message.output))\n return \"output: array expected\";\n for (var i = 0; i < message.output.length; ++i)\n if (!$util.isString(message.output[i]))\n return \"output: string[] expected\";\n }\n if (message.attribute != null && message.hasOwnProperty(\"attribute\")) {\n if (!Array.isArray(message.attribute))\n return \"attribute: array expected\";\n for (var i = 0; i < message.attribute.length; ++i)\n if (!$util.isString(message.attribute[i]))\n return \"attribute: string[] expected\";\n }\n if (message.attributeProto != null && message.hasOwnProperty(\"attributeProto\")) {\n if (!Array.isArray(message.attributeProto))\n return \"attributeProto: array expected\";\n for (var i = 0; i < message.attributeProto.length; ++i) {\n var error = $root.onnx.AttributeProto.verify(message.attributeProto[i]);\n if (error)\n return \"attributeProto.\" + error;\n }\n }\n if (message.node != null && message.hasOwnProperty(\"node\")) {\n if (!Array.isArray(message.node))\n return \"node: array expected\";\n for (var i = 0; i < message.node.length; ++i) {\n var error = $root.onnx.NodeProto.verify(message.node[i]);\n if (error)\n return \"node.\" + error;\n }\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n if (!$util.isString(message.docString))\n return \"docString: string expected\";\n if (message.opsetImport != null && message.hasOwnProperty(\"opsetImport\")) {\n if (!Array.isArray(message.opsetImport))\n return \"opsetImport: array expected\";\n for (var i = 0; i < message.opsetImport.length; ++i) {\n var error = $root.onnx.OperatorSetIdProto.verify(message.opsetImport[i]);\n if (error)\n return \"opsetImport.\" + error;\n }\n }\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n if (!$util.isString(message.domain))\n return \"domain: string expected\";\n return null;\n };\n\n /**\n * Creates a FunctionProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.FunctionProto\n * @static\n * @param {Object.} object Plain object\n * @returns {onnx.FunctionProto} FunctionProto\n */\n FunctionProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.FunctionProto)\n return object;\n var message = new $root.onnx.FunctionProto();\n if (object.name != null)\n message.name = String(object.name);\n if (object.input) {\n if (!Array.isArray(object.input))\n throw TypeError(\".onnx.FunctionProto.input: array expected\");\n message.input = [];\n for (var i = 0; i < object.input.length; ++i)\n message.input[i] = String(object.input[i]);\n }\n if (object.output) {\n if (!Array.isArray(object.output))\n throw TypeError(\".onnx.FunctionProto.output: array expected\");\n message.output = [];\n for (var i = 0; i < object.output.length; ++i)\n message.output[i] = String(object.output[i]);\n }\n if (object.attribute) {\n if (!Array.isArray(object.attribute))\n throw TypeError(\".onnx.FunctionProto.attribute: array expected\");\n message.attribute = [];\n for (var i = 0; i < object.attribute.length; ++i)\n message.attribute[i] = String(object.attribute[i]);\n }\n if (object.attributeProto) {\n if (!Array.isArray(object.attributeProto))\n throw TypeError(\".onnx.FunctionProto.attributeProto: array expected\");\n message.attributeProto = [];\n for (var i = 0; i < object.attributeProto.length; ++i) {\n if (typeof object.attributeProto[i] !== \"object\")\n throw TypeError(\".onnx.FunctionProto.attributeProto: object expected\");\n message.attributeProto[i] = $root.onnx.AttributeProto.fromObject(object.attributeProto[i]);\n }\n }\n if (object.node) {\n if (!Array.isArray(object.node))\n throw TypeError(\".onnx.FunctionProto.node: array expected\");\n message.node = [];\n for (var i = 0; i < object.node.length; ++i) {\n if (typeof object.node[i] !== \"object\")\n throw TypeError(\".onnx.FunctionProto.node: object expected\");\n message.node[i] = $root.onnx.NodeProto.fromObject(object.node[i]);\n }\n }\n if (object.docString != null)\n message.docString = String(object.docString);\n if (object.opsetImport) {\n if (!Array.isArray(object.opsetImport))\n throw TypeError(\".onnx.FunctionProto.opsetImport: array expected\");\n message.opsetImport = [];\n for (var i = 0; i < object.opsetImport.length; ++i) {\n if (typeof object.opsetImport[i] !== \"object\")\n throw TypeError(\".onnx.FunctionProto.opsetImport: object expected\");\n message.opsetImport[i] = $root.onnx.OperatorSetIdProto.fromObject(object.opsetImport[i]);\n }\n }\n if (object.domain != null)\n message.domain = String(object.domain);\n return message;\n };\n\n /**\n * Creates a plain object from a FunctionProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.FunctionProto} message FunctionProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n FunctionProto.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.input = [];\n object.output = [];\n object.attribute = [];\n object.node = [];\n object.opsetImport = [];\n object.attributeProto = [];\n }\n if (options.defaults) {\n object.name = \"\";\n object.docString = \"\";\n object.domain = \"\";\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.input && message.input.length) {\n object.input = [];\n for (var j = 0; j < message.input.length; ++j)\n object.input[j] = message.input[j];\n }\n if (message.output && message.output.length) {\n object.output = [];\n for (var j = 0; j < message.output.length; ++j)\n object.output[j] = message.output[j];\n }\n if (message.attribute && message.attribute.length) {\n object.attribute = [];\n for (var j = 0; j < message.attribute.length; ++j)\n object.attribute[j] = message.attribute[j];\n }\n if (message.node && message.node.length) {\n object.node = [];\n for (var j = 0; j < message.node.length; ++j)\n object.node[j] = $root.onnx.NodeProto.toObject(message.node[j], options);\n }\n if (message.docString != null && message.hasOwnProperty(\"docString\"))\n object.docString = message.docString;\n if (message.opsetImport && message.opsetImport.length) {\n object.opsetImport = [];\n for (var j = 0; j < message.opsetImport.length; ++j)\n object.opsetImport[j] = $root.onnx.OperatorSetIdProto.toObject(message.opsetImport[j], options);\n }\n if (message.domain != null && message.hasOwnProperty(\"domain\"))\n object.domain = message.domain;\n if (message.attributeProto && message.attributeProto.length) {\n object.attributeProto = [];\n for (var j = 0; j < message.attributeProto.length; ++j)\n object.attributeProto[j] = $root.onnx.AttributeProto.toObject(message.attributeProto[j], options);\n }\n return object;\n };\n\n /**\n * Converts this FunctionProto to JSON.\n * @function toJSON\n * @memberof onnx.FunctionProto\n * @instance\n * @returns {Object.} JSON object\n */\n FunctionProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for FunctionProto\n * @function getTypeUrl\n * @memberof onnx.FunctionProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n FunctionProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/onnx.FunctionProto\";\n };\n\n return FunctionProto;\n })();\n\n return onnx;\n})();\n\nmodule.exports = $root;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {flatbuffers} from 'flatbuffers';\nimport Long from 'long';\n\nimport {Graph} from './graph';\nimport {onnxruntime} from './ort-schema/flatbuffers/ort-generated';\nimport {onnx} from './ort-schema/protobuf/onnx';\nimport {Tensor} from './tensor';\n\n// check the inputs shape before running an OP.\n// return true when the inputs pass the check\n// return false when the inputs do not fit the requirement\n// throw exception when fatal error or not implemented\nexport function checkInputsShape(inputs: Tensor[], ...expectedDimensions: number[]): boolean {\n if (!inputs || inputs.length !== expectedDimensions.length) {\n return false;\n }\n for (let i = 0; i < inputs.length; i++) {\n if (!inputs[i].dims || inputs[i].dims.length !== expectedDimensions[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Evaluates the given expression and asserts error message if condition is unmet.\nexport function assert(expr: boolean, msg: () => string) {\n if (!expr) {\n throw new Error(typeof msg === 'string' ? msg : msg());\n }\n}\n\nexport class ArrayUtil {\n /**\n * Verifies if 2 input arrays contain the same elements.\n * @param n1 Array 1\n * @param n2 Array 2\n * @returns Whether these 2 are equal\n */\n static arraysEqual(\n n1: readonly number[]|Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Uint8ClampedArray|\n Float32Array|Float64Array,\n n2: readonly number[]|Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Uint8ClampedArray|\n Float32Array|Float64Array) {\n if (n1.length !== n2.length) {\n return false;\n }\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n return false;\n }\n }\n return true;\n }\n}\n\nexport class MatMulUtil {\n /**\n * Fix the input shapes for MatMul operation if they need fixing\n * @param dimsA The shape of tensor A. Should be an array of positive integers\n * @param dimsB The shape of tensor B. Should be an array of positive integers\n * @returns A tuple containing the preprocessed input shapes as required by ONNX specifications\n */\n static preprocessInputShapes(dimsA: readonly number[], dimsB: readonly number[]):\n [readonly number[], readonly number[]] {\n // If the first argument is 1-D, it is promoted to a matrix by prepending\n // a 1 to its dimensions. After matrix multiplication the prepended 1 is\n // removed.\n const a = (dimsA.length === 1) ? [1, dimsA[0]] : dimsA;\n\n // If the second argument is 1-D, it is promoted to a matrix by appending\n // a 1 to its dimensions. After matrix multiplication the appended 1 is\n // removed.\n const b = (dimsB.length === 1) ? [dimsB[0], 1] : dimsB;\n\n return [a, b];\n }\n\n /**\n * Fix the output shape computed for MatMul operation if it needs fixing\n * @param outputShape The computed outputShape. Should be an array (atleast of length 2) of positive integers.\n * This will be mutated.\n * @param aRank The rank of tensor A.\n * @param bRank The rank of tensor B.\n */\n static postprocessOutputShape(outputShape: number[], aRank: number, bRank: number) {\n // Remove prepended dimension if first input is 1d\n if (aRank === 1) {\n // outputShape = outputShape.slice(0, outputShape.length - 2).concat(outputShape.slice(outputShape.length - 1));\n outputShape.splice(outputShape.length - 2, 1);\n }\n // Remove appended dimension if second input is 1d\n if (bRank === 1) {\n outputShape.pop();\n }\n }\n\n /**\n * Calculate the expected shape when matrix multiplication\n * @param a The shape of tensor A. Should be a tuple of 2 positive integers\n * @param b The shape of tensor B. Should be a tuple of 2 positive integers\n * @returns The expected shape of the result, or undefined if N/A\n */\n static calcMatMulShape(a: [number, number], b: [number, number]): [number, number]|undefined {\n return (a[1] !== b[0]) ? undefined : [a[0], b[1]];\n }\n}\n\nexport class BroadcastUtil {\n /**\n * Calculate the expected shape when broadcasting 2 tensors\n * @param a The shape of tensor A. Should be an array of positive integers\n * @param b The shape of tensor B. Should be an array of positive integers\n * @param isMatMul Whether the operation is MatMul\n * @returns The expected shape of the result, or undefined if N/A\n */\n static calcShape(adims: readonly number[], bdims: readonly number[], isMatMul = false): readonly number[]|undefined {\n const arank = adims.length;\n const brank = bdims.length;\n if (arank === 0) {\n return bdims;\n }\n if (brank === 0) {\n return adims;\n }\n const crank = Math.max(adims.length, bdims.length);\n const cdims = new Array(crank);\n\n // calculate the last 2 dimension if it is MatMul\n if (isMatMul) {\n if (arank < 2 || brank < 2) {\n return undefined;\n }\n const cShapeMatMul =\n MatMulUtil.calcMatMulShape([adims[arank - 2], adims[arank - 1]], [bdims[brank - 2], bdims[brank - 1]]);\n if (cShapeMatMul === undefined) {\n return undefined;\n }\n [cdims[crank - 2], cdims[crank - 1]] = cShapeMatMul;\n }\n\n for (let i = isMatMul ? 3 : 1; i <= crank; i++) {\n const aLen = arank - i < 0 ? 1 : adims[arank - i];\n const bLen = brank - i < 0 ? 1 : bdims[brank - i];\n\n if (aLen !== bLen && aLen > 1 && bLen > 1) {\n return undefined;\n }\n cdims[crank - i] = Math.max(aLen, bLen);\n }\n\n return cdims;\n }\n\n /**\n * Given the indices of a broadcasted tensor, calculate the original indices\n * @param broadcastedIndices The given indices of the broadcasted tensor.\n * @param originalShape The original shape of the tensor before broadcas\n * @returns The calculated indices that maps to the original tensor.\n */\n static index(broadcastedIndices: readonly number[], originalShape: readonly number[]): number[] {\n // NOTE 1: we assume the parameter broadcastedIndices is valid. ie. it should have the same\n // length as the broadcasted shape, and for each dimension the index should\n // not be out of range.\n const originalIndices = new Array(originalShape.length);\n BroadcastUtil.fillIndex(broadcastedIndices, originalShape, originalIndices);\n return originalIndices;\n }\n\n /**\n * Given the indices of a broadcasted tensor, calculate the original indices\n * @param broadcastedIndices The given indices of the broadcasted tensor.\n * @param originalShape The original shape of the tensor before broadcast\n * @param originalIndices The mapping of broadcastedIndices to the originalIndices (output parameter - will be\n * mutated).\n */\n static fillIndex(broadcastedIndices: readonly number[], originalShape: readonly number[], originalIndices: number[]) {\n // NOTE 1: we assume the parameter broadcastedIndices is valid. ie. it should have the same length as the\n // broadcasted shape, and for each dimension the index should not be out of range.\n // NOTE 2: we assume the parameter originalIndices has the same length as the originalShape\n const dimOffset = broadcastedIndices.length - originalShape.length;\n for (let i = 0; i < originalShape.length; i++) {\n originalIndices[i] = broadcastedIndices[dimOffset + i] % originalShape[i];\n }\n }\n\n /**\n * Perform the broadcasting operation on the specific operator\n * @param a The input tensor A\n * @param b The input tensor B\n * @param op The operator lambda function\n * @param inplace Whether to write the result back to A.\n * @returns The result tensor, or undefined if input not broadcastable.\n */\n static calc(\n a: Tensor, b: Tensor, op: (a: string|number, b: string|number) => (string | number), inplace: boolean,\n resultType?: Tensor.DataType): Tensor|undefined {\n const outputShape = BroadcastUtil.calcShape(a.dims, b.dims);\n\n if (outputShape) {\n if (inplace && !ShapeUtil.areEqual(outputShape, a.dims)) {\n // B is not broadcastable to A, failed to calculate inplace.\n return undefined;\n }\n\n const size = ShapeUtil.size(outputShape);\n const c = inplace ? a : new Tensor(outputShape, resultType || a.type);\n\n // both inputs are scalars\n if (outputShape.length === 0) {\n c.set([], op(a.get([]) as number, b.get([]) as number));\n }\n\n // atleast one input is a non-scalar\n else {\n const outputIndices = new Array(outputShape.length);\n const originalIndicesA = new Array(a.dims.length);\n const originalIndicesB = new Array(b.dims.length);\n let valA: string|number = 0;\n let valB: string|number = 0;\n let isAScalar = false;\n let isBScalar = false;\n if (a.dims.length === 0) {\n valA = a.get([]) as number;\n isAScalar = true;\n }\n if (b.dims.length === 0) {\n valB = b.get([]) as number;\n isBScalar = true;\n }\n let rest: number;\n for (let i = 0; i < size; i++) {\n // traversal indices\n rest = i;\n for (let j = outputShape.length - 1; j >= 0; j--) {\n outputIndices[j] = rest % outputShape[j];\n rest = Math.floor(rest / outputShape[j]);\n }\n\n if (!isAScalar) {\n // map outputIndices (which is actually broadcasted) to the originalIndices\n BroadcastUtil.fillIndex(outputIndices, a.dims, originalIndicesA);\n valA = a.get(originalIndicesA) as number;\n }\n if (!isBScalar) {\n BroadcastUtil.fillIndex(outputIndices, b.dims, originalIndicesB);\n valB = b.get(originalIndicesB) as number;\n }\n\n c.set(outputIndices, op(valA, valB));\n }\n }\n\n return c;\n }\n\n return undefined;\n }\n\n /**\n * Determine if a shape is unidirectional broadcastable to another shape\n * @param shape The input shape\n * @param finalShape The desired shape after broadcasting\n */\n static isValidBroadcast(shape: readonly number[], finalShape: readonly number[]): boolean {\n // align shape to the right\n const inputRank = shape.length;\n const finalRank = finalShape.length;\n if (inputRank > finalRank) {\n return false;\n }\n for (let i = 1; i <= inputRank; i++) {\n if (shape[inputRank - i] !== 1 && shape[inputRank - i] !== finalShape[finalRank - i]) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Determine the broadcasted dims in input shape based on the given output shape.\n * Note that this function only returns the broadcasted dims.\n * @param inputShape The input shape\n * @param outputShape The output shape\n * @returns The broadcasted dims in input shape.\n */\n static getBroadcastDims(inputShape: readonly number[], outputShape: readonly number[]): number[] {\n const inRank = inputShape.length;\n const dims: number[] = [];\n for (let i = 0; i < inRank; i++) {\n const dim = inRank - 1 - i;\n const a = inputShape[dim] || 1;\n const b = outputShape[outputShape.length - 1 - i] || 1;\n if (b > 1 && a === 1) {\n dims.unshift(dim);\n }\n }\n return dims;\n }\n}\n\n// copy array helper\n// mimics memcpy as much as possible\nexport function arrayCopyHelper(\n target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number,\n blockSize: number) {\n if (sourceIndex < 0 || sourceIndex >= source.length) {\n throw new Error('sourceIndex out of bounds');\n }\n if (targetIndex < 0 || targetIndex >= target.length) {\n throw new Error('targetIndex out of bounds');\n }\n if (sourceIndex + blockSize > source.length) {\n throw new Error('source indices to be copied are outside bounds');\n }\n if (targetIndex + blockSize > target.length) {\n throw new Error('target array is too small to hold result');\n }\n\n for (let offset = 0; offset < blockSize; offset++) {\n target[targetIndex + offset] = source[sourceIndex + offset];\n }\n}\n\nexport class GemmUtil {\n // will make sure input shapes are compatible for this op\n // and return back the shape of the output in the form of a tuple\n // will throw exception if the input shapes are not compatible\n static getShapeOfGemmResult(\n leftShape: readonly number[], transLeft: boolean, rightShape: readonly number[], transRight: boolean,\n biasShape?: readonly number[]): readonly number[] {\n if (leftShape.length !== 2 || rightShape.length !== 2) {\n throw new Error('shape need to be of size 2');\n }\n\n let M: number;\n let K: number;\n let N: number;\n\n if (transLeft) {\n M = leftShape[1];\n K = leftShape[0];\n } else {\n M = leftShape[0];\n K = leftShape[1];\n }\n\n let kDim = -1;\n\n if (transRight) {\n N = rightShape[0];\n kDim = 1;\n } else {\n N = rightShape[1];\n kDim = 0;\n }\n\n if (rightShape[kDim] !== K) {\n throw new Error('dimension mismatch');\n }\n\n if (M <= 0 || N <= 0 || K <= 0) {\n throw new Error('invalid shape specified');\n }\n\n if (biasShape && !BroadcastUtil.isValidBroadcast(biasShape, [M, N])) {\n throw new Error('gemm: invalid bias shape for broadcast');\n }\n\n return [M, N, K];\n }\n}\n\nexport class ProtoUtil {\n static tensorDataTypeFromProto(typeProto: onnx.TensorProto.DataType|\n onnxruntime.experimental.fbs.TensorDataType): Tensor.DataType {\n switch (typeProto) {\n case onnx.TensorProto.DataType.INT8:\n return 'int8';\n case onnx.TensorProto.DataType.UINT8:\n return 'uint8';\n case onnx.TensorProto.DataType.BOOL:\n return 'bool';\n case onnx.TensorProto.DataType.INT16:\n return 'int16';\n case onnx.TensorProto.DataType.UINT16:\n return 'uint16';\n case onnx.TensorProto.DataType.INT32:\n return 'int32';\n case onnx.TensorProto.DataType.UINT32:\n return 'uint32';\n case onnx.TensorProto.DataType.FLOAT:\n return 'float32';\n case onnx.TensorProto.DataType.DOUBLE:\n return 'float64';\n case onnx.TensorProto.DataType.STRING:\n return 'string';\n\n // For INT64/UINT64, reduce their value to 32-bits.\n // Should throw exception when overflow\n case onnx.TensorProto.DataType.INT64:\n return 'int32';\n case onnx.TensorProto.DataType.UINT64:\n return 'uint32';\n\n default:\n throw new Error(`unsupported data type: ${onnx.TensorProto.DataType[typeProto]}`);\n }\n }\n\n static tensorDataTypeStringToEnum(type: string): onnx.TensorProto.DataType {\n switch (type) {\n case 'int8':\n return onnx.TensorProto.DataType.INT8;\n case 'uint8':\n return onnx.TensorProto.DataType.UINT8;\n case 'bool':\n return onnx.TensorProto.DataType.BOOL;\n case 'int16':\n return onnx.TensorProto.DataType.INT16;\n case 'uint16':\n return onnx.TensorProto.DataType.UINT16;\n case 'int32':\n return onnx.TensorProto.DataType.INT32;\n case 'uint32':\n return onnx.TensorProto.DataType.UINT32;\n case 'float32':\n return onnx.TensorProto.DataType.FLOAT;\n case 'float64':\n return onnx.TensorProto.DataType.DOUBLE;\n case 'string':\n return onnx.TensorProto.DataType.STRING;\n case 'int64':\n return onnx.TensorProto.DataType.INT64;\n case 'uint64':\n return onnx.TensorProto.DataType.UINT64;\n\n default:\n throw new Error(`unsupported data type: ${type}`);\n }\n }\n\n static tensorDimsFromProto(dims: Array): number[] {\n // get rid of Long type for dims\n return dims.map(d => Long.isLong(d) ? d.toNumber() : d);\n }\n\n static tensorValueTypeFromProto(valueType: onnx.TypeProto.ITensor): Graph.ValueType {\n return {\n tensorType: ProtoUtil.tensorDataTypeFromProto(valueType.elemType!),\n shape: {dims: ProtoUtil.tensorDimsFromProto(valueType.shape!.dim!.map(d => d.dimValue!))}\n };\n }\n\n static tensorDimsFromORTFormat(tensor: onnxruntime.experimental.fbs.Tensor) {\n const dims = [];\n for (let i = 0; i < tensor.dimsLength(); i++) {\n dims.push(LongUtil.longToNumber(tensor.dims(i)!));\n }\n return dims;\n }\n\n static tensorAttributesFromORTFormat(node: onnxruntime.experimental.fbs.Node) {\n const attributes = [];\n for (let i = 0; i < node.attributesLength(); i++) {\n attributes.push(node.attributes(i)!);\n }\n return attributes;\n }\n}\n\nexport class LongUtil {\n // This function is called to get a number from long type of data for attribute, dim, and ir version,\n // which values are signed integers.\n // To make it more generic, add an optional paramter to convert to a unsigned number.\n static longToNumber(n: Long|flatbuffers.Long|number, unsigned?: boolean) {\n if (Long.isLong(n)) {\n return n.toNumber();\n } else if (n instanceof flatbuffers.Long) {\n return Long.fromValue({low: n.low, high: n.high, unsigned: unsigned ?? false}).toNumber();\n }\n return n;\n }\n static isLong(n: unknown) {\n return Long.isLong(n) || n instanceof flatbuffers.Long;\n }\n}\n\nexport class ShapeUtil {\n static size(dims: readonly number[]): number {\n return ShapeUtil.getSizeFromDimensionRange(dims, 0, dims.length);\n }\n\n // `axis` inclusive\n static sizeFromDimension(dims: readonly number[], axis: number): number {\n if (axis < 0 || axis > dims.length) {\n throw new Error(`invalid dimension of ${axis} for sizeFromDimension as Tensor has ${dims.length} dimensions.`);\n }\n return ShapeUtil.getSizeFromDimensionRange(dims, axis, dims.length);\n }\n\n // `axis` exclusive\n static sizeToDimension(dims: readonly number[], axis: number): number {\n if (axis < 0 || axis > dims.length) {\n throw new Error(`invalid dimension of ${axis} for sizeToDimension as Tensor has ${dims.length} dimensions.`);\n }\n return ShapeUtil.getSizeFromDimensionRange(dims, 0, axis);\n }\n\n static getSizeFromDimensionRange(dims: readonly number[], start: number, end: number): number {\n let size = 1;\n for (let i = start; i < end; i++) {\n // safety check as this method is called by multiple other methods requiring size.\n // size cannot be 0 or negative.\n if (dims[i] <= 0) {\n throw new Error(\n // eslint-disable-next-line max-len\n 'cannot get valid size from specified dimension range. Most likely the range contains 0 or negative values in them.');\n }\n size *= dims[i];\n }\n return size;\n }\n\n static computeStrides(dims: readonly number[]): readonly number[] {\n const rank = dims.length;\n if (rank === 0) {\n return [];\n } else if (rank === 1) {\n return [1];\n }\n const strides = new Array(rank);\n strides[rank - 1] = 1;\n strides[rank - 2] = dims[rank - 1];\n for (let i = rank - 3; i >= 0; --i) {\n strides[i] = strides[i + 1] * dims[i + 1];\n }\n return strides;\n }\n\n static transpose(dims: readonly number[]): readonly number[] {\n const copy = dims.slice();\n return copy.reverse();\n }\n\n static indicesToOffset(indices: readonly number[], strides: readonly number[], axis?: number): number {\n if (axis === undefined) {\n axis = indices.length;\n }\n let offset = 0;\n for (let i = 0; i < axis; ++i) {\n offset += strides[i] * indices[i];\n }\n return offset;\n }\n\n static offsetToIndices(offset: number, strides: readonly number[]): readonly number[] {\n const rank = strides.length;\n if (rank === 0) {\n return [];\n } else if (rank === 1) {\n return [offset * strides[0]];\n }\n const indices: number[] = new Array(strides.length);\n for (let i = 0; i < indices.length - 1; ++i) {\n indices[i] = Math.floor(offset / strides[i]);\n offset -= indices[i] * strides[i];\n }\n indices[indices.length - 1] = offset;\n return indices;\n }\n\n /**\n * normailze axis of range [-r, r) into [0, r).\n */\n static normalizeAxis(axis: number, tensorRank: number): number {\n if (axis < -tensorRank && axis >= tensorRank) {\n throw new Error('unsupported axis for this operation.');\n }\n return axis < 0 ? axis + tensorRank : axis;\n }\n\n static normalizeAxes(axes: readonly number[], tensorRank: number): number[] {\n return axes.map(x => this.normalizeAxis(x, tensorRank));\n }\n\n // Increment an index into a tensor (in lexicographic\n // ordering), wrapping around the specified upper_bound.\n /**\n * Increment an index into a tensor (in lexicographic ordering), wrapping around the specified upper_bound.\n * @param index Given index to increment (Will be mutated)\n * @param dims The dimensions of the tensor for which the given index corresponds to\n * @param axisToIncrementOn The 1-indexed axis to increment on. If undefined, axisToIncrementOn == rank\n */\n static incrementIndex(index: number[], dims: readonly number[], axisToIncrementOn?: number) {\n if (dims.length === 0 || index.length === 0) {\n throw new Error('Index incrementing unsupported for scalar Tensor');\n }\n if (axisToIncrementOn === undefined) {\n axisToIncrementOn = dims.length;\n } else {\n if (axisToIncrementOn <= 0 || axisToIncrementOn > dims.length) {\n throw new Error('Incorrect axis to increment on');\n }\n }\n\n for (let k = axisToIncrementOn - 1; k >= 0; --k) {\n index[k]++;\n if (index[k] < dims[k]) {\n break;\n }\n index[k] = 0;\n }\n }\n\n /**\n * Produces a new dimensions array based on the values in the 'originalDimensions' and 'shape' array\n * Used in Reshape\n * @param originalDims Original Shape array\n * @param shapeHints array containing values to compute the new dimensions\n * For example:\n * originalDims = [2,2] and shapeHints = [0,-1] will return [2,2]\n * originalDims = [2,2] and shapeHints = [4] will return [4]\n * originalDims = [2,2] and shapeHints = [5] will throw an exception\n * https://github.com/onnx/onnx/blob/main/docs/Operators.md#Reshape\n */\n\n static calculateReshapedDims(originalDims: readonly number[], shapeHints: ArrayLike): number[] {\n // reshape to a Scalar Tensor\n if (shapeHints.length === 0) {\n if (originalDims.length === 0 || ShapeUtil.size(originalDims) === 1) {\n return [];\n } else {\n throw new Error('cannot reshape to a scalar Tensor');\n }\n }\n\n const nDims = shapeHints.length;\n const reshapedDims = new Array(nDims);\n let unknownDimension = -1;\n let newTensorSize = 1;\n for (let i = 0; i < nDims; i++) {\n if (shapeHints[i] < -1) {\n throw new Error('a dimension in shape hints cannot be less than -1');\n }\n if (shapeHints[i] === -1) {\n if (unknownDimension !== -1) {\n throw new Error('at most one dimension in shape hints can be -1');\n }\n unknownDimension = i;\n } else {\n if (shapeHints[i] === 0) {\n if (i >= originalDims.length) {\n throw new Error('the dimension with value zero exceeds the dimension size of the input tensor');\n }\n reshapedDims[i] = originalDims[i];\n } else {\n reshapedDims[i] = shapeHints[i];\n }\n newTensorSize *= reshapedDims[i];\n }\n }\n\n const oldTensorSize = ShapeUtil.size(originalDims);\n if (unknownDimension !== -1) {\n if (oldTensorSize % newTensorSize !== 0) {\n throw new Error(`the input tensor cannot be reshaped to the requested shape. Input shape: [${\n originalDims}] Output shape: [${shapeHints}]`);\n }\n reshapedDims[unknownDimension] = oldTensorSize / newTensorSize;\n }\n // validate sizes from originalDims and reshapedDims match\n else {\n if (newTensorSize !== oldTensorSize) {\n throw new Error('reshapedDims and originalDims don\\'t have matching sizes');\n }\n }\n return reshapedDims;\n }\n\n /**\n * Sorts a given array based on the indices in the Perm array\n * Used in Transpose\n * @param a Array to be sorted such as dims or strides\n * @param perm Perm given; if null a will be reversed\n */\n static sortBasedOnPerm(a: readonly number[], perm?: readonly number[]): readonly number[] {\n if (perm) {\n return perm.map((v) => a[v]);\n } else {\n return a.slice().reverse();\n }\n }\n\n /**\n * Pads a given shape according to the padding values\n * @param dims shape of the Tensor to be padded\n * @param pad pad values\n */\n static padShape(dims: readonly number[], pad: readonly number[]): readonly number[] {\n const rank = dims.length;\n return dims.map((v, i) => v + pad[i] + pad[i + rank]);\n }\n\n /**\n * Determines if the two shapes are identical\n * @param shape1\n * @param shape2\n */\n static areEqual(shape1: readonly number[], shape2: readonly number[]): boolean {\n if (shape1.length !== shape2.length) {\n return false;\n }\n return shape1.every((v, i) => v === shape2[i]);\n }\n\n /**\n * Validates if the given `dims` or `shape` is valid in ONNX.js context and returns data size\n * @param dims - input `dims` that needs to be checked\n */\n static validateDimsAndCalcSize(dims: readonly number[]): number {\n if (dims.length > 6) {\n throw new TypeError('Only rank 0 to 6 is supported for tensor shape.');\n }\n let size = 1;\n for (const n of dims) {\n if (!Number.isInteger(n)) {\n throw new TypeError(`Invalid shape: ${n} is not an integer`);\n }\n if (n < 0 || n > 2147483647) {\n throw new TypeError(`Invalid shape: length ${n} is not allowed`);\n }\n size *= n;\n }\n return size;\n }\n\n /**\n * Determines the shape of output tensor y = flatten(x, axis)\n * @param dims - shape of input tensor\n * @param axis - flatten axis, in the range [-r, r]\n */\n static flattenShape(dims: readonly number[], axis: number): readonly number[] {\n if (axis < 0) {\n axis += dims.length;\n }\n const total = dims.reduce((x, y) => x * y, 1);\n const right = dims.slice(axis).reduce((x, y) => x * y, 1);\n const outputDims = [total / right, right];\n\n return outputDims;\n }\n\n /**\n * Determines the shape of output tensor y = squeeze(x, axes)\n * @param dims - shape of input tensor\n * @param axes - squeeze axes\n */\n static squeezeShape(dims: readonly number[], axes: readonly number[]): readonly number[] {\n const outputDims = new Array();\n\n // sanity check\n axes = ShapeUtil.normalizeAxes(axes, dims.length);\n\n for (let i = 0; i < dims.length; i++) {\n const inSqueezeList = axes.indexOf(i) >= 0;\n if (inSqueezeList && dims[i] !== 1) {\n throw new Error('squeeze an axis of size different than 1');\n }\n\n if ((axes.length === 0 && dims[i] > 1) || (axes.length > 0 && !inSqueezeList)) {\n outputDims.push(dims[i]);\n }\n }\n\n return outputDims;\n }\n\n /**\n * Determines the shape of output tensor y = unsqueeze(x, axes)\n * @param dims - shape of input tensor\n * @param axes - unsqueeze axes\n */\n static unsqueezeShape(dims: readonly number[], axes: readonly number[]): readonly number[] {\n const outputDims = new Array(dims.length + axes.length);\n\n // initialize the array elements to 0\n outputDims.fill(0);\n\n // set all axes indices to 1 in outputDims and check for duplicates\n for (let i = 0; i < axes.length; i++) {\n const axis = ShapeUtil.normalizeAxis(axes[i], outputDims.length);\n if (axis >= outputDims.length) {\n throw new Error('\\'axes\\' has an out of range axis');\n }\n if (outputDims[axis] !== 0) {\n throw new Error('\\'axes\\' has a duplicate axis');\n }\n\n outputDims[axis] = 1;\n }\n\n // fill in the zero entries of outputDims with the input tensor's shape\n let inputDimsIterator = 0;\n for (let i = 0; i < outputDims.length; i++) {\n if (outputDims[i] === 0) {\n outputDims[i] = dims[inputDimsIterator++];\n }\n }\n\n // sanity check assertion. 'inputDimsIterator'\n // should be equal to the length of 'dims'\n if (inputDimsIterator !== dims.length) {\n throw new Error('the unsqueezed dimension could not be established');\n }\n\n return outputDims;\n }\n}\n\n// bunch of helper methods that do a variety of math operations\nexport class MathUtil {\n // y = (x*x) + y\n static sqr(\n target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number,\n blockSize: number) {\n if (sourceIndex < 0 || sourceIndex >= source.length) {\n throw new Error('sourceIndex out of bounds');\n }\n if (targetIndex < 0 || targetIndex >= target.length) {\n throw new Error('targetIndex out of bounds');\n }\n if (sourceIndex + blockSize > source.length) {\n throw new Error('source indices to be copied are outside bounds');\n }\n if (targetIndex + blockSize > target.length) {\n throw new Error('target array is too small to hold result');\n }\n\n for (let offset = 0; offset < blockSize; offset++) {\n target[targetIndex + offset] += Math.pow(source[sourceIndex + offset], 2);\n }\n }\n\n // y = ax + y\n static axpy(\n target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number,\n blockSize: number, alpha: number) {\n if (sourceIndex < 0 || sourceIndex >= source.length) {\n throw new Error('sourceIndex out of bounds');\n }\n if (targetIndex < 0 || targetIndex >= target.length) {\n throw new Error('targetIndex out of bounds');\n }\n if (sourceIndex + blockSize > source.length) {\n throw new Error('source indices to be copied are outside bounds');\n }\n if (targetIndex + blockSize > target.length) {\n throw new Error('target array is too small to hold result');\n }\n\n for (let offset = 0; offset < blockSize; offset++) {\n target[targetIndex + offset] += (alpha * source[sourceIndex + offset]);\n }\n }\n\n // y = pow(x, b)\n static powx(\n target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number,\n blockSize: number, b: number) {\n if (sourceIndex < 0 || sourceIndex >= source.length) {\n throw new Error('sourceIndex out of bounds');\n }\n if (targetIndex < 0 || targetIndex >= target.length) {\n throw new Error('targetIndex out of bounds');\n }\n if (sourceIndex + blockSize > source.length) {\n throw new Error('source indices to be copied are outside bounds');\n }\n if (targetIndex + blockSize > target.length) {\n throw new Error('target array is too small to hold result');\n }\n\n for (let offset = 0; offset < blockSize; offset++) {\n target[targetIndex + offset] = Math.pow(source[sourceIndex + offset], b);\n }\n }\n\n // y = x * y\n static mul(\n target: number[]|Tensor.NumberType, source: number[]|Tensor.NumberType, targetIndex: number, sourceIndex: number,\n blockSize: number) {\n if (sourceIndex < 0 || sourceIndex >= source.length) {\n throw new Error('sourceIndex out of bounds');\n }\n if (targetIndex < 0 || targetIndex >= target.length) {\n throw new Error('targetIndex out of bounds');\n }\n if (sourceIndex + blockSize > source.length) {\n throw new Error('source indices to be copied are outside bounds');\n }\n if (targetIndex + blockSize > target.length) {\n throw new Error('target array is too small to hold result');\n }\n\n for (let offset = 0; offset < blockSize; offset++) {\n target[targetIndex + offset] = (source[sourceIndex + offset] * target[targetIndex + offset]);\n }\n }\n}\n\nexport class SplitUtil {\n /**\n * Calculates new Shapes from existing one and the splits given along the axis provides\n * @param dims Shape of the Tensor to be splitted into two or more Shapes\n * @param axis The dimension along which the Tensor will be split\n * @param splits Offsets for the start of each split\n */\n static splitShape(dims: readonly number[], axis: number, split: number[], numOutputs?: number):\n [number[][], number[]] {\n if (split.length === 0) {\n if (!numOutputs) {\n throw new Error('need to know number of outputs when the \\'split\\' attribute is not specified');\n }\n SplitUtil.determineSplit(dims[axis], numOutputs, split);\n }\n\n const shapes: number[][] = [];\n const offsets = [0];\n for (let i = 0; i < split.length; ++i) {\n if (i !== 0) {\n offsets.push(offsets[i - 1] + split[i - 1]);\n }\n const shape = dims.slice();\n shape[axis] = split[i];\n shapes.push(shape);\n }\n return [shapes, offsets];\n }\n\n static determineSplit(numElementsAlongAxis: number, numOutputs: number, split: number[]) {\n // If 'split' is not specified by the user, we need to partition the number of elements equally among the outputs\n if (numElementsAlongAxis % numOutputs !== 0) {\n throw new Error('cannot split tensor to equal sized parts');\n }\n for (let i = 0; i < numOutputs; ++i) {\n split.push(numElementsAlongAxis / numOutputs);\n }\n }\n}\n\nexport class ReduceUtil {\n /**\n * Perform reduce operations on the specific operator\n * @param a Input tensor data\n * @param axes The dimensions along which the Tensor will be reduced\n * @param keepdims If set to true, the axes which are reduced are left in the\n * result as dimensions with size one.\n * @param op1 The operation to be performed on each element in the tensor\n * @param op2 The operation to be performed between elements in the tensor\n */\n static calcReduce(\n a: Tensor, axes: number[], keepdims: boolean, op1: (b: number) => number,\n op2: (a: number, b: number) => number): Tensor {\n const dims = a.dims.slice(0);\n // if axes is not set, perform reduce on all axes\n if (axes.length === 0) {\n dims.forEach((_d, ind) => axes.push(ind));\n }\n // get a temporary broadcastable output shape\n const outputDims = ReduceUtil.calcReduceShape(dims, axes, true);\n\n // loop through the output and calculate result one by one\n const size = ShapeUtil.size(outputDims);\n const y = new Tensor(outputDims, a.type);\n const strides = ShapeUtil.computeStrides(outputDims);\n const inputStrides = ShapeUtil.computeStrides(dims);\n const indicesY = new Array(dims.length);\n for (let i = 0; i < size; i++) {\n const indices = ShapeUtil.offsetToIndices(i, strides);\n // map index\n BroadcastUtil.fillIndex(indices, dims, indicesY);\n y.set(\n indices,\n ReduceUtil.calcReduceByAxis(\n a.numberData, axes, dims, 0, ShapeUtil.indicesToOffset(indicesY, inputStrides), op1, op2));\n }\n\n if (keepdims) {\n return y;\n } else {\n // keepdims == 0, calculate the expected shape\n return new Tensor(\n ReduceUtil.calcReduceShape(dims, axes, keepdims), y.type, undefined, undefined, y.data, y.dataId);\n }\n }\n\n /**\n * Perform reduce operations on the specific operator on specific axes\n * @param a Input tensor data\n * @param axes The dimensions along which the Tensor will be reduced\n * @param dims The input dimension.\n * @param curAxisInd Index in axes specifying the current dimension along\n * which the tensor will be reduced\n * @param pos The current index of element to perform operation\n * @param op1 The operation to be performed on each element in the tensor\n * @param op2 The operation to be performed between elements in the tensor\n */\n static calcReduceByAxis(\n input: Tensor.NumberType, axes: number[], dims: number[], curAxisInd: number, pos: number,\n op1: (b: number) => number, op2: (a: number, b: number) => number): number {\n let res = 0;\n if (curAxisInd >= axes.length) {\n return op1(input[pos]);\n }\n const axis = axes[curAxisInd];\n const step = axis >= dims.length ? 1 : ShapeUtil.size(dims.slice(axis + 1));\n for (let i = 0; i < dims[axis]; i++) {\n res = i === 0 ? ReduceUtil.calcReduceByAxis(input, axes, dims, curAxisInd + 1, pos, op1, op2) :\n op2(res, ReduceUtil.calcReduceByAxis(input, axes, dims, curAxisInd + 1, pos, op1, op2));\n pos += step;\n }\n return res;\n }\n\n /**\n * Calculate the expected shape of a reduce operation\n * @param dims The input tensor dimension\n * @param axes The dimensions along which the Tensor will be reduced\n * @param keepdims If set to true, the axes which are reduced are left in the\n * result as dimensions with size one.\n */\n static calcReduceShape(dims: readonly number[], axes: readonly number[], keepDims: boolean): number[] {\n const outputDims = dims.slice();\n for (let i = 0; i < axes.length; i++) {\n if (keepDims) {\n outputDims[axes[i]] = 1;\n } else {\n outputDims[axes[i]] = 0;\n }\n }\n return outputDims.filter(dim => dim !== 0);\n }\n}\n\nexport class PoolConvUtil {\n /**\n * Adjust the kernel, strides, pads to correct rank. Set to default value if not present\n * @param isGlobalOperator If true, perform global pooling.\n * @param inputDims The input tensor dimension.\n * @param kernelShape The size of the kernel along each axis.\n * @param strides Stride along each axis.\n * @param dilations Dilation along each axis.\n * @param pads Padding for the beginning and ending along each axis.\n */\n static adjustPoolAttributes(\n isGlobalOperator: boolean, inputDims: readonly number[], kernelShape: number[], strides: number[],\n dilations: number[], pads: number[]) {\n if (!isGlobalOperator && kernelShape.length !== inputDims.length - 2) {\n throw new Error('length of specified kernel shapes should be 2 less than length of input dimensions');\n }\n\n if (isGlobalOperator) {\n // adjust kernel shape to cover the input dims\n for (let dim = 0; dim < inputDims.length - 2; dim++) {\n if (dim >= kernelShape.length) {\n kernelShape.push(inputDims[dim + 2]);\n } else {\n kernelShape[dim] = inputDims[dim + 2];\n }\n }\n }\n\n // adjust strides length to match kernel shape length\n for (let dim = 0; dim < kernelShape.length; dim++) {\n if (dim < strides.length) {\n if (strides[dim] < 0) {\n throw new Error('strides should be greater than or equal to 1');\n }\n } else {\n strides.push(1);\n }\n }\n\n // adjust dilation value\n for (let dim = 0; dim < kernelShape.length; dim++) {\n if (dim < dilations.length) {\n if (dilations[dim] < 0) {\n throw new Error('dilations should be greater than or equal to 1');\n }\n } else {\n dilations.push(1);\n }\n }\n\n // adjust pads length to match 2 * kernel shape length\n for (let dim = 0; dim < kernelShape.length * 2; dim++) {\n if (dim < pads.length) {\n if (pads[dim] < 0) {\n throw new Error('pad should be greater than or equal to 1');\n }\n } else {\n pads.push(0);\n }\n }\n\n // sanity checks for values in kernel shapes and pads\n for (let dim = 0; dim < kernelShape.length; dim++) {\n if (kernelShape[dim] <= 0) {\n throw new Error('kernel shapes need to be greater than 0');\n }\n\n if (pads[dim] >= kernelShape[dim] || pads[dim + kernelShape.length] >= kernelShape[dim]) {\n throw new Error('pads should be smaller than kernel');\n }\n }\n }\n\n // adjust pad values based on 'autoPad' attribute\n static adjustPadsBasedOnAutoPad(\n inputDims: readonly number[], strides: readonly number[], dilations: readonly number[],\n kernelShape: readonly number[], pads: number[], autoPad?: string) {\n if (!autoPad) {\n return;\n }\n\n if (pads.length !== 2 * (inputDims.length - 2)) {\n throw new Error('length of pads should be twice the length of data dimensions');\n }\n\n if (strides.length !== (inputDims.length - 2)) {\n throw new Error('length of strides should be the length of data dimensions');\n }\n\n if (kernelShape.length !== (inputDims.length - 2)) {\n throw new Error('length of kernel shapes should be the length of data dimensions');\n }\n\n for (let dim = 0; dim < inputDims.length - 2; dim++) {\n PoolConvUtil.adjustPadAndReturnShape(\n inputDims[dim + 2], strides[dim], dilations[dim], kernelShape[dim], pads, dim, dim + inputDims.length - 2,\n autoPad);\n }\n }\n\n /**\n * Calculate the output shape for Pool ops based on input attributes. (Should be used only for Pool ops)\n * @param isGlobalOperator If true, perform global pooling.\n * @param inputDims The input tensor dimension. (inputs[0].dims)\n * @param strides Stride along each axis.\n * @param dilations Dilation along each axis.\n * @param kernelShape The size of the kernel along each axis.\n * @param pads Padding for the beginning and ending along each axis.\n * @param autoPad DEPRECATED attribute supported for legacy models. Specifies how to implicitly calculate pads in each\n * dimension. Can take values NOTSET, SAME_UPPER, SAME_LOWER, or VALID.\n */\n static computePoolOutputShape(\n isGlobalOperator: boolean, inputDims: readonly number[], strides: number[], dilations: number[],\n kernelShape: number[], pads: number[], autoPad?: string): number[] {\n if (inputDims.length <= 0) {\n throw new Error('input shape must be of size greater than 0');\n }\n\n // Add batch size and number of channels of output\n const outputDims = [inputDims[0], inputDims[1]];\n\n PoolConvUtil.computeShapeHelper(\n isGlobalOperator, inputDims, outputDims, strides, dilations, kernelShape, pads, autoPad);\n return outputDims;\n }\n\n /**\n * Calculate the output shape for Conv op based on input attributes. (Should be used only for Conv op)\n * @param inputDims The input tensor dimension. (inputs[0].dims)\n * @param filterDims The filter tensor dimension. (inputs[1].dims)\n * @param strides Stride along each axis.\n * @param kernelShape The size of the kernel along each axis.\n * @param pads Padding for the beginning and ending along each axis.\n * @param autoPad DEPRECATED attribute supported for legacy models. Specifies how to implicitly calculate pads in each\n * dimension. Can take values NOTSET, SAME_UPPER, SAME_LOWER, or VALID.\n */\n static computeConvOutputShape(\n inputDims: readonly number[], filterDims: readonly number[], strides: number[], dilations: number[],\n kernelShape: number[], pads: number[], autoPad?: string): number[] {\n if (inputDims.length <= 0 || filterDims.length <= 0) {\n throw new Error('invalid input tensor dims or invalid filter tensor dims');\n }\n\n // Add batch size and number of channels of output\n const outputDims = [inputDims[0], filterDims[0]];\n\n PoolConvUtil.computeShapeHelper(false, inputDims, outputDims, strides, dilations, kernelShape, pads, autoPad);\n return outputDims;\n }\n\n // will compute output shapes for data dimensions ONLY (i.e.) no batch size and channels\n // called by computePoolOutputShape() and computeConvOutputShape()\n // adjust pads based on 'autoPad' attribute prior to shape computation\n private static computeShapeHelper(\n isGlobalOperator: boolean, inputDims: readonly number[], outputDims: number[], strides: readonly number[],\n dilations: readonly number[], kernelShape: readonly number[], pads: number[], autoPad?: string) {\n if (isGlobalOperator) {\n for (let dim = 0; dim < inputDims.length - 2; dim++) {\n outputDims.push(1);\n }\n } else {\n for (let dim = 0; dim < inputDims.length - 2; dim++) {\n outputDims.push(PoolConvUtil.adjustPadAndReturnShape(\n inputDims[dim + 2], strides[dim], dilations[dim], kernelShape[dim], pads, dim, dim + inputDims.length - 2,\n autoPad));\n }\n }\n }\n\n // helper for computeShapeHelper() and adjustPadsBasedOnAutoPad()\n // adjusts pad value for given 'autoPad' string and computes output shape along a particular dimension\n private static adjustPadAndReturnShape(\n inSize: number, stride: number, dilation: number, kernel: number, pads: number[], padHeadIndex: number,\n padTailIndex: number, autoPad?: string): number {\n const dkernel = dilation * (kernel - 1) + 1;\n if (autoPad && autoPad !== 'NOTSET') {\n switch (autoPad) {\n case 'VALID':\n pads[padHeadIndex] = 0;\n pads[padTailIndex] = 0;\n return Math.floor(((inSize - dkernel) / stride) + 1);\n case 'SAME_LOWER':\n case 'SAME_UPPER':\n if (dilation !== 1) {\n throw new Error('Dilation not supported for SAME_UPPER or SAME_LOWER');\n } else {\n const legacyTargetSize = (inSize + stride - 1) / stride;\n const padNeeded = (legacyTargetSize - 1) * stride + kernel - inSize;\n pads[padHeadIndex] =\n (autoPad === 'SAME_LOWER') ? Math.floor((padNeeded + 1) / 2) : Math.floor(padNeeded / 2);\n pads[padTailIndex] = padNeeded - pads[padHeadIndex];\n return Math.floor(((inSize + padNeeded - kernel) / stride) + 1);\n }\n default:\n throw new Error('Unsupported AutoPad type');\n }\n } else {\n return Math.floor(((inSize + pads[padHeadIndex] + pads[padTailIndex] - dkernel) / stride) + 1);\n }\n }\n}\n\nexport const MIN_CLIP = -3.4028234663852886e+38;\nexport const MAX_CLIP = 3.4028234663852886e+38;\n\nexport function decodeUtf8String(buffer: Uint8Array): string {\n return new TextDecoder().decode(buffer);\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Guid} from 'guid-typescript';\nimport Long from 'long';\n\nimport {onnxruntime} from './ort-schema/flatbuffers/ort-generated';\nimport {onnx} from './ort-schema/protobuf/onnx';\nimport {decodeUtf8String, ProtoUtil, ShapeUtil} from './util';\n\nimport ortFbs = onnxruntime.experimental.fbs;\n\nexport declare namespace Tensor {\n export interface DataTypeMap {\n bool: Uint8Array;\n float32: Float32Array;\n float64: Float64Array;\n string: string[];\n int8: Int8Array;\n uint8: Uint8Array;\n int16: Int16Array;\n uint16: Uint16Array;\n int32: Int32Array;\n uint32: Uint32Array;\n int64: BigInt64Array;\n }\n\n export type DataType = keyof DataTypeMap;\n\n export type StringType = Tensor.DataTypeMap['string'];\n export type BooleanType = Tensor.DataTypeMap['bool'];\n export type IntegerType = Tensor.DataTypeMap['int8']|Tensor.DataTypeMap['uint8']|Tensor.DataTypeMap['int16']|\n Tensor.DataTypeMap['uint16']|Tensor.DataTypeMap['int32']|Tensor.DataTypeMap['uint32'];\n export type FloatType = Tensor.DataTypeMap['float32']|Tensor.DataTypeMap['float64'];\n export type NumberType = BooleanType|IntegerType|FloatType;\n\n export type Id = Guid;\n}\n\ntype TensorData = Tensor.DataTypeMap[Tensor.DataType];\n\ntype DataProvider = (id: Tensor.Id) => TensorData;\ntype AsyncDataProvider = (id: Tensor.Id) => Promise;\n\nexport class Tensor {\n /**\n * get the underlying tensor data\n */\n get data(): TensorData {\n if (this.cache === undefined) {\n const data = this.dataProvider!(this.dataId);\n if (data.length !== this.size) {\n throw new Error('Length of data provided by the Data Provider is inconsistent with the dims of this Tensor.');\n }\n this.cache = data;\n }\n return this.cache;\n }\n\n /**\n * get the underlying string tensor data. Should only use when type is STRING\n */\n get stringData() {\n if (this.type !== 'string') {\n throw new TypeError('data type is not string');\n }\n\n return this.data as Tensor.StringType;\n }\n\n /**\n * get the underlying integer tensor data. Should only use when type is one of the following: (UINT8, INT8, UINT16,\n * INT16, INT32, UINT32, BOOL)\n */\n get integerData() {\n switch (this.type) {\n case 'uint8':\n case 'int8':\n case 'uint16':\n case 'int16':\n case 'int32':\n case 'uint32':\n case 'bool':\n return this.data as Tensor.IntegerType;\n\n default:\n throw new TypeError('data type is not integer (uint8, int8, uint16, int16, int32, uint32, bool)');\n }\n }\n\n /**\n * get the underlying float tensor data. Should only use when type is one of the following: (FLOAT, DOUBLE)\n */\n get floatData() {\n switch (this.type) {\n case 'float32':\n case 'float64':\n return this.data as Tensor.FloatType;\n\n default:\n throw new TypeError('data type is not float (float32, float64)');\n }\n }\n\n /**\n * get the underlying number tensor data. Should only use when type is one of the following: (UINT8, INT8, UINT16,\n * INT16, INT32, UINT32, BOOL, FLOAT, DOUBLE)\n */\n get numberData() {\n if (this.type !== 'string') {\n return this.data as Tensor.NumberType;\n }\n throw new TypeError('type cannot be non-number (string)');\n }\n\n /**\n * get value of an element at the given indices\n */\n get(indices: readonly number[]): Tensor.DataTypeMap[Tensor.DataType][number] {\n return this.data[ShapeUtil.indicesToOffset(indices, this.strides)];\n }\n\n /**\n * set value of an element at the given indices\n */\n set(indices: readonly number[], value: Tensor.DataTypeMap[Tensor.DataType][number]) {\n this.data[ShapeUtil.indicesToOffset(indices, this.strides)] = value;\n }\n\n /**\n * get the underlying tensor data asynchronously\n */\n async getData(): Promise {\n if (this.cache === undefined) {\n this.cache = await this.asyncDataProvider!(this.dataId);\n }\n return this.cache;\n }\n\n /**\n * get the number of elements in the tensor\n */\n public readonly size: number;\n\n private _strides: readonly number[];\n /**\n * get the strides for each dimension\n */\n get strides(): readonly number[] {\n if (!this._strides) {\n this._strides = ShapeUtil.computeStrides(this.dims);\n }\n return this._strides;\n }\n\n constructor(\n /**\n * get the dimensions of the tensor\n */\n public readonly dims: readonly number[],\n /**\n * get the type of the tensor\n */\n public readonly type: Tensor.DataType, private dataProvider?: DataProvider,\n private asyncDataProvider?: AsyncDataProvider, private cache?: TensorData,\n /**\n * get the data ID that used to map to a tensor data\n */\n public readonly dataId: Guid = Guid.create()) {\n this.size = ShapeUtil.validateDimsAndCalcSize(dims);\n const size = this.size;\n const empty = (dataProvider === undefined && asyncDataProvider === undefined && cache === undefined);\n\n if (cache !== undefined) {\n if (cache.length !== size) {\n throw new RangeError('Input dims doesn\\'t match data length.');\n }\n }\n\n if (type === 'string') {\n if (cache !== undefined && (!Array.isArray(cache) || !cache.every(i => typeof i === 'string'))) {\n throw new TypeError('cache should be a string array');\n }\n\n if (empty) {\n this.cache = new Array(size);\n }\n } else {\n if (cache !== undefined) {\n const constructor = dataviewConstructor(type);\n if (!(cache instanceof constructor)) {\n throw new TypeError(`cache should be type ${constructor.name}`);\n }\n }\n\n if (empty) {\n const buf = new ArrayBuffer(size * sizeof(type));\n this.cache = createView(buf, type);\n }\n }\n }\n\n /**\n * Construct new Tensor from a ONNX Tensor object\n * @param tensorProto the ONNX Tensor\n */\n static fromProto(tensorProto: onnx.ITensorProto): Tensor {\n if (!tensorProto) {\n throw new Error('cannot construct Value from an empty tensor');\n }\n const type = ProtoUtil.tensorDataTypeFromProto(tensorProto.dataType!);\n const dims = ProtoUtil.tensorDimsFromProto(tensorProto.dims!);\n\n const value = new Tensor(dims, type);\n\n if (type === 'string') {\n // When it's STRING type, the value should always be stored in field\n // 'stringData'\n tensorProto.stringData!.forEach((str, i) => {\n value.data[i] = decodeUtf8String(str);\n });\n\n } else if (\n tensorProto.rawData && typeof tensorProto.rawData.byteLength === 'number' &&\n tensorProto.rawData.byteLength > 0) {\n // NOT considering segment for now (IMPORTANT)\n\n // populate value from rawData\n const dataDest = value.data;\n const dataSource =\n new DataView(tensorProto.rawData.buffer, tensorProto.rawData.byteOffset, tensorProto.rawData.byteLength);\n const elementSize = sizeofProto(tensorProto.dataType!);\n const length = tensorProto.rawData.byteLength / elementSize;\n\n if (tensorProto.rawData.byteLength % elementSize !== 0) {\n throw new Error('invalid buffer length');\n }\n if (dataDest.length !== length) {\n throw new Error('buffer length mismatch');\n }\n\n for (let i = 0; i < length; i++) {\n const n = readProto(dataSource, tensorProto.dataType!, i * elementSize);\n dataDest[i] = n;\n }\n } else {\n // populate value from array\n let array: Array;\n switch (tensorProto.dataType) {\n case onnx.TensorProto.DataType.FLOAT:\n array = tensorProto.floatData!;\n break;\n case onnx.TensorProto.DataType.INT32:\n case onnx.TensorProto.DataType.INT16:\n case onnx.TensorProto.DataType.UINT16:\n case onnx.TensorProto.DataType.INT8:\n case onnx.TensorProto.DataType.UINT8:\n case onnx.TensorProto.DataType.BOOL:\n array = tensorProto.int32Data!;\n break;\n case onnx.TensorProto.DataType.INT64:\n array = tensorProto.int64Data!;\n break;\n case onnx.TensorProto.DataType.DOUBLE:\n array = tensorProto.doubleData!;\n break;\n case onnx.TensorProto.DataType.UINT32:\n case onnx.TensorProto.DataType.UINT64:\n array = tensorProto.uint64Data!;\n break;\n default:\n // should never run here\n throw new Error('unspecific error');\n }\n\n if (array === null || array === undefined) {\n throw new Error('failed to populate data from a tensorproto value');\n }\n\n const data = value.data;\n if (data.length !== array.length) {\n throw new Error('array length mismatch');\n }\n\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (Long.isLong(element)) {\n data[i] = longToNumber(element, tensorProto.dataType);\n } else {\n data[i] = element;\n }\n }\n }\n\n return value;\n }\n\n /**\n * Construct new Tensor from raw data\n * @param data the raw data object. Should be a string array for 'string' tensor, and the corresponding typed array\n * for other types of tensor.\n * @param dims the dimensions of the tensor\n * @param type the type of the tensor\n */\n static fromData(data: Tensor.DataTypeMap[Tensor.DataType], dims: readonly number[], type: Tensor.DataType) {\n return new Tensor(dims, type, undefined, undefined, data);\n }\n\n static fromOrtTensor(ortTensor: ortFbs.Tensor) {\n if (!ortTensor) {\n throw new Error('cannot construct Value from an empty tensor');\n }\n const dims = ProtoUtil.tensorDimsFromORTFormat(ortTensor);\n const type = ProtoUtil.tensorDataTypeFromProto(ortTensor.dataType());\n\n const value = new Tensor(dims, type);\n\n if (type === 'string') {\n // When it's STRING type, the value should always be stored in field\n // 'stringData'\n for (let i = 0; i < ortTensor.stringDataLength(); i++) {\n value.data[i] = ortTensor.stringData(i);\n }\n\n } else if (\n ortTensor.rawDataArray() && typeof ortTensor.rawDataLength() === 'number' && ortTensor.rawDataLength() > 0) {\n // NOT considering segment for now (IMPORTANT)\n\n // populate value from rawData\n const dataDest = value.data;\n const dataSource = new DataView(\n ortTensor.rawDataArray()!.buffer, ortTensor.rawDataArray()!.byteOffset, ortTensor.rawDataLength());\n const elementSize = sizeofProto(ortTensor.dataType());\n const length = ortTensor.rawDataLength() / elementSize;\n\n if (ortTensor.rawDataLength() % elementSize !== 0) {\n throw new Error('invalid buffer length');\n }\n if (dataDest.length !== length) {\n throw new Error('buffer length mismatch');\n }\n\n for (let i = 0; i < length; i++) {\n const n = readProto(dataSource, ortTensor.dataType(), i * elementSize);\n dataDest[i] = n;\n }\n }\n return value;\n }\n}\n\nfunction sizeof(type: Tensor.DataType): number {\n switch (type) {\n case 'bool':\n case 'int8':\n case 'uint8':\n return 1;\n case 'int16':\n case 'uint16':\n return 2;\n case 'int32':\n case 'uint32':\n case 'float32':\n return 4;\n case 'float64':\n return 8;\n default:\n throw new Error(`cannot calculate sizeof() on type ${type}`);\n }\n}\n\nfunction sizeofProto(type: onnx.TensorProto.DataType|ortFbs.TensorDataType): number {\n switch (type) {\n case onnx.TensorProto.DataType.UINT8:\n case onnx.TensorProto.DataType.INT8:\n case onnx.TensorProto.DataType.BOOL:\n return 1;\n case onnx.TensorProto.DataType.UINT16:\n case onnx.TensorProto.DataType.INT16:\n return 2;\n case onnx.TensorProto.DataType.FLOAT:\n case onnx.TensorProto.DataType.INT32:\n case onnx.TensorProto.DataType.UINT32:\n return 4;\n case onnx.TensorProto.DataType.INT64:\n case onnx.TensorProto.DataType.DOUBLE:\n case onnx.TensorProto.DataType.UINT64:\n return 8;\n default:\n throw new Error(`cannot calculate sizeof() on type ${onnx.TensorProto.DataType[type]}`);\n }\n}\n\nfunction createView(dataBuffer: ArrayBuffer, type: Tensor.DataType) {\n return new (dataviewConstructor(type))(dataBuffer);\n}\n\nfunction dataviewConstructor(type: Tensor.DataType) {\n switch (type) {\n case 'bool':\n case 'uint8':\n return Uint8Array;\n case 'int8':\n return Int8Array;\n case 'int16':\n return Int16Array;\n case 'uint16':\n return Uint16Array;\n case 'int32':\n return Int32Array;\n case 'uint32':\n return Uint32Array;\n case 'int64':\n return BigInt64Array;\n case 'float32':\n return Float32Array;\n case 'float64':\n return Float64Array;\n default:\n // should never run to here\n throw new Error('unspecified error');\n }\n}\n\n// convert a long number to a 32-bit integer (cast-down)\nfunction longToNumber(i: Long, type: onnx.TensorProto.DataType|ortFbs.TensorDataType): number {\n // INT64, UINT32, UINT64\n if (type === onnx.TensorProto.DataType.INT64 || type === ortFbs.TensorDataType.INT64) {\n if (i.greaterThanOrEqual(2147483648) || i.lessThan(-2147483648)) {\n throw new TypeError('int64 is not supported');\n }\n } else if (\n type === onnx.TensorProto.DataType.UINT32 || type === ortFbs.TensorDataType.UINT32 ||\n type === onnx.TensorProto.DataType.UINT64 || type === ortFbs.TensorDataType.UINT64) {\n if (i.greaterThanOrEqual(4294967296) || i.lessThan(0)) {\n throw new TypeError('uint64 is not supported');\n }\n } else {\n throw new TypeError(`not a LONG type: ${onnx.TensorProto.DataType[type]}`);\n }\n\n return i.toNumber();\n}\n\n// read one value from TensorProto\nfunction readProto(view: DataView, type: onnx.TensorProto.DataType|ortFbs.TensorDataType, byteOffset: number): number {\n switch (type) {\n case onnx.TensorProto.DataType.BOOL:\n case onnx.TensorProto.DataType.UINT8:\n return view.getUint8(byteOffset);\n case onnx.TensorProto.DataType.INT8:\n return view.getInt8(byteOffset);\n case onnx.TensorProto.DataType.UINT16:\n return view.getUint16(byteOffset, true);\n case onnx.TensorProto.DataType.INT16:\n return view.getInt16(byteOffset, true);\n case onnx.TensorProto.DataType.FLOAT:\n return view.getFloat32(byteOffset, true);\n case onnx.TensorProto.DataType.INT32:\n return view.getInt32(byteOffset, true);\n case onnx.TensorProto.DataType.UINT32:\n return view.getUint32(byteOffset, true);\n case onnx.TensorProto.DataType.INT64:\n return longToNumber(\n Long.fromBits(view.getUint32(byteOffset, true), view.getUint32(byteOffset + 4, true), false), type);\n case onnx.TensorProto.DataType.DOUBLE:\n return view.getFloat64(byteOffset, true);\n case onnx.TensorProto.DataType.UINT64:\n return longToNumber(\n Long.fromBits(view.getUint32(byteOffset, true), view.getUint32(byteOffset + 4, true), true), type);\n default:\n throw new Error(`cannot read from DataView for type ${onnx.TensorProto.DataType[type]}`);\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n/**\n * represent a version irrelevant abstraction of for GLSL source code\n */\nexport interface Glsl {\n readonly version: string;\n readonly attribute: string;\n readonly varyingVertex: string;\n readonly varyingFrag: string;\n readonly texture2D: string;\n readonly output: string;\n readonly outputDeclaration: string;\n}\n\nconst GLSL_ES_2_0: Glsl = {\n version: '',\n attribute: 'attribute',\n varyingVertex: 'varying',\n varyingFrag: 'varying',\n texture2D: 'texture2D',\n output: 'gl_FragColor',\n outputDeclaration: '',\n};\nconst GLSL_ES_3_0: Glsl = {\n version: '#version 300 es',\n attribute: 'in',\n varyingVertex: 'out',\n varyingFrag: 'in',\n texture2D: 'texture',\n output: 'outputColor',\n outputDeclaration: 'out vec4 outputColor;',\n};\n\nexport function getGlsl(version: 1|2) {\n return version === 1 ? GLSL_ES_2_0 : GLSL_ES_3_0;\n}\n\nexport function getVertexShaderSource(version: 1|2): string {\n const glsl = getGlsl(version);\n return `${glsl.version}\n precision highp float;\n ${glsl.attribute} vec3 position;\n ${glsl.attribute} vec2 textureCoord;\n\n ${glsl.varyingVertex} vec2 TexCoords;\n\n void main()\n {\n gl_Position = vec4(position, 1.0);\n TexCoords = textureCoord;\n }`;\n}\n\nexport function getFragShaderPreamble(version: 1|2): string {\n const glsl = getGlsl(version);\n return `${glsl.version}\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ${glsl.varyingFrag} vec2 TexCoords;\n ${glsl.outputDeclaration}\n const vec2 halfCR = vec2(0.5, 0.5);\n\n // Custom vector types to handle higher dimenalities.\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n `;\n}\n\nexport function getDefaultFragShaderMain(version: 1|2, outputShapeLength: number): string {\n const glsl = getGlsl(version);\n return `\n void main() {\n int indices[${outputShapeLength}];\n toVec(TexCoords, indices);\n vec4 result = vec4(process(indices));\n ${glsl.output} = result;\n }\n `;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../tensor';\n\n/**\n * Layout info is used for mapping n-dimensional array to 2D textures\n * The layout is created by the TextureLayoutStrategy based on\n * the Tensor's dimensions and strides\n */\nexport interface TextureLayout {\n width: number;\n height: number;\n /**\n * specify the number of value that encoded in a single pixel\n */\n channels: 1|2|3|4;\n /**\n * whether in packed mode or not\n */\n isPacked?: boolean;\n /**\n * the normalized shape\n */\n shape: readonly number[];\n /**\n * the stride of each dimensions, calculated according to shape\n */\n strides: readonly number[];\n /**\n * the original shape(dims) of the corresponding tensor\n */\n unpackedShape: readonly number[];\n\n reversedWH?: boolean;\n}\nexport interface TextureData extends TextureLayout {\n tensor: Tensor;\n texture: WebGLTexture;\n}\n\nexport enum TextureType {\n unpacked, // <-- normal unpacked texture\n unpackedReversed, // <-- unpacked texture used in old ONNX.js implementation (deprecated)\n packed, // <-- normal packed texture\n downloadUint8AsFloat, // <-- ONLY used in texture downloading for iOS devices\n packedLastDimension // <-- ONLY used in old ONNX.js Conv implementation for input W (deprecated)\n}\n\nexport interface TensorInfo {\n id?: Tensor.Id;\n dims: readonly number[];\n type: Tensor.DataType;\n textureType: TextureType;\n}\n\nexport interface ProgramVariable {\n type: 'float'|'int';\n name: string;\n arrayLength?: number;\n data: number|number[];\n}\n\n/**\n * A set of metadata of a shader program.\n */\nexport interface ProgramMetadata {\n /**\n * the name of the program. used for debugging and profiling\n */\n name: string;\n /**\n * texture types for each input\n */\n inputTypes: TextureType[];\n /**\n * names of each input\n */\n inputNames: string[];\n /**\n * an optional string as a cache hint in the artifact cache\n */\n cacheHint?: string;\n}\n\n/**\n * A ProgramInfoLoader allows\n */\nexport interface ProgramInfoLoader extends ProgramMetadata {\n /**\n * a function to get the program info\n */\n get(): ProgramInfo;\n}\n\n/**\n * A set of data that represent a shader program\n */\nexport interface ProgramInfo extends ProgramMetadata {\n /**\n * information of uniform variables\n */\n variables?: ProgramVariable[];\n /**\n * tensor info for output\n */\n output: TensorInfo;\n /**\n * the shader's processing source code\n */\n shaderSource: string;\n /**\n * whether the shader source contains a customized main function implementation\n */\n hasMain?: boolean;\n}\n\nexport interface VariableInfo {\n type: 'float'|'int';\n name: string;\n arrayLength?: number;\n}\n\nexport interface ProgramVariable {\n type: 'float'|'int';\n name: string;\n arrayLength?: number;\n data: number|number[];\n}\n\n/**\n * Information of uniforms that shader uses\n */\nexport interface UniformInfo {\n type: 'sampler2D'|VariableInfo['type'];\n name: string;\n arrayLength?: number;\n}\n\nexport interface UniformLocation extends UniformInfo {\n location: WebGLUniformLocation;\n}\n\n/**\n * Artifact is the result of compilation\n * It does not contain input of output data\n * However anything that could be run as a \"program\"\n */\nexport interface Artifact {\n programInfo: ProgramInfo;\n program: WebGLProgram;\n uniformLocations: UniformLocation[];\n attribLocations: {position: number; textureCoord: number};\n}\nexport declare namespace Artifact {\n type UniformLocations = Artifact['uniformLocations'];\n type AttribLocations = Artifact['attribLocations'];\n}\n\nexport interface UniformData {\n [name: string]: number|number[];\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {assert} from '../../util';\n/**\n * Given a non RGBA shape calculate the R version\n * It is assumed that the dimensions are multiples of given channels\n * NOTE: it is always the last dim that gets packed.\n * @param unpackedShape original shape to create a packed version from\n */\nexport function getPackedShape(unpackedShape: readonly number[]): readonly number[] {\n const len = unpackedShape.length;\n return unpackedShape.slice(0, len - 1).concat(unpackedShape[len - 1] / 4);\n}\n\nexport async function repeatedTry(\n checkFn: () => boolean, delayFn = (_counter: number) => 0, maxCounter?: number): Promise {\n return new Promise((resolve, reject) => {\n let tryCount = 0;\n\n const tryFn = () => {\n if (checkFn()) {\n resolve();\n return;\n }\n\n tryCount++;\n\n const nextBackoff = delayFn(tryCount);\n\n if (maxCounter != null && tryCount >= maxCounter) {\n reject();\n return;\n }\n setTimeout(tryFn, nextBackoff);\n };\n\n tryFn();\n });\n}\n\n/**\n * Generates the function name from an input sampler name.\n * @param samplerName Name of the sampler.\n */\nexport function generateShaderFuncNameFromInputSamplerName(samplerName: string): string {\n assert(typeof samplerName !== 'undefined' && samplerName.length !== 0, () => 'empty string found for sampler name');\n return 'get' + samplerName.charAt(0).toUpperCase() + samplerName.slice(1);\n}\n\n/**\n * Generates the function name from an input sampler name at output coordinates.\n * @param samplerName Name of the sampler.\n */\nexport function generateShaderFuncNameFromInputSamplerNameAtOutCoords(samplerName: string): string {\n assert(typeof samplerName !== 'undefined' && samplerName.length !== 0, () => 'empty string found for sampler name');\n return 'get' + samplerName.charAt(0).toUpperCase() + samplerName.slice(1) + 'AtOutCoords';\n}\n\n/** Returns a new input shape (a copy) that has a squeezed logical shape. */\nexport function squeezeInputShape(inputShape: readonly number[], squeezedShape: number[]): number[] {\n // Deep copy.\n let newInputShape: number[] = JSON.parse(JSON.stringify(inputShape));\n newInputShape = squeezedShape;\n return newInputShape;\n}\n\n/** Returns a list of squeezed parameters for shader functions */\nexport function getSqueezedParams(params: string[], keptDims: number[]): string {\n return keptDims.map(d => params[d]).join(', ');\n}\n\n/** Returns the data type for different ranks. */\nexport function getCoordsDataType(rank: number): string {\n if (rank <= 1) {\n return 'int';\n } else if (rank === 2) {\n return 'ivec2';\n } else if (rank === 3) {\n return 'ivec3';\n } else if (rank === 4) {\n return 'ivec4';\n } else if (rank === 5) {\n return 'ivec5';\n } else if (rank === 6) {\n return 'ivec6';\n } else {\n throw Error(`GPU for rank ${rank} is not yet supported`);\n }\n}\n\nexport function getGlChannels(rank = 6): string[] {\n return ['x', 'y', 'z', 'w', 'u', 'v'].slice(0, rank);\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {getGlChannels} from '../utils';\n\nexport function getVecChannels(name: string, rank: number): string[] {\n return getGlChannels(rank).map(d => `${name}.${d}`);\n}\n\nexport function getChannels(name: string, rank: number): string[] {\n if (rank === 1) {\n return [name];\n }\n return getVecChannels(name, rank);\n}\n\nexport function unpackFromChannel(): string {\n return `\n float getChannel(vec4 frag, int dim) {\n int modCoord = imod(dim, 2);\n return modCoord == 0 ? frag.r : frag.g;\n }\n\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n `;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, TextureType} from '../types';\nimport {getCoordsDataType} from '../utils';\n\nimport {getChannels} from './packing-utils';\n\nconst packProgramMetadata = {\n name: 'pack',\n inputNames: ['A'],\n inputTypes: [TextureType.unpackedReversed]\n};\n\nconst createPackProgramInfo = (handler: WebGLInferenceHandler, input: Tensor): ProgramInfo => {\n const glsl = getGlsl(handler.session.backend.glContext.version);\n const inputShape = input.dims;\n\n const inputRank = inputShape.length;\n // createTextureLayoutFromShape won't change output rank. Need to verify by running tests\n const outputRank = input.dims.length;\n\n const coordsDataType = getCoordsDataType(outputRank);\n const channels = getChannels('rc', outputRank);\n const setup = getSetup(outputRank, channels, inputShape[inputShape.length - 2], inputShape[inputShape.length - 1]);\n\n let reversedInputWH;\n if (inputRank === 0) {\n reversedInputWH = [1, 1];\n } else if (inputRank === 1) {\n reversedInputWH = [inputShape[0], 1];\n } else {\n reversedInputWH = [inputShape[outputRank - 1], inputShape[outputRank - 2]];\n }\n const outOfBoundsCondition = getOutOfBoundsCondition(outputRank, reversedInputWH, channels);\n const output = getOutput(inputShape, channels);\n\n const shaderSource = `\n void main() {\n ${coordsDataType} rc = getOutputCoords();\n\n if(${outOfBoundsCondition}) {\n ${glsl.output} = vec4(0);\n } else {\n ${setup}\n\n ${glsl.output} = vec4(${output});\n }\n }\n `;\n return {\n ...packProgramMetadata,\n hasMain: true,\n output: {dims: input.dims, type: input.type, textureType: TextureType.packed},\n shaderSource\n };\n};\n\nexport const createPackProgramInfoLoader = (handler: WebGLInferenceHandler, input: Tensor): ProgramInfoLoader =>\n ({...packProgramMetadata, get: () => createPackProgramInfo(handler, input)});\n\n/**\n * check output coordinate location and return false if it is outside input's width/height boundary\n */\nfunction getOutOfBoundsCondition(rank: number, shape: readonly number[], dims: string[]): string {\n if (rank === 0) {\n return 'false';\n }\n if (rank === 1) {\n return `rc > ${shape[0]}`;\n }\n\n let cond = '';\n for (let i = rank - 2; i < rank; i++) {\n cond += `${dims[i]} >= ${shape[i - rank + 2]}`;\n if (i < rank - 1) {\n cond += '||';\n }\n }\n\n return cond;\n}\n\n/**\n * code snippet to sample input texture with output coordiantes\n */\nfunction getOutput(shape: readonly number[], dims: string[]): string {\n const rank = shape.length;\n\n if (rank === 0) {\n return 'getA(), 0, 0, 0';\n }\n\n if (rank === 1) {\n return `getA(rc),\n rc + 1 >= ${shape[0]} ? 0. : getA(rc + 1),\n 0, 0`;\n }\n\n const coord00 = 'r, c';\n const coord01 = 'r, cp1';\n const coord10 = 'rp1, c';\n const coord11 = 'rp1, cp1';\n let D = '';\n if (rank > 2) {\n for (let i = 0; i < rank - 2; ++i) {\n D = D + `${dims[i]},`;\n }\n }\n return `getA(${D}${coord00}),\n rEdge ? 0. : getA(${D}${coord10}),\n cEdge ? 0. : getA(${D}${coord01}),\n rEdge || cEdge ? 0. : getA(${D}${coord11})`;\n}\n\n/**\n * code snippet to setup 4 coordinates and edge conditions\n */\nfunction getSetup(rank: number, dims: string[], rows: number, cols: number): string {\n if (rank === 0 || rank === 1) {\n return '';\n }\n // rank >= 2 for width+height pack.\n else {\n const setup = `\n int r = ${dims[rank - 2]};\n int c = ${dims[rank - 1]};\n int rp1 = ${dims[rank - 2]} + 1;\n int cp1 = ${dims[rank - 1]} + 1;\n bool rEdge = rp1 >= ${cols};\n bool cEdge = cp1 >= ${rows};\n `;\n return setup;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {unpackFromChannel} from './packing-utils';\n\nconst createPackedReshape3DProgramMetadata = (outputShape3D: readonly number[]) =>\n ({name: 'Reshape (packed)', inputTypes: [TextureType.packed], inputNames: ['A'], cacheHint: `${outputShape3D}`});\n\nconst createPackedReshape3DProgramInfo =\n (handler: WebGLInferenceHandler, input3D: Tensor, metadata: ProgramMetadata, outputShape3D: readonly number[]):\n ProgramInfo => {\n const inputShape3D = input3D.dims as [number, number, number];\n const squeezedOutputShape = outputShape3D as [number, number, number];\n\n let mainLoop = '';\n for (let i = 0; i < 4; i++) {\n let outputCoords = '';\n switch (i) {\n case 0:\n outputCoords = 'outputCoords = rc;';\n break;\n case 1:\n outputCoords = 'outputCoords = ivec3(rc.x, rc.y+1, rc.z);';\n break;\n case 2:\n outputCoords = 'outputCoords = ivec3(rc.x, rc.y, rc.z+1);';\n break;\n case 3:\n outputCoords = 'outputCoords = ivec3(rc.x, rc.y+1, rc.z+1);';\n break;\n default:\n throw new Error();\n }\n\n mainLoop += `\n ${outputCoords}\n ${i > 0 ? 'if(outputCoords.y < rows && outputCoords.z < cols){' : ''}\n int flattenedIndex = getFlattenedIndex(outputCoords);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flattenedIndex);\n vec2 innerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result[${i}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), innerDims);\n\n ${i > 0 ? '}' : ''}\n `;\n }\n const glsl = getGlsl(handler.session.backend.glContext.version);\n\n const shaderSource = `\n ${getReshapedInputCoords(inputShape3D)}\n ${getFlattenedIndexFrom3D(squeezedOutputShape)}\n ${unpackFromChannel()}\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.0);\n\n ivec3 outputCoords;\n int rows = ${squeezedOutputShape[2]};\n int cols = ${squeezedOutputShape[1]};\n\n ${mainLoop}\n ${glsl.output} = result;\n }\n `;\n\n return {\n ...metadata,\n output: {dims: squeezedOutputShape, type: input3D.type, textureType: TextureType.packed},\n shaderSource,\n hasMain: true\n };\n };\n\nexport const createPackedReshape3DProgramInfoLoader =\n (handler: WebGLInferenceHandler, input3D: Tensor, outputShape3D: readonly number[]): ProgramInfoLoader => {\n const metadata = createPackedReshape3DProgramMetadata(outputShape3D);\n return {...metadata, get: () => createPackedReshape3DProgramInfo(handler, input3D, metadata, outputShape3D)};\n };\n\nexport function processDims3D(shape: ArrayLike): [number, number, number] {\n if (shape.length === 0) {\n return [1, 1, 1];\n }\n // TODO: squeeze other shapes to 2D case\n let batch = 1;\n for (let i = 0; i < shape.length - 2; ++i) {\n batch *= shape[i];\n }\n return [batch, shape.length > 1 ? shape[shape.length - 2] : 1, shape[shape.length - 1]];\n}\n\n// For packed reshape, we need to re-arrange texel data for output shape.\n// Our pack is designed to pack a 2x2 tile in last h and w dimension, so\n// for the reshaped new tensor, we just need to re-arrange the last h and\n// w dimension. For any shape that is not in 3D, i.e. [batch, W, H], we\n// first convert it to 3D by collapsing other dimension to batch dim, then\n// process with the last two dimensions.\n// Note: we only need the shape tensor to calculate output shape, so the\n// content in shape tensor is never uploaded to GPU. It is always kept in CPU.\n// TODO: optimize the algorithm -- in some cases, if the last two dims are\n// the same between input shape and output shape, the packed reshape can be\n// treated as no-op.\nexport function isReshapeCheap(dims: readonly number[], reshapedDims: readonly number[]) {\n let isCheapReshape = false;\n if (dims.length === 0 || reshapedDims.length === 0) { // scalar\n isCheapReshape = true;\n } else if (dims.length < 2 || reshapedDims.length < 2) { // 1D\n isCheapReshape = dims[dims.length - 1] === reshapedDims[reshapedDims.length - 1];\n } else { // 2D +\n isCheapReshape = dims[dims.length - 1] === reshapedDims[reshapedDims.length - 1] &&\n dims[dims.length - 2] === reshapedDims[reshapedDims.length - 2];\n }\n\n return isCheapReshape;\n}\n\nfunction getReshapedInputCoords(shape: [number, number, number]): string {\n const strides = ShapeUtil.computeStrides(shape);\n const coords = ['b', 'r', 'c'];\n const index = 'index';\n const coordsFromIndexSnippet = strides\n .map((stride, i) => {\n const line1 = `int ${coords[i]} = ${index} / ${stride}`;\n const line2 = i === strides.length - 1 ?\n `int ${coords[i + 1]} = ${index} - ${coords[i]} * ${stride}` :\n `index -= ${coords[i]} * ${stride}`;\n return `${line1}; ${line2};`;\n })\n .join('');\n\n return `\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n ${coordsFromIndexSnippet}\n return ivec3(b, r, c);\n }\n `;\n}\n\nfunction getFlattenedIndexFrom3D(shape: [number, number, number]): string {\n const strides = ShapeUtil.computeStrides(shape);\n\n return `\n int getFlattenedIndex(ivec3 coords) {\n // reverse y, z order\n return coords.x * ${strides[0]} + coords.z * ${strides[1]} + coords.y;\n }\n`;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {TextureData, TextureType} from '../types';\n\nexport const encodeAsUint8 = (inferenceHandler: WebGLInferenceHandler, input: TextureData): TextureData => {\n const outputShape = input.shape;\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n /**\n * https://github.com/tensorflow/tfjs-core/blob/master/src/kernels/webgl/encode_float_gpu.ts\n */\n const shaderSource = `\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n bool isNaN(float val) {\n return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true;\n }\n\n highp vec4 encodeAsUint8(highp float v) {\n if (isNaN(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n\n void main() {\n float value = ${glsl.texture2D}(X,TexCoords).r;\n ${glsl.output} = encodeAsUint8(value);\n }`;\n const programInfo = {\n name: 'Uint8Encode',\n inputTypes: [TextureType.unpacked],\n inputNames: ['X'],\n output: {dims: outputShape, type: input.tensor.type, textureType: TextureType.downloadUint8AsFloat},\n shaderSource,\n hasMain: true\n };\n return inferenceHandler.executeProgram(programInfo, [input.tensor]);\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, TextureType} from '../types';\nimport {getCoordsDataType} from '../utils';\n\nimport {getChannels, unpackFromChannel} from './packing-utils';\n\nconst unpackProgramMetadata = {\n name: 'unpack',\n inputNames: ['A'],\n inputTypes: [TextureType.packed]\n};\n\nexport const createUnpackProgramInfo = (handler: WebGLInferenceHandler, input: Tensor): ProgramInfo => {\n const rank = input.dims.length;\n\n const channels = getChannels('rc', rank);\n const innerDims = channels.slice(-2);\n const coordsDataType = getCoordsDataType(rank);\n const unpackChannel = unpackFromChannel();\n const isScalar = (input.dims.length === 0);\n const sourceCoords = isScalar ? '' : getSourceCoords(rank, channels);\n const coords = rank <= 1 ? 'rc' : `vec2(${innerDims.join(',')})`;\n const glsl = getGlsl(handler.session.backend.glContext.version);\n const shaderSource = `\n ${unpackChannel}\n void main() {\n ${coordsDataType} rc = getOutputCoords();\n\n // Sample the texture with the coords to get the rgba channel value.\n vec4 packedInput = getA(${sourceCoords});\n\n ${glsl.output} = vec4(getChannel(packedInput, ${coords}), 0, 0, 0);\n }\n `;\n\n return {\n ...unpackProgramMetadata,\n hasMain: true,\n output: {dims: input.dims, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n};\n\nexport const createUnpackProgramInfoLoader = (handler: WebGLInferenceHandler, input: Tensor): ProgramInfoLoader =>\n ({...unpackProgramMetadata, get: () => createUnpackProgramInfo(handler, input)});\n\nfunction getSourceCoords(rank: number, dims: string[]): string {\n if (rank === 1) {\n return 'rc';\n }\n\n let coords = '';\n for (let i = 0; i < rank; i++) {\n coords += dims[i];\n if (i < rank - 1) {\n coords += ',';\n }\n }\n return coords;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Logger} from '../../instrument';\n\nexport declare namespace Encoder {\n export interface DataTypeMap {\n float: Float32Array;\n byte: Uint8Array;\n int: Uint32Array;\n }\n export type DataType = keyof DataTypeMap;\n type DataArrayType = DataTypeMap[DataType];\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport const enum EncoderUsage {\n Default = 0,\n UploadOnly,\n Download4BytesAsFloat32,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/**\n * Abstraction for mapping data types to texture texlets\n * Encoding means how a Float32 is mapped to 1 or 4 channels for each texlet\n * Decoding means how a texlet's channels are mapped to a resulting Float32\n */\nexport interface DataEncoder {\n internalFormat: number;\n format: number;\n textureType: number;\n channelSize: number;\n encode(src: Encoder.DataArrayType, textureSize: number): Encoder.DataArrayType;\n allocate(size: number): Encoder.DataArrayType;\n decode(buffer: Encoder.DataArrayType, dataSize: number): Encoder.DataArrayType;\n}\n/**\n * WebGL2 data encoder\n * Uses R32F as the format for texlet\n */\nexport class RedFloat32DataEncoder implements DataEncoder {\n internalFormat: number;\n format: number;\n textureType: number;\n channelSize: number;\n constructor(gl: WebGL2RenderingContext, channels = 1) {\n if (channels === 1) {\n this.internalFormat = gl.R32F;\n this.format = gl.RED;\n this.textureType = gl.FLOAT;\n this.channelSize = channels;\n } else if (channels === 4) {\n this.internalFormat = gl.RGBA32F;\n this.format = gl.RGBA;\n this.textureType = gl.FLOAT;\n this.channelSize = channels;\n } else {\n throw new Error(`Invalid number of channels: ${channels}`);\n }\n }\n encode(src: Encoder.DataArrayType, textureSize: number): Encoder.DataArrayType {\n let result: Float32Array;\n let source: Float32Array;\n if (src.constructor !== Float32Array) {\n Logger.warning('Encoder', 'data was not of type Float32; creating new Float32Array');\n source = new Float32Array(src);\n }\n if (textureSize * this.channelSize > src.length) {\n Logger.warning('Encoder', 'Source data too small. Allocating larger array');\n source = src as Float32Array;\n result = this.allocate(textureSize * this.channelSize) as Float32Array;\n source.forEach((v, i) => result[i] = v);\n } else {\n source = src as Float32Array;\n result = source;\n }\n return result;\n }\n allocate(size: number): Encoder.DataArrayType {\n return new Float32Array(size * 4);\n }\n decode(buffer: Encoder.DataArrayType, dataSize: number): Float32Array {\n if (this.channelSize === 1) {\n const filteredData = (buffer as Float32Array).filter((_value, index) => index % 4 === 0).subarray(0, dataSize);\n return filteredData;\n }\n return buffer.subarray(0, dataSize) as Float32Array;\n }\n}\n/**\n * Data encoder for WebGL 1 with support for floating point texture\n */\nexport class RGBAFloatDataEncoder implements DataEncoder {\n internalFormat: number;\n format: number;\n textureType: number;\n channelSize: number;\n constructor(gl: WebGLRenderingContext, channels = 1, textureType?: number) {\n if (channels !== 1 && channels !== 4) {\n throw new Error(`Invalid number of channels: ${channels}`);\n }\n this.internalFormat = gl.RGBA;\n this.format = gl.RGBA;\n this.channelSize = channels;\n this.textureType = textureType || gl.FLOAT;\n }\n encode(src: Float32Array, textureSize: number): Encoder.DataArrayType {\n let dest = src;\n if (this.channelSize === 1) {\n Logger.verbose('Encoder', 'Exploding into a larger array');\n dest = this.allocate(textureSize) as Float32Array;\n src.forEach((v, i) => dest[i * 4] = v);\n }\n return dest;\n }\n allocate(size: number): Encoder.DataArrayType {\n return new Float32Array(size * 4);\n }\n decode(buffer: Encoder.DataArrayType, dataSize: number): Float32Array {\n if (this.channelSize === 1) {\n const filteredData = (buffer as Float32Array).filter((_value, index) => index % 4 === 0).subarray(0, dataSize);\n return filteredData;\n }\n return buffer.subarray(0, dataSize) as Float32Array;\n }\n}\n\nexport class Uint8DataEncoder implements DataEncoder {\n internalFormat: number;\n format: number;\n textureType: number;\n channelSize = 4;\n constructor(gl: WebGLRenderingContext, channels = 1) {\n if (channels === 1) {\n this.internalFormat = gl.ALPHA;\n this.format = gl.ALPHA; // not tested\n this.textureType = gl.UNSIGNED_BYTE;\n this.channelSize = channels;\n } else if (channels === 4) {\n this.internalFormat = gl.RGBA;\n this.format = gl.RGBA;\n this.textureType = gl.UNSIGNED_BYTE;\n this.channelSize = channels;\n } else {\n throw new Error(`Invalid number of channels: ${channels}`);\n }\n }\n encode(src: Uint8Array, _textureSize: number): Encoder.DataArrayType {\n return new Uint8Array(src.buffer, src.byteOffset, src.byteLength);\n }\n allocate(size: number): Encoder.DataArrayType {\n return new Uint8Array(size * this.channelSize);\n }\n decode(buffer: Encoder.DataArrayType, dataSize: number): Uint8Array {\n if (buffer instanceof Uint8Array) {\n return buffer.subarray(0, dataSize);\n }\n throw new Error(`Invalid array type: ${buffer.constructor}`);\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {ShapeUtil} from '../../util';\n\nimport {TextureLayoutStrategy, WidthHeightPrefs} from './texture-layout-strategy';\nimport {TextureLayout, TextureType} from './types';\n\nexport const createTextureLayoutFromTextureType =\n (textureLayoutStrategy: TextureLayoutStrategy, shape: readonly number[],\n textureType: TextureType): TextureLayout => {\n const channel = (textureType === TextureType.unpacked || textureType === TextureType.unpackedReversed) ? 1 : 4;\n const isPacked = textureType === TextureType.packed;\n const reverseWH = (textureType === TextureType.unpackedReversed || textureType === TextureType.packed);\n const breakAxis = textureType === TextureType.packedLastDimension ? shape.length - 1 : undefined;\n const unpackedShape = textureType === TextureType.packedLastDimension ?\n shape.map((d, i) => i === shape.length - 1 ? d * 4 : d) :\n undefined;\n return createTextureLayoutFromShape(\n textureLayoutStrategy, shape, channel, unpackedShape, {isPacked, reverseWH, breakAxis});\n };\n\nexport const calculateTextureWidthAndHeight =\n (textureLayoutStrategy: TextureLayoutStrategy, shape: readonly number[], textureType: TextureType):\n [number, number] => {\n const layout = createTextureLayoutFromTextureType(textureLayoutStrategy, shape, textureType);\n return [layout.width, layout.height];\n };\n\n/**\n * Create a TextureLayout object from shape.\n */\nexport const createTextureLayoutFromShape =\n (textureLayoutStrategy: TextureLayoutStrategy, shape: readonly number[], channels: 1|4 = 1,\n unpackedShape?: readonly number[], prefs?: WidthHeightPrefs): TextureLayout => {\n const isPacked = !!(prefs && prefs.isPacked);\n const [width, height] = textureLayoutStrategy.computeTextureWH(isPacked ? unpackedShape || shape : shape, prefs);\n const rank = shape.length;\n let inferredDims = shape.slice(0);\n if (rank === 0) {\n inferredDims = [1];\n }\n if (channels === 1) {\n // unpackedShape will take `shape` and not `inferredDims` so as to create a scalar Tensor if need be\n unpackedShape = shape;\n } else if (isPacked) {\n if (channels !== 4) {\n throw new Error('a packed texture must be 4-channel');\n }\n unpackedShape = shape;\n if (rank > 0) {\n inferredDims[rank - 1] = Math.ceil(inferredDims[rank - 1] / 2);\n }\n if (rank > 1) {\n inferredDims[rank - 2] = Math.ceil(inferredDims[rank - 2] / 2);\n }\n } else if (!unpackedShape) {\n throw new Error('Unpacked shape is needed when using channels > 1');\n }\n return {\n width,\n height,\n channels,\n isPacked,\n shape: inferredDims,\n strides: ShapeUtil.computeStrides(inferredDims),\n unpackedShape,\n reversedWH: (prefs && prefs.reverseWH)\n };\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceHandler} from '../../backend';\nimport {Logger} from '../../instrument';\nimport {Tensor} from '../../tensor';\nimport {ShapeUtil} from '../../util';\n\nimport {createPackProgramInfoLoader} from './ops/pack';\nimport {createPackedReshape3DProgramInfoLoader, isReshapeCheap, processDims3D} from './ops/reshape-packed';\nimport {encodeAsUint8} from './ops/uint8-encode';\nimport {createUnpackProgramInfoLoader} from './ops/unpack';\nimport {WebGLSessionHandler} from './session-handler';\nimport {EncoderUsage} from './texture-data-encoder';\nimport {calculateTextureWidthAndHeight, createTextureLayoutFromShape, createTextureLayoutFromTextureType} from './texture-layout';\nimport {Artifact, ProgramInfo, ProgramInfoLoader, TextureData, TextureLayout, TextureType} from './types';\n\nconst getProgramInfoUniqueKey =\n (programInfo: ProgramInfo|ProgramInfoLoader, inputTextureDatas: TextureData[]): string => {\n const inputs =\n inputTextureDatas.map(texture => `${texture.unpackedShape.join(',')};${texture.width}x${texture.height}`)\n .join('_');\n let key = programInfo.name;\n if (programInfo.cacheHint) {\n key += '[' + programInfo.cacheHint + ']';\n }\n key += ':' + inputs;\n return key;\n };\n\nexport class WebGLInferenceHandler implements InferenceHandler {\n private packedTextureDataCache: Map;\n private unpackedTextureDataCache: Map;\n constructor(public session: WebGLSessionHandler) {\n this.packedTextureDataCache = new Map();\n this.unpackedTextureDataCache = new Map();\n }\n\n /**\n * @returns [width, height]\n */\n calculateTextureWidthAndHeight(shape: readonly number[], textureType: TextureType): [number, number] {\n return calculateTextureWidthAndHeight(this.session.layoutStrategy, shape, textureType);\n }\n\n executeProgram(program: ProgramInfo|ProgramInfoLoader, inputs: readonly Tensor[]): TextureData {\n if (inputs.length < program.inputNames.length) {\n throw new Error(`Input size mustn't be less than ${program.inputNames.length}.`);\n }\n if (program.inputNames.length !== program.inputTypes.length) {\n throw new Error('input names size does not match input types');\n }\n\n // create texture info for input\n const inputTextureDatas: TextureData[] = [];\n for (let i = 0; i < program.inputNames.length; ++i) {\n inputTextureDatas[i] = this.getOrCreateTextureData(inputs[i], program.inputTypes[i]);\n }\n\n const key = getProgramInfoUniqueKey(program, inputTextureDatas);\n let artifact = this.session.programManager.getArtifact(key);\n const programInfo = artifact ?\n artifact.programInfo :\n (typeof (program as ProgramInfoLoader).get === 'function' ? (program as ProgramInfoLoader).get() :\n (program as ProgramInfo));\n\n // create texture info for output\n const outputTextureLayout = createTextureLayoutFromTextureType(\n this.session.layoutStrategy, programInfo.output.dims, programInfo.output.textureType);\n const outputTextureData = this.createTextureData(outputTextureLayout, programInfo.output.type);\n\n if (!artifact) {\n artifact = this.session.programManager.build(programInfo, inputTextureDatas, outputTextureData);\n this.session.programManager.setArtifact(key, artifact);\n }\n\n this.runProgram(artifact, inputTextureDatas, outputTextureData);\n return outputTextureData;\n }\n\n run(program: ProgramInfoLoader, inputs: readonly Tensor[]): Tensor {\n const outputTextureData = this.executeProgram(program, inputs);\n return outputTextureData.tensor;\n }\n\n private runProgram(artifact: Artifact, inputs: TextureData[], output: TextureData): void {\n // input should match\n for (let i = 0; i < inputs.length; ++i) {\n if (!!inputs[i].isPacked !== (artifact.programInfo.inputTypes[i] === TextureType.packed)) {\n throw new Error(`input[${i}] property packed inconsistent`);\n }\n }\n\n // output should match\n if (!!output.isPacked !== (artifact.programInfo.output.textureType === TextureType.packed)) {\n throw new Error('output property packed inconsistent');\n }\n\n this.session.programManager.run(artifact, inputs, output);\n }\n\n /**\n * Create a TextureData object from a tensor.\n * Usage = EncoderUsage.UploadOnly.\n * If a related texture data is found in cache, returns it;\n * Otherwise:\n * Creates a new texture layout if not provided;\n * Creates WebGLTexture with the layout;\n * Upload tensor data to the texture;\n * Creates a texture data object associated with the given tensor.\n * @param tensor the tensor with data to upload\n */\n private getOrCreateTextureData(tensor: Tensor, textureType: TextureType) {\n let td = this.getTextureData(tensor.dataId, textureType === TextureType.packed);\n\n if (!td) {\n // check if we have texture data in different type\n td = this.getTextureData(tensor.dataId, textureType !== TextureType.packed);\n if (td) {\n if (textureType === TextureType.packed) {\n return this.pack(td);\n } else {\n return this.unpack(td);\n }\n }\n }\n\n if (!td) {\n const layout = createTextureLayoutFromTextureType(this.session.layoutStrategy, tensor.dims, textureType);\n\n if (textureType === TextureType.packedLastDimension) {\n const group = 1;\n const channels = 4;\n const shape = tensor.dims;\n if (shape.length === 4) {\n // pre-processing for kernel data of Conv.\n //\n // TODO: currently this is a hacking to overwrite Conv's weight. The correct way to do this should be:\n // 1. implement texture based const-folding\n // 2. create a WebGL program \"preprocessConvWeight\" to do the same work as below\n // 3. run the program before dotProduct.\n //\n const adjustedKernelShape = [shape[0], Math.ceil((shape[1] * shape[2] * shape[3]) / channels)];\n const adjustedLayout =\n createTextureLayoutFromTextureType(this.session.layoutStrategy, adjustedKernelShape, textureType);\n let buffer = tensor.numberData;\n if (shape[1] * shape[2] * shape[3] % channels !== 0) {\n const numFeatureMaps = shape[0];\n const oldRowSize = shape[1] * shape[2] * shape[3];\n const newRowSize = Math.ceil(oldRowSize * group / channels) * channels;\n const newSize = numFeatureMaps * newRowSize;\n buffer = new Float32Array(newSize);\n for (let f = 0; f < numFeatureMaps; ++f) {\n const oldOffset = f * oldRowSize;\n const newOffset = f * newRowSize + f % group * oldRowSize;\n buffer.set(tensor.numberData.subarray(oldOffset, oldOffset + oldRowSize), newOffset);\n }\n }\n return this.createTextureData(adjustedLayout, tensor.type, buffer, tensor, EncoderUsage.UploadOnly);\n }\n }\n\n if (textureType === TextureType.packed) {\n const unpackedTextureLayout =\n createTextureLayoutFromShape(this.session.layoutStrategy, tensor.dims, 1, [], {reverseWH: true});\n const unpackedTextureData = this.createTextureData(\n unpackedTextureLayout, tensor.type, tensor.numberData, tensor, EncoderUsage.UploadOnly);\n td = this.pack(unpackedTextureData);\n } else {\n td = this.createTextureData(layout, tensor.type, tensor.numberData, tensor, EncoderUsage.UploadOnly);\n }\n }\n return td;\n }\n\n /**\n * Create a TextureData object using the given data and bind to the given tensor.\n * Usage = EncoderUsage.UploadOnly.\n * NOTE: this function is a hack for Conv implementation. should remove this function, after rewriting Conv\n * implementation by Graph.Transformer\n * @param dataType the tensor data type\n * @param data the actual data to upload\n * @param tensor the tensor to bind. tensor's data is ignored.\n */\n createTextureDataFromLayoutBindTensor(\n layout: TextureLayout, dataType: Tensor.DataType, data: Tensor.NumberType, tensor: Tensor): TextureData {\n return this.createTextureData(layout, dataType, data, tensor, EncoderUsage.UploadOnly);\n }\n\n private createTextureData(\n layout: TextureLayout, dataType: Tensor.DataType, data?: Tensor.NumberType, tensor?: Tensor,\n usage?: EncoderUsage): TextureData {\n Logger.verbose('InferenceHandler', `Creating TextureData: layout:[${JSON.stringify(layout)}]`);\n const texture = this.session.textureManager.createTextureFromLayout(dataType, layout, data, usage);\n return this.createTextureDataFromTexture(layout, dataType, texture, tensor);\n }\n\n reshapeUnpacked(input: Tensor, reshapedDims: readonly number[]): Tensor {\n const inputTD = this.getOrCreateTextureData(input, TextureType.unpacked);\n const newTextureLayout: TextureLayout = {\n channels: inputTD.channels,\n height: inputTD.height,\n width: inputTD.width,\n // handle reshaping into scalar Tensors\n shape: reshapedDims.length !== 0 ? reshapedDims : [1],\n strides: ShapeUtil.computeStrides(reshapedDims),\n unpackedShape: reshapedDims,\n };\n const newTextureData = this.createTextureDataFromTexture(newTextureLayout, input.type, inputTD.texture);\n return newTextureData.tensor;\n }\n\n reshapePacked(input: Tensor, reshapedDims: readonly number[]): Tensor {\n const inputTD = this.getOrCreateTextureData(input, TextureType.packed);\n\n // check if the reshape is 'cheap'\n if (isReshapeCheap(input.dims, reshapedDims)) {\n const newTextureLayout: TextureLayout = {\n channels: inputTD.channels,\n height: inputTD.height,\n width: inputTD.width,\n // handle reshaping into scalar Tensors\n shape: reshapedDims.length !== 0 ? reshapedDims : [1],\n strides: ShapeUtil.computeStrides(reshapedDims),\n unpackedShape: reshapedDims,\n isPacked: true\n };\n const newTextureData = this.createTextureDataFromTexture(newTextureLayout, input.type, inputTD.texture);\n return newTextureData.tensor;\n }\n\n const squeezedInputShape = processDims3D(input.dims);\n const squeezedOutputShape = processDims3D(reshapedDims);\n\n const squeezedInputTensor = this.reshapePacked(input, squeezedInputShape);\n const squeezedOutputTensor = this.run(\n createPackedReshape3DProgramInfoLoader(this, squeezedInputTensor, squeezedOutputShape), [squeezedInputTensor]);\n const outputTensor = this.reshapePacked(squeezedOutputTensor, reshapedDims);\n return outputTensor;\n }\n\n cast(input: Tensor, type: Tensor.DataType): Tensor {\n const inputTD = this.getOrCreateTextureData(input, TextureType.unpacked);\n const newTextureData = this.createTextureDataFromTexture(inputTD as TextureLayout, type, inputTD.texture);\n return newTextureData.tensor;\n }\n\n private createTextureDataFromTexture(\n layout: TextureLayout, dataType: Tensor.DataType, texture: WebGLTexture, tensor?: Tensor, tensorId?: Tensor.Id) {\n const textureData: TextureData = {\n ...layout,\n tensor: tensor ||\n new Tensor(\n layout.unpackedShape, dataType, (_id: Tensor.Id) => this.readTexture(textureData),\n async (_id: Tensor.Id) => this.readTextureAsync(textureData), undefined, tensorId),\n texture\n };\n this.setTextureData(textureData.tensor.dataId, textureData, layout.isPacked);\n return textureData;\n }\n\n private getTextureData(tensorId: Tensor.Id, isPacked = false): TextureData|undefined {\n return this.session.isInitializer(tensorId) ? this.session.getTextureData(tensorId, isPacked) :\n isPacked ? this.packedTextureDataCache.get(tensorId) :\n this.unpackedTextureDataCache.get(tensorId);\n }\n setTextureData(tensorId: Tensor.Id, td: TextureData, isPacked = false): void {\n if (this.session.isInitializer(tensorId)) {\n this.session.setTextureData(tensorId, td, isPacked);\n } else {\n (isPacked ? this.packedTextureDataCache : this.unpackedTextureDataCache).set(tensorId, td);\n }\n }\n isTextureLayoutCached(tensor: Tensor, isPacked = false): boolean {\n return !!this.getTextureData(tensor.dataId, isPacked);\n }\n\n dispose(): void {\n this.session.textureManager.clearActiveTextures();\n this.packedTextureDataCache.forEach(td => this.session.textureManager.releaseTexture(td));\n this.packedTextureDataCache = new Map();\n this.unpackedTextureDataCache.forEach(td => this.session.textureManager.releaseTexture(td));\n this.unpackedTextureDataCache = new Map();\n }\n\n readTexture(textureData: TextureData): Tensor.NumberType {\n if (textureData.isPacked) {\n return this.readTexture(this.unpack(textureData));\n }\n if (!this.session.backend.glContext.isFloat32DownloadSupported) {\n return this.session.textureManager.readUint8TextureAsFloat(encodeAsUint8(this, textureData));\n }\n return this.session.textureManager.readTexture(textureData, textureData.tensor.type, textureData.channels);\n }\n\n async readTextureAsync(textureData: TextureData): Promise {\n if (textureData.isPacked) {\n return this.readTextureAsync(this.unpack(textureData));\n }\n if (!this.session.backend.glContext.isFloat32DownloadSupported) {\n return this.session.textureManager.readUint8TextureAsFloat(encodeAsUint8(this, textureData));\n }\n return this.session.textureManager.readTextureAsync(textureData, textureData.tensor.type, textureData.channels);\n }\n\n pack(input: TextureData): TextureData {\n const outputTextureData = this.executeProgram(createPackProgramInfoLoader(this, input.tensor), [input.tensor]);\n return outputTextureData;\n }\n\n unpack(input: TextureData): TextureData {\n const outputTextureData = this.executeProgram(createUnpackProgramInfoLoader(this, input.tensor), [input.tensor]);\n return outputTextureData;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nclass AttributeWithCacheKeyImpl {\n constructor(attribute: Record) {\n Object.assign(this, attribute);\n }\n\n private key: string;\n public get cacheKey(): string {\n if (!this.key) {\n this.key =\n Object.getOwnPropertyNames(this).sort().map(name => `${(this as Record)[name]}`).join(';');\n }\n return this.key;\n }\n}\n\nexport interface AttributeWithCacheKey {\n readonly cacheKey: string;\n}\n\nexport const createAttributeWithCacheKey = >(attribute: T): T&AttributeWithCacheKey =>\n new AttributeWithCacheKeyImpl(attribute) as unknown as T & AttributeWithCacheKey;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nexport interface BatchNormalizationAttributes extends AttributeWithCacheKey {\n epsilon: number;\n momentum: number;\n spatial: number;\n}\n\nconst batchNormalizationProgramMetadata = {\n name: 'BatchNormalization',\n inputNames: ['A', 'Scale', 'B', 'Mean', 'Variance'],\n inputTypes:\n [TextureType.unpacked, TextureType.unpacked, TextureType.unpacked, TextureType.unpacked, TextureType.unpacked]\n};\n\nexport const batchNormalization: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: BatchNormalizationAttributes): Tensor[] => {\n validateInputs(inputs);\n const output = inferenceHandler.run(\n {\n ...batchNormalizationProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createBatchNormalizationProgramInfo(inferenceHandler, inputs, attributes)\n },\n inputs);\n return [output];\n };\n\nexport const parseBatchNormalizationAttributes: OperatorInitialization =\n (node: Graph.Node): BatchNormalizationAttributes => {\n const epsilon = node.attributes.getFloat('epsilon', 1e-5);\n const momentum = node.attributes.getFloat('momentum', 0.9);\n const spatial = node.attributes.getInt('spatial', 1);\n return createAttributeWithCacheKey({epsilon, momentum, spatial});\n };\n\nconst createBatchNormalizationProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: BatchNormalizationAttributes):\n ProgramInfo => {\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const rank = inputs[0].dims.length;\n const [scaleWidth, scaleHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(inputs[1].dims, TextureType.unpacked);\n const shaderSource = `\n float process(int[${rank}] indices) {\n vec2 position = offsetToCoords(indices[1], ${scaleWidth}, ${scaleHeight});\n float scale = getColorAsFloat(${glsl.texture2D}(Scale, position));\n float mean = getColorAsFloat(${glsl.texture2D}(Mean, position));\n float variance = getColorAsFloat(${glsl.texture2D}(Variance, position));\n float b = getColorAsFloat(${glsl.texture2D}(B, position));\n\n return scale * ( (_A(indices) - mean) / sqrt(variance + float(${attributes.epsilon})) ) + b;\n }`;\n return {\n ...batchNormalizationProgramMetadata,\n output: {dims: inputs[0].dims, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 5) {\n throw new Error('BatchNormalization requires 5 inputs.');\n }\n\n const X = inputs[0];\n const scale = inputs[1];\n const B = inputs[2];\n const mean = inputs[3];\n const var_ = inputs[4];\n\n // input should atleast have three dimensions - N,C,dim1,...,dimn\n // other inputs can have only one dimensions\n if (X.dims.length < 3 || scale.dims.length !== 1 || B.dims.length !== 1 || mean.dims.length !== 1 ||\n var_.dims.length !== 1) {\n throw new Error('invalid input shape.');\n }\n if (scale.dims[0] !== X.dims[1] || B.dims[0] !== X.dims[1] || mean.dims[0] !== X.dims[1] ||\n var_.dims[0] !== X.dims[1]) {\n throw new Error('invalid input shape.');\n }\n if ((X.type !== 'float32' && X.type !== 'float64') || (scale.type !== 'float32' && scale.type !== 'float64') ||\n (B.type !== 'float32' && B.type !== 'float64') || (mean.type !== 'float32' && mean.type !== 'float64') ||\n (var_.type !== 'float32' && var_.type !== 'float64')) {\n throw new Error('invalid input tensor types.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {ProgramInfo, TextureLayout} from './types';\nimport {WebGLContext} from './webgl-context';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum FunctionType {\n ValueBased,\n Positional\n}\nexport interface GlslFunction {\n body: string;\n name: string;\n type: T;\n}\nexport type GlslValueFunction = GlslFunction;\nexport interface GlslPositionalFunction extends GlslFunction {\n inputShape: readonly number[];\n outputShape: readonly number[];\n}\n\nexport class GlslContext {\n constructor(\n public glContext: WebGLContext, public programInfo: ProgramInfo, public inputTextureLayouts: TextureLayout[],\n public outputTextureLayout: TextureLayout) {}\n}\nexport abstract class GlslLib {\n constructor(public context: GlslContext) {}\n abstract getFunctions(): {[name: string]: GlslLibRoutine};\n abstract getCustomTypes(): {[name: string]: string};\n}\n\n// abstraction to represent a GLSL library routine and it's dependencies\nexport class GlslLibRoutine {\n constructor(public routineBody: string, public dependencies?: string[]) {}\n}\n\n// abstraction to represent a GLSL library routine and it's dependencies AS GRAPH Nodes\n// this level of abstraction is used to topologically sort routines before fragment shade inclusion\nexport class GlslLibRoutineNode {\n dependencies: GlslLibRoutineNode[];\n routineBody: string;\n constructor(public name: string, routineBody?: string, dependencies?: GlslLibRoutineNode[]) {\n if (dependencies) {\n this.dependencies = dependencies;\n } else {\n this.dependencies = [];\n }\n\n if (routineBody) {\n this.routineBody = routineBody;\n }\n }\n addDependency(node: GlslLibRoutineNode) {\n if (node) {\n this.dependencies.push(node);\n }\n }\n}\n\n// topologically sort GLSL library routines (graph nodes abstraction) before shader script inclusion\nexport class TopologicalSortGlslRoutines {\n static returnOrderedNodes(nodes: GlslLibRoutineNode[]): GlslLibRoutineNode[] {\n if (!nodes || nodes.length === 0) {\n return [];\n }\n\n if (nodes.length === 1) {\n return nodes;\n }\n\n const cycleCheck = new Set();\n const alreadyTraversed = new Set();\n const result = new Array();\n\n this.createOrderedNodes(nodes, cycleCheck, alreadyTraversed, result);\n return result;\n }\n\n private static createOrderedNodes(\n graphNodes: GlslLibRoutineNode[], cycleCheck: Set, alreadyTraversed: Set,\n result: GlslLibRoutineNode[]) {\n for (let i = 0; i < graphNodes.length; ++i) {\n this.dfsTraverse(graphNodes[i], cycleCheck, alreadyTraversed, result);\n }\n }\n\n private static dfsTraverse(\n root: GlslLibRoutineNode, cycleCheck: Set, alreadyTraversed: Set, result: GlslLibRoutineNode[]) {\n // if this root has already been traversed return\n if (!root || alreadyTraversed.has(root.name)) {\n return;\n }\n\n // cyclic dependency has been detected\n if (cycleCheck.has(root.name)) {\n throw new Error('Cyclic dependency detected. Can\\'t topologically sort routines needed for shader.');\n }\n\n // hold this node to detect cycles if any\n cycleCheck.add(root.name);\n\n // traverse children in a dfs fashion\n const dependencies = root.dependencies;\n if (dependencies && dependencies.length > 0) {\n for (let i = 0; i < dependencies.length; ++i) {\n this.dfsTraverse(dependencies[i], cycleCheck, alreadyTraversed, result);\n }\n }\n\n // add to result holder\n result.push(root);\n\n // mark this node as traversed so that we don't traverse from this again\n alreadyTraversed.add(root.name);\n\n // release the hold\n cycleCheck.delete(root.name);\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {BroadcastUtil, ShapeUtil} from '../../../util';\nimport {FunctionType, GlslValueFunction} from '../glsl-definitions';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, TextureType} from '../types';\n\nexport function glslAdd(): GlslValueFunction {\n const name = 'add_';\n const body = `\n float ${name}(float a, float b) {\n return a + b;\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return v1 + v2;\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslDiv(): GlslValueFunction {\n const name = 'div_';\n const body = `\n float ${name}(float a, float b) {\n return a / b;\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return v1 / v2;\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslMul(): GlslValueFunction {\n const name = 'mul_';\n const body = `\n float ${name}(float a, float b) {\n return a * b;\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return v1 * v2;\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslSub(): GlslValueFunction {\n const name = 'sub_';\n const body = `\n float ${name}(float a, float b) {\n return a - b;\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return v1 - v2;\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslEqual(): GlslValueFunction {\n const name = 'equal_';\n const body = `\n float ${name}(float a, float b) {\n return float(a == b);\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return vec4(equal(v1, v2));\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslGreater(): GlslValueFunction {\n const name = 'greater_';\n const body = `\n float ${name}(float a, float b) {\n return float(a > b);\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return vec4( v1.r > v2.r ,\n v1.g > v2.g,\n v1.b > v2.b,\n v1.a > v2.a );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslLess(): GlslValueFunction {\n const name = 'less_';\n const body = `\n float ${name}(float a, float b) {\n return float(a < b);\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return vec4( v1.r < v2.r ,\n v1.g < v2.g,\n v1.b < v2.b,\n v1.a < v2.a );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslAnd(): GlslValueFunction {\n const name = 'and_';\n const body = `\n float ${name}(float a, float b) {\n return float( bool(a) && bool(b) );\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n bvec4 b1 = bvec4(v1);\n bvec4 b2 = bvec4(v2);\n return vec4( b1.r && b2.r ,\n b1.g && b2.g,\n b1.b && b2.b,\n b1.a && b2.a );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslOr(): GlslValueFunction {\n const name = 'or_';\n const body = `\n float ${name}(float a, float b) {\n return float( bool(a) || bool(b) );\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n bvec4 b1 = bvec4(v1);\n bvec4 b2 = bvec4(v2);\n return vec4( b1.r || b2.r ,\n b1.g || b2.g,\n b1.b || b2.b,\n b1.a || b2.a );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslXor(): GlslValueFunction {\n const name = 'xor_';\n const body = `\n float ${name}(float a, float b) {\n return float( bool(a) ^^ bool(b) );\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n bvec4 b1 = bvec4(v1);\n bvec4 b2 = bvec4(v2);\n return vec4( b1.r ^^ b2.r ,\n b1.g ^^ b2.g,\n b1.b ^^ b2.b,\n b1.a ^^ b2.a );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslPow(): GlslValueFunction {\n return glslBuiltinBinary('pow');\n}\nexport function glslPRelu(): GlslValueFunction {\n const name = 'prelu_';\n const body = `\n float ${name}(float a, float b) {\n return a < 0.0 ? a * b: a;\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return vec4(\n v1.r < 0.0 ? v1.r * v2.r: v1.r,\n v1.g < 0.0 ? v1.g * v2.g: v1.g,\n v1.b < 0.0 ? v1.b * v2.b: v1.b,\n v1.a < 0.0 ? v1.a * v2.a: v1.a\n );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\n\nfunction glslBuiltinBinary(fname: string): GlslValueFunction {\n const name = `${fname}_`;\n const body = `\n float ${name}(float a, float b) {\n return ${fname}(a, b);\n }\n vec4 ${name}(vec4 v1, vec4 v2) {\n return ${fname}(v1, v2);\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\n\nconst createBinaryProgramInfoLoader =\n (handler: WebGLInferenceHandler, inputs: Tensor[], glslFunc: GlslValueFunction,\n outputTensorType: Tensor.DataType = inputs[0].type, cacheKey?: string): ProgramInfoLoader => {\n const textureType = handler.session.pack ? TextureType.packed : TextureType.unpacked;\n return {\n name: glslFunc.name,\n inputNames: ['A', 'B'],\n inputTypes: [textureType, textureType],\n cacheHint: cacheKey,\n get: () => createBinaryProgramInfo(handler, inputs, glslFunc, outputTensorType)\n };\n };\n\nconst createBinaryProgramInfo =\n (handler: WebGLInferenceHandler, inputs: Tensor[], glslFunc: GlslValueFunction,\n outputTensorType: Tensor.DataType = inputs[0].type): ProgramInfo => {\n const textureType = handler.session.pack ? TextureType.packed : TextureType.unpacked;\n const isBroadcast = !ShapeUtil.areEqual(inputs[0].dims, inputs[1].dims);\n let outputShape = inputs[0].dims;\n\n const usePackedTexture = handler.session.pack;\n\n if (isBroadcast) {\n const calculatedShape = BroadcastUtil.calcShape(inputs[0].dims, inputs[1].dims, false);\n if (!calculatedShape) {\n throw new Error('Can\\'t perform binary op on the given tensors');\n }\n outputShape = calculatedShape;\n const outputRank = outputShape.length;\n const aRank = inputs[0].dims.length !== 0 ? inputs[0].dims.length : 1;\n const bRank = inputs[1].dims.length !== 0 ? inputs[1].dims.length : 1;\n const aBcast = inputs[0].dims.length !== 0 ? 'bcastIndices_A(indices, aindices);' : 'aindices[0] = 0;';\n const bBcast = inputs[1].dims.length !== 0 ? 'bcastIndices_B(indices, bindices);' : 'bindices[0] = 0;';\n\n const glsl = getGlsl(handler.session.backend.glContext.version);\n const shaderSource = usePackedTexture ? `\n ${glslFunc.body}\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n vec4 result = ${glslFunc.name}(a, b);\n ${glsl.output} = result;\n }` :\n `\n ${glslFunc.body}\n float process(int indices[${outputRank}]) {\n int aindices[${aRank}];\n int bindices[${bRank}];\n ${aBcast}\n ${bBcast}\n return ${glslFunc.name}(_A(aindices), _B(bindices));\n }`;\n\n return {\n name: glslFunc.name,\n inputNames: ['A', 'B'],\n inputTypes: [textureType, textureType],\n output: {dims: outputShape, type: outputTensorType, textureType},\n shaderSource,\n hasMain: usePackedTexture\n };\n }\n const glsl = getGlsl(handler.session.backend.glContext.version);\n const shaderSource = `\n ${glslFunc.body}\n void main() {\n vec4 v1 = ${glsl.texture2D}(A, TexCoords);\n vec4 v2 = ${glsl.texture2D}(B, TexCoords);\n vec4 result = ${glslFunc.name}(v1, v2);\n ${glsl.output} = result;\n }\n `;\n\n return {\n name: glslFunc.name,\n inputNames: ['A', 'B'],\n inputTypes: [textureType, textureType],\n output: {dims: inputs[0].dims, type: outputTensorType, textureType},\n shaderSource,\n hasMain: true\n };\n };\n\nexport const add = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslAdd()), inputs)];\n\nexport const and = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslAnd(), 'bool'), inputs)];\n\nexport const div = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslDiv()), inputs)];\n\nexport const equal = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslEqual(), 'bool'), inputs)];\n\nexport const greater = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslGreater(), 'bool'), inputs)];\n\nexport const less = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslLess(), 'bool'), inputs)];\n\nexport const mul = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslMul()), inputs)];\n\nexport const or = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslOr(), 'bool'), inputs)];\n\nexport const pow = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslPow()), inputs)];\n\nexport const pRelu = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslPRelu()), inputs)];\n\nexport const sub = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslSub()), inputs)];\n\nexport const xor = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createBinaryProgramInfoLoader(handler, inputs, glslXor(), 'bool'), inputs)];\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ProtoUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nexport const cast: OperatorImplementation =\n (handler: WebGLInferenceHandler, inputs: Tensor[], to: Tensor.DataType): Tensor[] => {\n validateInputs(inputs);\n return [handler.cast(inputs[0], to)];\n };\n\nexport const parseCastAttributes: OperatorInitialization = (node: Graph.Node): Tensor.DataType =>\n ProtoUtil.tensorDataTypeFromProto(node.attributes.getInt('to'));\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Cast requires 1 input.');\n }\n\n if (inputs[0].type === 'string') {\n throw new Error('Invalid input type.');\n }\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\nimport {getCoordsDataType, getGlChannels} from '../utils';\n\nimport {ConcatAttributes} from './concat';\nimport {getChannels, unpackFromChannel} from './packing-utils';\n\nconst createPackedConcatProgramMetadata = (inputCount: number, cacheHint: string) => ({\n name: 'Concat (packed)',\n inputNames: Array.from({length: inputCount}, (_v, i) => `X${i}`),\n inputTypes: Array(inputCount).fill(TextureType.packed),\n cacheHint\n});\n\nconst createPackedConcatProgramInfo =\n (handler: WebGLInferenceHandler, metadata: ProgramMetadata, inputs: Tensor[], axis: number): ProgramInfo => {\n const inputShape = inputs[0].dims.slice();\n if (axis >= inputShape.length || axis < (-1 * inputShape.length)) {\n throw new Error('axis specified for concat doesn\\'t match input dimensionality');\n }\n if (axis < 0) {\n axis = inputShape.length + axis;\n }\n // ensure all of the non-concatenated axes match each other\n // calculate the shape of the output tensor while we do that\n const outputShape = inputShape.slice(0);\n for (let i = 1; i < inputs.length; i++) {\n const dataNShape = inputs[i].dims.slice();\n for (let axisIndex = 0; axisIndex < inputShape.length; axisIndex++) {\n // add to the placeholder for computing output shape\n if (axisIndex === axis) {\n outputShape[axis] += dataNShape[axisIndex];\n }\n // ensure all non-cancatenated axes match each other\n else if (inputShape[axisIndex] !== dataNShape[axisIndex]) {\n throw new Error('non concat dimensions must match');\n }\n }\n }\n\n const rank = outputShape.length;\n const coords = getChannels('coords', rank);\n const dtype = getCoordsDataType(rank);\n const unpackChannel = unpackFromChannel();\n\n const shapes = inputs.map(i => i.dims);\n const channels = getGlChannels(rank);\n const offsets: number[] = new Array(shapes.length - 1);\n\n offsets[0] = shapes[0][axis];\n for (let i = 1; i < offsets.length; i++) {\n offsets[i] = offsets[i - 1] + shapes[i][axis];\n }\n\n const channel = channels[axis];\n const lastChannels = channels.slice(-2);\n const allChannels = channels.join();\n\n let getValueSnippet = `if (${channel} < ${offsets[0]}) {\n return getChannel(\n getX0(${allChannels}), vec2(${lastChannels.join()}));\n }`;\n for (let i = 1; i < offsets.length; i++) {\n const shift = offsets[i - 1];\n getValueSnippet += `\n if (${channel} < ${offsets[i]} && ${channel} >= ${offsets[i - 1]}) {\n return getChannel(\n getX${i}(${getShiftedChannelsSnippet(channels, channel, shift)}),\n vec2(${getShiftedChannelsSnippet(lastChannels, channel, shift)}));\n }`;\n }\n const lastIndex = offsets.length;\n const shift = offsets[offsets.length - 1];\n getValueSnippet += `\n return getChannel(\n getX${lastIndex}(${getShiftedChannelsSnippet(channels, channel, shift)}),\n vec2(${getShiftedChannelsSnippet(lastChannels, channel, shift)}));`;\n\n const glsl = getGlsl(handler.session.backend.glContext.version);\n\n const shaderSource = `\n ${unpackChannel}\n float getValue(${channels.map(x => 'int ' + x)}) {\n ${getValueSnippet}\n }\n\n void main() {\n ${dtype} coords = getOutputCoords();\n int lastDim = coords.${channels[rank - 1]};\n coords.${channels[rank - 1]} = coords.${channels[rank - 2]};\n coords.${channels[rank - 2]} = lastDim;\n\n vec4 result = vec4(getValue(${coords}), 0., 0., 0.);\n\n ${coords[rank - 1]} = ${coords[rank - 1]} + 1;\n if (${coords[rank - 1]} < ${outputShape[rank - 1]}) {\n result.g = getValue(${coords});\n }\n\n ${coords[rank - 2]} = ${coords[rank - 2]} + 1;\n if (${coords[rank - 2]} < ${outputShape[rank - 2]}) {\n result.a = getValue(${coords});\n }\n\n ${coords[rank - 1]} = ${coords[rank - 1]} - 1;\n if (${coords[rank - 2]} < ${outputShape[rank - 2]} &&\n ${coords[rank - 1]} < ${outputShape[rank - 1]}) {\n result.b = getValue(${coords});\n }\n ${glsl.output} = result;\n }\n `;\n\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.packed},\n shaderSource,\n hasMain: true,\n };\n };\n\nexport const createPackedConcatProgramInfoLoader =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: ConcatAttributes): ProgramInfoLoader => {\n const metadata = createPackedConcatProgramMetadata(inputs.length, attributes.cacheKey);\n return {...metadata, get: () => createPackedConcatProgramInfo(handler, metadata, inputs, attributes.axis)};\n };\n\nconst getShiftedChannelsSnippet = (channels: string[], channel: string, shift: number): string => {\n const channelIdx = channels.indexOf(channel);\n const res = channels.map((c, idx) => {\n if (idx === channelIdx) {\n return `${c} - ${shift}`;\n } else {\n return c;\n }\n });\n return res.join();\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {createPackedConcatProgramInfoLoader} from './concat-packed';\n\nexport interface ConcatAttributes extends AttributeWithCacheKey {\n readonly axis: number;\n}\n\nexport const concat: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ConcatAttributes): Tensor[] => {\n validateInputs(inputs);\n if (inferenceHandler.session.pack && inputs[0].dims.length > 1) {\n const output =\n inferenceHandler.run(createPackedConcatProgramInfoLoader(inferenceHandler, inputs, attributes), inputs);\n return [output];\n } else {\n const output =\n inferenceHandler.run(createUnpackedConcatProgramInfoLoader(inferenceHandler, inputs, attributes), inputs);\n return [output];\n }\n };\n\nconst createUnpackedConcatProgramMetadata = (inputCount: number, cacheHint: string) => ({\n name: 'Concat',\n inputNames: Array.from({length: inputCount}, (_v, i) => `X${i}`),\n inputTypes: Array(inputCount).fill(TextureType.unpacked),\n cacheHint\n});\n\nconst createUnpackedConcatProgramInfo =\n (_handler: WebGLInferenceHandler, metadata: ProgramMetadata, inputs: Tensor[], axis: number): ProgramInfo => {\n const inputShape = inputs[0].dims.slice();\n if (axis >= inputShape.length || axis < (-1 * inputShape.length)) {\n throw new Error('axis specified for concat doesn\\'t match input dimensionality');\n }\n if (axis < 0) {\n axis = inputShape.length + axis;\n }\n // ensure all of the non-concatenated axes match each other\n // calculate the shape of the output tensor while we do that\n const outputShape = inputShape.slice(0);\n for (let i = 1; i < inputs.length; i++) {\n const dataNShape = inputs[i].dims.slice();\n for (let axisIndex = 0; axisIndex < inputShape.length; axisIndex++) {\n // add to the placeholder for computing output shape\n if (axisIndex === axis) {\n outputShape[axis] += dataNShape[axisIndex];\n }\n // ensure all non-cancatenated axes match each other\n else if (inputShape[axisIndex] !== dataNShape[axisIndex]) {\n throw new Error('non concat dimensions must match');\n }\n }\n }\n\n const rank = outputShape.length;\n\n const sizeInConcatAxis = new Array(inputs.length);\n let previousSum = 0;\n for (let i = 0; i < sizeInConcatAxis.length; ++i) {\n previousSum += inputs[i].dims[axis];\n sizeInConcatAxis[i] = previousSum;\n }\n\n let getTextureIndexWhereDataResidesMethod = '';\n // in most cases linear search is sufficient, as in most scenarios, only 2 tensors are concatenated\n if (inputs.length < 5) {\n getTextureIndexWhereDataResidesMethod = getTextureIndexWhereDataResidesLinearSearch(sizeInConcatAxis);\n } else {\n getTextureIndexWhereDataResidesMethod = getTextureIndexWhereDataResidesBinarySearch(sizeInConcatAxis);\n }\n\n const fetchDataFromCorrectTextureMethod = getFetchDataFromCorrectTextureMethod(inputs.length, rank);\n const getSizeInConcatAxisValueFromIndexMethod = getGetSizeInConcatAxisValueFromIndexMethod(sizeInConcatAxis);\n const shaderSource = `\n ${fetchDataFromCorrectTextureMethod}\n ${getSizeInConcatAxisValueFromIndexMethod}\n ${getTextureIndexWhereDataResidesMethod}\n float process(int indices[${rank}]) {\n int textureIndex = getTextureWhereDataResides (indices[${axis}]);\n\n if(textureIndex != 0) {\n indices[${axis}] = indices[${axis}] - int(getSizeInConcatAxisValueFromIndex(textureIndex-int(1)));\n }\n\n return fetchDataFromCorrectTexture(textureIndex, indices);\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource,\n };\n };\n\nconst createUnpackedConcatProgramInfoLoader =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: ConcatAttributes): ProgramInfoLoader => {\n const metadata = createUnpackedConcatProgramMetadata(inputs.length, attributes.cacheKey);\n return {...metadata, get: () => createUnpackedConcatProgramInfo(handler, metadata, inputs, attributes.axis)};\n };\n\nconst getTextureIndexWhereDataResidesLinearSearch = (sizeInConcatAxis: number[]): string => {\n const searchAxis = sizeInConcatAxis.map((size, i) => `if(index<${size}) {return ${i};}\n`);\n return `int getTextureWhereDataResides(int index) {\n ${searchAxis.join('')}\n }`;\n};\n\n// TODO: Implement BinarySearch in GLSL\nconst getTextureIndexWhereDataResidesBinarySearch = (sizeInConcatAxis: number[]): string =>\n getTextureIndexWhereDataResidesLinearSearch(sizeInConcatAxis);\n\nconst getFetchDataFromCorrectTextureMethod = (numberOfTensors: number, tensorRank: number) => {\n const codeLines: string[] = [`float fetchDataFromCorrectTexture(int textureIndex, int indices[${tensorRank}]) {`];\n for (let i = 0; i < numberOfTensors; ++i) {\n if (i === 0) {\n codeLines.push(\n '\\t' +\n `if (textureIndex == ${i}) { return _X${i}(indices); }`);\n } else if (i === numberOfTensors - 1) {\n codeLines.push(\n '\\t' +\n `else { return _X${i}(indices); }`);\n } else {\n codeLines.push(\n '\\t' +\n `else if (textureIndex == ${i}) { return _X${i}(indices); }`);\n }\n }\n codeLines.push(\n '\\t' +\n '}');\n return codeLines.join('\\n');\n};\n\nconst getGetSizeInConcatAxisValueFromIndexMethod = (sizeInConcatAxis: number[]): string => {\n const codeLines: string[] = ['int getSizeInConcatAxisValueFromIndex(int index) {'];\n for (let i = 0; i < sizeInConcatAxis.length; ++i) {\n if (i === 0) {\n codeLines.push(\n '\\t' +\n `if (index == ${i}) { return ${sizeInConcatAxis[i]}; }`);\n } else if (i === sizeInConcatAxis.length - 1) {\n codeLines.push(\n '\\t' +\n `else { return ${sizeInConcatAxis[i]}; }`);\n } else {\n codeLines.push(\n '\\t' +\n `else if (index == ${i}) { return ${sizeInConcatAxis[i]}; }`);\n }\n }\n codeLines.push(\n '\\t' +\n '}');\n\n return codeLines.join('\\n');\n};\n\nexport const parseConcatAttributes: OperatorInitialization = (node: Graph.Node): ConcatAttributes =>\n createAttributeWithCacheKey({axis: node.attributes.getInt('axis')});\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length < 1) {\n throw new Error('too few inputs');\n }\n\n const inputType = inputs[0].type;\n const inputDimensionality = inputs[0].dims.length;\n\n // TODO: Support string concat\n if (inputType === 'string') {\n throw new Error('string tensor is not supported yet');\n }\n\n for (const input of inputs) {\n // make sure types of all inputs match\n if (input.type !== inputType) {\n throw new Error('input tensors should be one type');\n }\n\n // make sure the dimensionality of all inputs are the same\n if (input.dims.length !== inputDimensionality) {\n throw new Error('input tensors should have the same shape');\n }\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {Tensor} from '../../../tensor';\nimport {MAX_CLIP, MIN_CLIP} from '../../../util';\nimport {FunctionType, GlslValueFunction} from '../glsl-definitions';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nexport function glslAbs(): GlslValueFunction {\n return glslBuiltinUnary('abs');\n}\nexport function glslAcos(): GlslValueFunction {\n return glslBuiltinUnary('acos');\n}\nexport function glslAsin(): GlslValueFunction {\n return glslBuiltinUnary('asin');\n}\nexport function glslAtan(): GlslValueFunction {\n return glslBuiltinUnary('atan');\n}\nexport function glslCeil(): GlslValueFunction {\n return glslBuiltinUnary('ceil');\n}\nexport function glslCos(): GlslValueFunction {\n return glslBuiltinUnary('cos');\n}\nexport function glslElu(alpha: number): GlslValueFunction {\n const name = 'elu';\n const body = `\n const float alpha = float(${alpha});\n\n float ${name}_(float a) {\n return a >= 0.0 ? a: (exp(a) - 1.0) * alpha;\n }\n vec4 ${name}_(vec4 v) {\n return vec4(${name}_(v.x), ${name}_(v.y), ${name}_(v.z), ${name}_(v.w));\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslExp(): GlslValueFunction {\n return glslBuiltinUnary('exp');\n}\nexport function glslFloor(): GlslValueFunction {\n return glslBuiltinUnary('floor');\n}\nexport function glslClip(min: number, max: number): GlslValueFunction {\n const name = 'clip';\n const body = `\n const float min = float(${min});\n const float max = float(${max});\n\n float ${name}_(float a) {\n return clamp(a, min, max);\n }\n vec4 ${name}_(vec4 v) {\n return clamp(v, min, max);\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslIdentity(): GlslValueFunction {\n const name = 'indentity';\n const body = `\n float ${name}_(float a) {\n return a;\n }\n vec4 ${name}_(vec4 v) {\n return v;\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslLeakyRelu(alpha: number): GlslValueFunction {\n const name = 'leakyRelu';\n const body = `\n const float alpha = float(${alpha});\n\n float ${name}_(float a) {\n return a < 0.0 ? a * alpha : a;\n }\n vec4 ${name}_(vec4 v) {\n return vec4(${name}_(v.x), ${name}_(v.y), ${name}_(v.z), ${name}_(v.w));\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslLog(): GlslValueFunction {\n return glslBuiltinUnary('log');\n}\nexport function glslNeg(): GlslValueFunction {\n const name = 'neg';\n const body = `\n float ${name}_(float a) {\n return -a;\n }\n vec4 ${name}_(vec4 v) {\n return -v;\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslNot(): GlslValueFunction {\n const name = 'not';\n const body = `\n float ${name}_(float a) {\n return float( ! bool(a) );\n }\n bool ${name}_(bool a) {\n return !a;\n }\n vec4 ${name}_(vec4 v) {\n return vec4(!bool(v.x), !bool(v.y), !bool(v.z), !bool(v.w));\n }\n bvec4 ${name}_(bvec4 v) {\n return bvec4(!v.x, !v.y, !v.z, !v.w);\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslSin(): GlslValueFunction {\n return glslBuiltinUnary('sin');\n}\nexport function glslRelu(): GlslValueFunction {\n const name = 'relu';\n const body = `\n float ${name}_(float a) {\n return max( a, 0.0 );\n }\n vec4 ${name}_(vec4 v) {\n return max( v, 0.0 );\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslSigmoid(): GlslValueFunction {\n const name = 'sigmoid';\n const body = `\n float ${name}_(float a) {\n return 1.0 / (1.0 + exp(-a));\n }\n vec4 ${name}_(vec4 v) {\n return 1.0 / (1.0 + exp(-v));\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nexport function glslSqrt(): GlslValueFunction {\n return glslBuiltinUnary('sqrt');\n}\nexport function glslTan(): GlslValueFunction {\n return glslBuiltinUnary('tan');\n}\nexport function glslTanh(): GlslValueFunction {\n const name = 'tanh';\n const body = `\n float ${name}_(float a) {\n a = clamp(a, -10., 10.);\n a = exp(2.*a);\n return (a - 1.) / (a + 1.);\n }\n vec4 ${name}_(vec4 v) {\n v = clamp(v, -10., 10.);\n v = exp(2.*v);\n return (v - 1.) / (v + 1.);\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\nfunction glslBuiltinUnary(name: string): GlslValueFunction {\n const body = `\n float ${name}_(float a) {\n return ${name}(a);\n }\n vec4 ${name}_(vec4 v) {\n return ${name}(v);\n }\n `;\n return {body, name, type: FunctionType.ValueBased};\n}\n\n/////\n/////\n/////\n\nconst createElementwiseProgramInfo =\n (handler: WebGLInferenceHandler, metadata: ProgramMetadata, input: Tensor, glslFunc: GlslValueFunction):\n ProgramInfo => {\n const textureType = handler.session.pack ? TextureType.packed : TextureType.unpacked;\n const glsl = getGlsl(handler.session.backend.glContext.version);\n return {\n ...metadata,\n output: {dims: input.dims, type: input.type, textureType},\n shaderSource: `\n ${glslFunc.body}\n void main() {\n vec4 v = ${glsl.texture2D}(A, TexCoords);\n v = ${glslFunc.name}_(v);\n ${glsl.output} = v;\n }\n `,\n hasMain: true\n };\n };\n\nconst createElementwiseProgramInfoLoader =\n (handler: WebGLInferenceHandler, input: Tensor, glslFunc: GlslValueFunction, cacheKey?: string):\n ProgramInfoLoader => {\n const textureType = handler.session.pack ? TextureType.packed : TextureType.unpacked;\n const metadata = {name: glslFunc.name, inputTypes: [textureType], inputNames: ['A'], cacheHint: cacheKey};\n return {...metadata, get: () => createElementwiseProgramInfo(handler, metadata, input, glslFunc)};\n };\n\nexport const abs = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslAbs()), inputs)];\n\nexport const acos = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslAcos()), inputs)];\n\nexport const asin = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslAsin()), inputs)];\n\nexport const atan = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslAtan()), inputs)];\n\nexport interface ClipAttributes extends AttributeWithCacheKey {\n readonly min: number;\n readonly max: number;\n}\n\nexport const clip =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: ClipAttributes): Tensor[] => [handler.run(\n createElementwiseProgramInfoLoader(\n handler, inputs[0], glslClip(attributes.min, attributes.max), attributes.cacheKey),\n inputs)];\n\nexport const parseClipAttributes = (node: Graph.Node): ClipAttributes => createAttributeWithCacheKey(\n {min: node.attributes.getFloat('min', MIN_CLIP), max: node.attributes.getFloat('max', MAX_CLIP)});\n\nexport const clipV11 = (handler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n const attributes = generateClipAttributesFromInputs(handler, inputs);\n return clip(handler, [inputs[0]], attributes);\n};\n\nconst generateClipAttributesFromInputs = (handler: WebGLInferenceHandler, inputs: Tensor[]): ClipAttributes => {\n if (inputs.length >= 3 &&\n (!handler.session.isInitializer(inputs[1].dataId) || !handler.session.isInitializer(inputs[2].dataId))) {\n throw new Error('dynamic clip attributes are not allowed');\n }\n\n const min = (inputs.length >= 3) ? inputs[1].numberData[0] : MIN_CLIP;\n const max = (inputs.length >= 3) ? inputs[2].numberData[0] : MAX_CLIP;\n return createAttributeWithCacheKey({min, max});\n};\n\nexport const ceil = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslCeil()), inputs)];\n\nexport const cos = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslCos()), inputs)];\n\nexport interface EluAttributes extends AttributeWithCacheKey {\n readonly alpha: number;\n}\n\nexport const elu =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: EluAttributes): Tensor[] => [handler.run(\n createElementwiseProgramInfoLoader(handler, inputs[0], glslElu(attributes.alpha), attributes.cacheKey),\n inputs)];\n\nexport const parseEluAttributes = (node: Graph.Node): EluAttributes =>\n createAttributeWithCacheKey({alpha: node.attributes.getFloat('alpha', 1.0)});\n\nexport const exp = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslExp()), inputs)];\n\nexport const floor = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslFloor()), inputs)];\n\nexport const identity = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslIdentity()), inputs)];\n\nexport interface LeakyReluAttributes extends AttributeWithCacheKey {\n readonly alpha: number;\n}\n\nexport const leakyRelu =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: LeakyReluAttributes): Tensor[] => [handler.run(\n createElementwiseProgramInfoLoader(handler, inputs[0], glslLeakyRelu(attributes.alpha), attributes.cacheKey),\n inputs)];\n\nexport const parseLeakyReluAttributes = (node: Graph.Node): LeakyReluAttributes =>\n createAttributeWithCacheKey({alpha: node.attributes.getFloat('alpha', 0.01)});\n\nexport const log = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslLog()), inputs)];\n\nexport const neg = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslNeg()), inputs)];\n\nexport const not = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslNot()), inputs)];\n\nexport const relu = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslRelu()), inputs)];\n\nexport const sigmoid = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslSigmoid()), inputs)];\n\nexport const sin = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslSin()), inputs)];\n\nexport const sqrt = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslSqrt()), inputs)];\n\nexport const tan = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslTan()), inputs)];\n\nexport const tanh = (handler: WebGLInferenceHandler, inputs: Tensor[]):\n Tensor[] => [handler.run(createElementwiseProgramInfoLoader(handler, inputs[0], glslTanh()), inputs)];\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Attribute} from '../../../attribute';\nimport {MAX_CLIP, MIN_CLIP} from '../../../util';\nimport {GlslValueFunction} from '../glsl-definitions';\n\nimport {glslClip, glslRelu, glslSigmoid} from './unary-op';\n\nexport interface InternalActivationAttributes {\n readonly activation: string;\n readonly clipMin?: number;\n readonly clipMax?: number;\n readonly activationCacheKey: string;\n}\n\nexport function getActivationSnippet(attributes: InternalActivationAttributes) {\n let func: GlslValueFunction;\n switch (attributes.activation) {\n case 'Relu':\n func = glslRelu();\n break;\n case 'Sigmoid':\n func = glslSigmoid();\n break;\n case 'Clip':\n func = glslClip(attributes.clipMin!, attributes.clipMax!);\n break;\n // TODO: adding other activations that can be fused.\n default:\n return {activationFunction: '', applyActivation: ''};\n }\n\n const activationName = func.name;\n const activationFunction = func.body;\n const applyActivation = `value = ${activationName}_(value);`;\n return {activationFunction, applyActivation};\n}\n\nexport const parseInternalActivationAttributes = (attributes: Attribute): InternalActivationAttributes => {\n const activation = attributes.getString('activation', '');\n\n if (activation === 'Clip') {\n const [clipMin, clipMax] = attributes.getFloats('activation_params', [MIN_CLIP, MAX_CLIP]);\n return {activation, clipMax, clipMin, activationCacheKey: `${activation}:${clipMin},${clipMax}`};\n }\n return {activation, activationCacheKey: activation};\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Logger} from '../../../instrument';\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {calculateOutputShape, ConvAttributes} from './conv';\nimport {getActivationSnippet} from './fuse-utils';\n\nconst createUnpackedGroupedConvProgramMetadata = (hasBias: boolean, cacheHint: string): ProgramMetadata => ({\n name: 'GroupedConv',\n inputNames: hasBias ? ['X', 'W', 'Bias'] : ['X', 'W'],\n inputTypes: hasBias ? [TextureType.unpacked, TextureType.unpacked, TextureType.unpacked] :\n [TextureType.unpacked, TextureType.unpacked],\n cacheHint\n});\n\nconst createUnpackedGroupedConvProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], metadata: ProgramMetadata,\n attributes: ConvAttributes): ProgramInfo => {\n const hasBias = inputs.length > 2;\n const processBias = hasBias ? 'value += getBias(output_channel);' : '';\n const xShape = inputs[0].dims.slice();\n const wShape = inputs[1].dims.slice();\n const outputChannelsPerGroup = wShape[0] / attributes.group;\n Logger.verbose(\n 'GroupedConv',\n `autpPad:${attributes.autoPad}, dilations:${attributes.dilations}, group:${attributes.group}, kernelShape:${\n attributes.kernelShape}, pads:${attributes.pads}, strides:${attributes.strides}`);\n const outputShape =\n calculateOutputShape(xShape, wShape, attributes.dilations, attributes.pads, attributes.strides);\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const {activationFunction, applyActivation} = getActivationSnippet(attributes);\n\n const shaderSource = `\n const ivec2 strides = ivec2(${attributes.strides[0]}, ${attributes.strides[1]});\n const ivec2 pads = ivec2(${attributes.pads[0]}, ${attributes.pads[1]});\n ${activationFunction}\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n int output_channel = coords.y;\n ivec2 xRCCorner = coords.zw * strides - pads;\n int group_id = output_channel / ${outputChannelsPerGroup};\n\n float value = 0.0;\n for (int wInChannel = 0; wInChannel < ${wShape[1]}; wInChannel++) {\n int input_channel = group_id * ${wShape[1]} + wInChannel;\n for (int wHeight = 0; wHeight < ${wShape[2]}; wHeight++) {\n int xHeight = xRCCorner.x + wHeight * ${attributes.dilations[0]};\n\n if (xHeight < 0 || xHeight >= ${xShape[2]}) {\n continue;\n }\n\n for (int wWidth = 0; wWidth < ${wShape[3]}; wWidth++) {\n int xWidth = xRCCorner.y + wWidth * ${attributes.dilations[1]};\n if (xWidth < 0 || xWidth >= ${xShape[3]}) {\n continue;\n }\n\n float xVal = getX(batch, input_channel, xWidth, xHeight);\n float wVal = getW(output_channel, wInChannel, wWidth, wHeight);\n value += xVal*wVal;\n }\n }\n }\n ${processBias}\n ${applyActivation}\n ${glsl.output} = vec4(value, .0, .0, .0);\n }\n`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource,\n hasMain: true,\n };\n };\n\nexport const createUnpackedGroupedConvProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvAttributes):\n ProgramInfoLoader => {\n const metadata = createUnpackedGroupedConvProgramMetadata(inputs.length > 2, attributes.cacheKey);\n return {\n ...metadata,\n get: () => createUnpackedGroupedConvProgramInfo(inferenceHandler, inputs, metadata, attributes)\n };\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {ConvAttributes} from './conv';\nimport {unpackFromChannel} from './packing-utils';\n\nconst createPackedIm2ColProgramMetadata = (cacheHint: string) => ({\n name: 'Im2Col (packed)',\n inputNames: ['A'],\n inputTypes: [TextureType.packed],\n cacheHint,\n});\n\nconst createPackedIm2ColProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, metadata: ProgramMetadata, x: Tensor, w: Tensor,\n outputShape: readonly number[], attributes: ConvAttributes): ProgramInfo => {\n const xshape = x.dims;\n const wshape = w.dims;\n const rowDim = 2;\n const colDim = 3;\n const rank = outputShape.length;\n const im2colShape = [wshape[1] * wshape[2] * wshape[3], outputShape[2] * outputShape[3]];\n const kernelSize = wshape[2] * wshape[3];\n const unpackChannel = unpackFromChannel();\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n let unrolled = '';\n\n for (let row = 0; row <= 1; row++) {\n for (let col = 0; col <= 1; col++) {\n unrolled += `\n blockIndex = rc.x + ${col};\n pos = rc.y + ${row};\n\n if(blockIndex < ${im2colShape[1]} && pos < ${im2colShape[0]}) {\n offsetY = int(blockIndex / (${outputShape[rank - 1]})) * ${attributes.strides[0]} -\n ${attributes.pads[0]};\n d0 = offsetY + ${attributes.dilations[0]} * (imod(pos, ${kernelSize}) / ${wshape[2]});\n\n if(d0 < ${xshape[rowDim]} && d0 >= 0) {\n offsetX = imod(blockIndex, ${outputShape[rank - 1]}) * ${attributes.strides[1]} -\n ${attributes.pads[1]};\n d1 = offsetX + ${attributes.dilations[1]} * imod(imod(pos, ${kernelSize}), ${wshape[2]});\n\n if(d1 < ${xshape[colDim]} && d1 >= 0) {\n\n ch = int(float(pos)/ ${kernelSize}.);\n innerDims = vec2(d0, d1);\n result[${row * 2 + col}] = getChannel(\n getA(0, ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n\n `;\n }\n }\n\n const shaderSource = `\n ${unpackChannel}\n\n void main() {\n ivec2 rc = getOutputCoords();\n vec4 result = vec4(0.0);\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n ${unrolled}\n ${glsl.output} = result;\n }\n `;\n return {\n ...metadata,\n output: {dims: im2colShape, type: x.type, textureType: TextureType.packed},\n shaderSource,\n hasMain: true\n };\n };\n\nexport const createPackedIm2ColProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, x: Tensor, w: Tensor, outputShape: readonly number[],\n attributes: ConvAttributes): ProgramInfoLoader => {\n const metadata = createPackedIm2ColProgramMetadata(attributes.cacheKey);\n return {\n ...metadata,\n get: () => createPackedIm2ColProgramInfo(inferenceHandler, metadata, x, w, outputShape, attributes)\n };\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {BroadcastUtil, ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\nimport {getCoordsDataType, getGlChannels} from '../utils';\n\nimport {getActivationSnippet, InternalActivationAttributes, parseInternalActivationAttributes} from './fuse-utils';\nimport {createPackedMatmulProgramInfoLoader} from './matmul-pack';\n\nexport const matMul: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: InternalActivationAttributes): Tensor[] => {\n validateInputs(inputs);\n\n if (inferenceHandler.session.pack) {\n return [inferenceHandler.run(\n createPackedMatmulProgramInfoLoader(inferenceHandler, inputs, attributes), inputs)];\n } else {\n return [inferenceHandler.run(createMatmulProgramInfoLoader(inputs, attributes), inputs)];\n }\n };\n\nexport const parseMatMulAttributes: OperatorInitialization =\n (node: Graph.Node): InternalActivationAttributes => parseInternalActivationAttributes(node.attributes);\n\nconst createMatmulProgramMetadata = (hasBias: boolean, cacheHint: string) => ({\n name: 'MatMul',\n inputNames: hasBias ? ['A', 'B', 'Bias'] : ['A', 'B'],\n inputTypes: hasBias ? [TextureType.unpacked, TextureType.unpacked, TextureType.unpacked] :\n [TextureType.unpacked, TextureType.unpacked],\n cacheHint\n});\n\nfunction createMatmulProgramInfo(\n metadata: ProgramMetadata, inputs: Tensor[], activationAttributes: InternalActivationAttributes): ProgramInfo {\n const aShape = inputs[0].dims;\n const bShape = inputs[1].dims;\n const outputShape = BroadcastUtil.calcShape(aShape, bShape, true);\n if (!outputShape) {\n throw new Error('Can\\'t use matmul on the given tensors');\n }\n const coordsDataType = getCoordsDataType(outputShape.length);\n const allGlChannels = getGlChannels();\n const {activationFunction, applyActivation} = getActivationSnippet(activationAttributes);\n\n const hasBias = inputs.length > 2;\n const processBias = hasBias ? 'value += getBiasForMatmul();' : '';\n const getBiasForMatmulSnippet =\n hasBias ? `${getBiasForMatmul(coordsDataType, allGlChannels, inputs[2].dims, outputShape, false)}` : '';\n\n const rank = outputShape.length;\n const arank = aShape.length;\n const brank = bShape.length;\n const sharedDim = aShape[aShape.length - 1];\n const shaderSource = `\n ${activationFunction}\n ${getBiasForMatmulSnippet}\n float process(int indices[${rank}]) {\n int a[${arank}];\n int b[${brank}];\n bcastMatmulIndices_A(indices, a);\n bcastMatmulIndices_B(indices, b);\n\n float value;\n for (int k=0; k<${sharedDim}; ++k) {\n a[${arank - 1}] = k;\n b[${brank - 2}] = k;\n value += _A(a) * _B(b);\n }\n ${processBias}\n ${applyActivation}\n return value;\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource,\n };\n}\n\nexport function createMatmulProgramInfoLoader(\n inputs: Tensor[], activationAttributes: InternalActivationAttributes): ProgramInfoLoader {\n const metadata = createMatmulProgramMetadata(inputs.length > 2, activationAttributes.activationCacheKey);\n return {...metadata, get: () => createMatmulProgramInfo(metadata, inputs, activationAttributes)};\n}\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 2) {\n throw new Error('MatMul requires 2 inputs.');\n }\n\n if (inputs[0].dims[inputs[0].dims.length - 1] !== inputs[1].dims[inputs[1].dims.length - 2]) {\n throw new Error('shared dimension does not match.');\n }\n\n if ((inputs[0].type !== 'float32' && inputs[0].type !== 'float64') ||\n (inputs[1].type !== 'float32' && inputs[1].type !== 'float64')) {\n throw new Error('inputs should be float type');\n }\n\n if (inputs[0].type !== inputs[1].type) {\n throw new Error('inputs types should match');\n }\n};\n\nexport function getBiasForMatmul(\n coordsDataType: string, allGlChannels: readonly string[], inShape: readonly number[], outShape: readonly number[],\n isPacked: boolean): string {\n let unpackedCoordsSnippet = '';\n const inRank = inShape.length;\n const outRank = outShape.length;\n const rankDiff = outRank - inRank;\n if (outRank < 2 && inRank > 0) {\n unpackedCoordsSnippet = 'coords';\n } else {\n unpackedCoordsSnippet = inShape.map((_s, i) => `coords.${allGlChannels[i + rankDiff]}`).join(', ');\n }\n const broadcastDims = BroadcastUtil.getBroadcastDims(inShape, outShape);\n const coordsSnippet = broadcastDims.map(d => `coords.${allGlChannels[d + rankDiff]} = 0;`).join('\\n');\n const inSize = ShapeUtil.size(inShape);\n const isInputScalar = inSize === 1;\n let output = 'vec4(outputValue.xx, outputValue.yy)';\n if (isInputScalar) {\n output = 'vec4(outputValue.x)';\n }\n const getBiasForMatmulSource = isPacked ? `\nvec4 getBiasForMatmul() {\n ${coordsDataType} coords = getOutputCoords();\n ${coordsSnippet}\n vec4 outputValue = getBias(${unpackedCoordsSnippet});\n return ${output};\n}` :\n `\nfloat getBiasForMatmul() {\n ${coordsDataType} coords = getOutputCoords();\n ${coordsSnippet}\n return getBias(coords.x);\n}`;\n\n return getBiasForMatmulSource;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {BroadcastUtil, ShapeUtil} from '../../../util';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\nimport {getCoordsDataType, getGlChannels} from '../utils';\n\nimport {getActivationSnippet, InternalActivationAttributes} from './fuse-utils';\nimport {getBiasForMatmul} from './matmul';\n\nconst createPackedMatmulProgramMetadata = (hasBias: boolean, cacheHint: string) => ({\n name: 'MatMul (packed)',\n inputNames: hasBias ? ['A', 'B', 'Bias'] : ['A', 'B'],\n inputTypes: hasBias ? [TextureType.packed, TextureType.packed, TextureType.packed] :\n [TextureType.packed, TextureType.packed],\n cacheHint\n});\n\nconst createPackedMatmulProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, metadata: ProgramMetadata, inputs: Tensor[],\n activationAttributes: InternalActivationAttributes): ProgramInfo => {\n const hasBias = inputs.length > 2;\n const processBias = hasBias ? 'value += getBiasForMatmul();' : '';\n const aShape = inputs[0].dims;\n const bShape = inputs[1].dims;\n const outputShape = BroadcastUtil.calcShape(aShape, bShape, true);\n const isBroadcast = !ShapeUtil.areEqual(inputs[0].dims, inputs[1].dims);\n\n if (!outputShape) {\n throw new Error('Can\\'t use matmul on the given tensors');\n }\n const sharedDim = aShape[aShape.length - 1];\n const sharedDimIndex = Math.ceil(sharedDim / 2);\n const aRank = aShape.length;\n const bRank = bShape.length;\n\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const coordsDataType = getCoordsDataType(outputShape.length);\n const outRank = outputShape.length;\n const allGlChannels = getGlChannels();\n const {activationFunction, applyActivation} = getActivationSnippet(activationAttributes);\n\n const getBiasForMatmulSnippet =\n hasBias ? `${getBiasForMatmul(coordsDataType, allGlChannels, inputs[2].dims, outputShape, true)}` : '';\n\n const getBcastedSamplerForMatmulSnippet =\n isBroadcast ? `${getBcastSamplerForMatmul(coordsDataType, allGlChannels, inputs, outputShape)}` : '';\n\n const getSamplerAInLoopSnippet = isBroadcast ? 'getAAtOutCoordsMatmul(i)' : `getA(${getA(allGlChannels, aRank)})`;\n const getSamplerBInLoopSnippet = isBroadcast ? 'getBAtOutCoordsMatmul(i)' : `getB(${getB(allGlChannels, bRank)})`;\n const getOutputCoordsSnippet = isBroadcast ? '' : `${coordsDataType} rc =\n getOutputCoords(); int lastDim = rc.${allGlChannels[outRank - 1]}; rc.${allGlChannels[outRank - 1]} =\n rc.${allGlChannels[outRank - 2]}; rc.${allGlChannels[outRank - 2]} = lastDim;\n `;\n const shaderSource = `\n ${getBcastedSamplerForMatmulSnippet}\n ${getBiasForMatmulSnippet}\n ${activationFunction}\n void main() {\n ${getOutputCoordsSnippet}\n\n vec4 value = vec4(0);\n for (int i = 0; i < ${sharedDimIndex}; i++) {\n vec4 a = ${getSamplerAInLoopSnippet};\n vec4 b = ${getSamplerBInLoopSnippet};\n\n value += (a.rrbb * b.rgrg);\n value += (a.ggaa * b.baba);\n }\n ${processBias}\n ${applyActivation}\n ${glsl.output} = value;\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.packed},\n shaderSource,\n hasMain: true\n };\n };\n\nexport const createPackedMatmulProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[],\n activationAttributes: InternalActivationAttributes): ProgramInfoLoader => {\n const metadata = createPackedMatmulProgramMetadata(inputs.length > 2, activationAttributes.activationCacheKey);\n return {\n ...metadata,\n get: () => createPackedMatmulProgramInfo(inferenceHandler, metadata, inputs, activationAttributes)\n };\n };\n\nfunction getBcastSamplerForMatmul(\n coordsDataType: string, allGlChannels: readonly string[], inputs: Tensor[], outShape: readonly number[]): string {\n let unpackedACoordsSnippet = [];\n let unpackedBCoordsSnippet = [];\n\n const inAShape = inputs[0].dims;\n const inBShape = inputs[1].dims;\n\n const inARank = inAShape.length;\n const inBRank = inBShape.length;\n\n const outRank = outShape.length;\n const rankADiff = outRank - inARank;\n const rankBDiff = outRank - inBRank;\n\n unpackedACoordsSnippet = inAShape.map((_s, i) => `coords.${allGlChannels[i + rankADiff]}`);\n unpackedACoordsSnippet[inARank - 1] = 'i*2';\n unpackedACoordsSnippet.join(', ');\n unpackedBCoordsSnippet = inBShape.map((_s, i) => `coords.${allGlChannels[i + rankBDiff]}`);\n unpackedBCoordsSnippet[inBRank - 2] = 'i*2';\n unpackedBCoordsSnippet.join(', ');\n\n const broadcastADims = BroadcastUtil.getBroadcastDims(inAShape, outShape);\n const broadcastBDims = BroadcastUtil.getBroadcastDims(inBShape, outShape);\n\n const coordsASnippet = broadcastADims.map(d => `coords.${allGlChannels[d + rankADiff]} = 0;`).join('\\n');\n const coordsBSnippet = broadcastBDims.map(d => `coords.${allGlChannels[d + rankBDiff]} = 0;`).join('\\n');\n const swapDimSnippet = `int lastDim = coords.${allGlChannels[outRank - 1]};\n coords.${allGlChannels[outRank - 1]} = coords.${allGlChannels[outRank - 2]};\n coords.${allGlChannels[outRank - 2]} = lastDim;`;\n\n const getBcastSamplerMatmulSource = `\nvec4 getAAtOutCoordsMatmul(int i) {\n ${coordsDataType} coords = getOutputCoords();\n ${swapDimSnippet}\n ${coordsASnippet}\n vec4 outputValue = getA(${unpackedACoordsSnippet});\n return outputValue;\n}\n\nvec4 getBAtOutCoordsMatmul(int i) {\n ${coordsDataType} coords = getOutputCoords();\n ${swapDimSnippet}\n ${coordsBSnippet}\n vec4 outputValue = getB(${unpackedBCoordsSnippet});\n return outputValue;\n}`;\n\n return getBcastSamplerMatmulSource;\n}\n\nfunction getA(allGlChannels: string[], rank: number): string {\n let res = '';\n for (let i = 0; i < rank - 2; i++) {\n res += `rc.${allGlChannels[i]}, `;\n }\n res += `rc.${allGlChannels[rank - 2]}, ` +\n 'i*2';\n return res;\n}\n\nfunction getB(allGlChannels: string[], rank: number): string {\n let res = '';\n for (let i = 0; i < rank - 2; i++) {\n res += `rc.${allGlChannels[i]}, `;\n }\n res += 'i*2, ' +\n `rc.${allGlChannels[rank - 1]}`;\n return res;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nimport {calculateOutputShape, ConvAttributes} from './conv';\nimport {createPackedIm2ColProgramInfoLoader} from './im2col-pack';\nimport {createPackedMatmulProgramInfoLoader} from './matmul-pack';\n\nexport const conv2DPackedPointwise =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvAttributes): Tensor => {\n const xshape = inputs[0].dims;\n const kshape = inputs[1].dims;\n const outputShape =\n calculateOutputShape(xshape, kshape, attributes.dilations, attributes.pads, attributes.strides);\n const reshapedX = inferenceHandler.reshapePacked(inputs[0], [xshape[1], xshape[2] * xshape[3]]);\n const reshapedK = inferenceHandler.reshapePacked(inputs[1], [kshape[0], kshape[1]]);\n\n const matmulInputs = inputs.length > 2 ? [reshapedK, reshapedX, inputs[2]] : [reshapedK, reshapedX];\n const matmulOutput = inferenceHandler.run(\n createPackedMatmulProgramInfoLoader(inferenceHandler, matmulInputs, attributes), matmulInputs);\n return inferenceHandler.reshapePacked(matmulOutput, outputShape);\n };\n\nexport const conv2DPacked =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvAttributes): Tensor => {\n const xshape = inputs[0].dims;\n const kshape = inputs[1].dims;\n const outputShape =\n calculateOutputShape(xshape, kshape, attributes.dilations, attributes.pads, attributes.strides);\n\n // run im2col\n const im2colOutput = inferenceHandler.run(\n createPackedIm2ColProgramInfoLoader(inferenceHandler, inputs[0], inputs[1], outputShape, attributes),\n [inputs[0]]);\n\n // reshape kernel\n const kernelReshaped = inferenceHandler.reshapePacked(inputs[1], [kshape[0], kshape[1] * kshape[2] * kshape[3]]);\n\n // run matmul\n const matmulInputs =\n (inputs.length === 3) ? [kernelReshaped, im2colOutput, inputs[2]] : [kernelReshaped, im2colOutput];\n const matmulOutput = inferenceHandler.run(\n createPackedMatmulProgramInfoLoader(inferenceHandler, matmulInputs, attributes), matmulInputs);\n\n // reshape output\n const outputReshaped = inferenceHandler.reshapePacked(matmulOutput, outputShape);\n return outputReshaped;\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {ConvAttributes} from './conv';\n\nconst createIm2ColProgramMetadata = (cacheHint: string) => ({\n name: 'Im2Col',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked],\n cacheHint,\n});\n\nconst createIm2ColProgramInfo =\n (_inferenceHandler: WebGLInferenceHandler, metadata: ProgramMetadata, x: Tensor, w: Tensor,\n outputShape: readonly number[], attributes: ConvAttributes): ProgramInfo => {\n const xshape = x.dims;\n const wshape = w.dims;\n\n const rank = outputShape.length;\n const im2colDims = calculateIm2ColDims(xshape, wshape, outputShape, 4);\n\n const shaderSource = `\n const int XC = ${xshape[1]};\n const int XH = ${xshape[2]};\n const int XW = ${xshape[3]};\n const int KH = ${attributes.kernelShape[0]};\n const int KW = ${attributes.kernelShape[1]};\n const int dilationH = ${attributes.dilations[0]};\n const int dilationW = ${attributes.dilations[1]};\n const int strideH = ${attributes.strides[0]};\n const int strideW = ${attributes.strides[1]};\n const int padH = ${attributes.pads[0]};\n const int padW = ${attributes.pads[1]};\n const int KHKW = KH*KW;\n const int XCKHKW = XC * KHKW;\n const int outputChannels = 4;\n vec4 process(int indices[${rank}]) {\n int b = indices[0]; // batch size\n int oh = indices[1] * strideH - padH; //output height\n int ow = indices[2] * strideW - padW; //output width\n int p = indices[3] * outputChannels; //patch\n vec4 value = vec4(0.0);\n for(int i=0; i < outputChannels; ++i) {\n if(p < XCKHKW) {\n int patchC = p / KHKW;\n int patchH = (p - patchC*KHKW) / KW;\n int patchW = (p - patchC*KHKW) - patchH * KW;\n int xh2 = oh + patchH * dilationH;\n int xw2 = ow + patchW * dilationW;\n int x[${xshape.length}];\n x[0] = b;\n x[1] = patchC;\n x[2] = xh2;\n x[3] = xw2;\n if(xh2 >= 0 &&\n xh2 < XH &&\n xw2 >= 0 &&\n xw2 < XW) {\n value[i] = _X(x);\n }\n }\n ++p;\n }\n return value;\n }\n `;\n return {\n ...metadata,\n output: {dims: im2colDims, type: x.type, textureType: TextureType.packedLastDimension},\n shaderSource\n };\n };\n\nexport const createIm2ColProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, x: Tensor, w: Tensor, outputShape: readonly number[],\n attributes: ConvAttributes): ProgramInfoLoader => {\n const metadata = createIm2ColProgramMetadata(attributes.cacheKey);\n return {\n ...metadata,\n get: () => createIm2ColProgramInfo(inferenceHandler, metadata, x, w, outputShape, attributes)\n };\n };\n\n\nexport const calculateIm2ColDims =\n (inputShape: readonly number[], kernelShape: readonly number[], outputShape: readonly number[], channels = 4):\n number[] =>\n [outputShape[0], outputShape[2], outputShape[3],\n Math.ceil(inputShape[1] * kernelShape[2] * kernelShape[3] / channels)];\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {getActivationSnippet, InternalActivationAttributes} from './fuse-utils';\nimport {calculateIm2ColDims} from './im2col';\n\nconst createDotProductProgramMetadata = (hasBias: boolean, attributes: InternalActivationAttributes) => ({\n name: 'ConvDotProduct',\n inputNames: hasBias ? ['Im2Col', 'K', 'B'] : ['Im2Col', 'K'],\n inputTypes: hasBias ? [TextureType.unpacked, TextureType.packedLastDimension, TextureType.unpacked] :\n [TextureType.unpacked, TextureType.packedLastDimension],\n cacheKey: attributes.activationCacheKey\n});\n\nconst createDotProductProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, metadata: ProgramMetadata, inputs: readonly Tensor[],\n outputShape: number[], attributes: InternalActivationAttributes): ProgramInfo => {\n const xshape = inputs[0].dims;\n const kshape = inputs[1].dims;\n const adjustedKernelShape = [kshape[0], Math.ceil((xshape[1] * kshape[2] * kshape[3]) / 4)];\n const im2colShape = calculateIm2ColDims(xshape, kshape, outputShape);\n const [kWidth, kHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(adjustedKernelShape, TextureType.packedLastDimension);\n\n const im2colStrides = ShapeUtil.computeStrides(im2colShape);\n const [im2colWidth, im2colHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(im2colShape, TextureType.packedLastDimension);\n const rank = outputShape.length;\n\n const initValue = (inputs.length < 3) ? '0.0' : '_B(b)';\n const sharedDim = Math.ceil(xshape[1] * kshape[2] * kshape[3] / 4);\n const {activationFunction, applyActivation} = getActivationSnippet(attributes);\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const shaderSource = `\n${activationFunction}\nfloat process(int indices[${rank}]) {\n int b[1];\n b[0] = indices[1];\n int im2col[4];\n im2col[0] = indices[0];\n im2col[1] = indices[2];\n im2col[2] = indices[3];\n int im2colOffset = im2col[0] * ${im2colStrides[0]} + im2col[1] * ${im2colStrides[1]} + im2col[2] * ${\n im2colStrides[2]};\n int kernelOffset = indices[1] * ${adjustedKernelShape[1]};\n float value = ${initValue};\n for (int i = 0; i < ${sharedDim}; ++i) {\n vec2 im2colCoords = offsetToCoords(im2colOffset, ${im2colWidth}, ${im2colHeight});\n vec2 kernelCoords = offsetToCoords(kernelOffset, ${kWidth}, ${kHeight});\n value += dot(${glsl.texture2D}(Im2Col, im2colCoords), ${glsl.texture2D}(K, kernelCoords));\n ++im2colOffset;\n ++kernelOffset;\n }\n ${applyActivation}\n return value;\n}`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nexport const createDotProductProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], outputShape: number[],\n attributes: InternalActivationAttributes): ProgramInfoLoader => {\n const metadata = createDotProductProgramMetadata(inputs.length > 2, attributes);\n return {\n ...metadata,\n get: () => createDotProductProgramInfo(inferenceHandler, metadata, inputs, outputShape, attributes)\n };\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {InferenceHandler} from '../../../backend';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {PoolConvUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nimport {createUnpackedGroupedConvProgramInfoLoader} from './conv-grouped';\nimport {conv2DPacked} from './conv-pack';\nimport {createDotProductProgramInfoLoader} from './dot-product';\nimport {InternalActivationAttributes, parseInternalActivationAttributes} from './fuse-utils';\nimport {createIm2ColProgramInfoLoader} from './im2col';\nimport {createMatmulProgramInfoLoader} from './matmul';\n\n\nexport const calculateOutputShape =\n (inputShape: readonly number[], kernelShape: readonly number[], dilations: readonly number[],\n adjustPads: readonly number[], strides: readonly number[]): number[] => {\n const batchSize = inputShape[0];\n const inputSpatialShape = inputShape.slice(2);\n const spatialRank = inputSpatialShape.length;\n const outChannels = kernelShape[0];\n const kernelSpatialShape = kernelShape.slice(2);\n const dilatedKernelShape = kernelSpatialShape.map((v, i) => v + (v - 1) * (dilations[i] - 1));\n const inputSpatialShapeWithPad = inputSpatialShape.map((v, i) => v + adjustPads[i] + adjustPads[i + spatialRank]);\n const outputSpatialShape =\n inputSpatialShapeWithPad.map((v, i) => Math.floor((v - dilatedKernelShape[i] + strides[i]) / strides[i]));\n const outputShape = [batchSize, outChannels].concat(...outputSpatialShape);\n return outputShape;\n };\n\nexport interface ConvAttributes extends InternalActivationAttributes, AttributeWithCacheKey {\n readonly autoPad: string;\n readonly dilations: readonly number[];\n readonly group: number;\n readonly kernelShape: readonly number[];\n readonly pads: readonly number[];\n readonly strides: readonly number[];\n}\n\nexport const conv: OperatorImplementation =\n (inferenceHandler: InferenceHandler, inputs: Tensor[], attributes: ConvAttributes): Tensor[] => {\n validateInputs(inputs, attributes); // currently will fail if not conv2D\n return conv2d(inferenceHandler, inputs, attributes);\n };\n\nconst conv2d: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ConvAttributes): Tensor[] => {\n const adjustedAttributes = getAdjustedConvAttributes(attributes, inputs);\n const packMode = inferenceHandler.session.pack;\n const isPointwise = adjustedAttributes.kernelShape[0] === 1 && adjustedAttributes.kernelShape[1] === 1;\n if (adjustedAttributes.group > 1) {\n const result = inferenceHandler.run(\n createUnpackedGroupedConvProgramInfoLoader(inferenceHandler, inputs, adjustedAttributes), inputs);\n return [result];\n } else if (isPointwise && packMode) {\n return [conv2DUnpackedPointwise(inferenceHandler, inputs, adjustedAttributes)];\n } else if (packMode && inputs[0].dims.length === 4 && inputs[0].dims[0] === 1 && !isPointwise) {\n return [conv2DPacked(inferenceHandler, inputs, adjustedAttributes)];\n } else {\n return [conv2DUnpacked(inferenceHandler, inputs, adjustedAttributes)];\n }\n };\n\nconst conv2DUnpackedPointwise =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvAttributes): Tensor => {\n const xshape = inputs[0].dims;\n const kshape = inputs[1].dims;\n const outputShape =\n calculateOutputShape(xshape, kshape, attributes.dilations, attributes.pads, attributes.strides);\n const reshapedX = inferenceHandler.reshapeUnpacked(inputs[0], [xshape[1], xshape[2] * xshape[3]]);\n const reshapedK = inferenceHandler.reshapeUnpacked(inputs[1], [kshape[0], kshape[1]]);\n\n const matmulInputs = inputs.length > 2 ? [reshapedK, reshapedX, inputs[2]] : [reshapedK, reshapedX];\n const matmulOutput = inferenceHandler.run(createMatmulProgramInfoLoader(matmulInputs, attributes), matmulInputs);\n return inferenceHandler.reshapeUnpacked(matmulOutput, outputShape);\n };\n\nconst conv2DUnpacked =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvAttributes): Tensor => {\n const xshape = inputs[0].dims;\n const kshape = inputs[1].dims;\n const outputShape =\n calculateOutputShape(xshape, kshape, attributes.dilations, attributes.pads, attributes.strides);\n const xIm2Col = inferenceHandler.run(\n createIm2ColProgramInfoLoader(inferenceHandler, inputs[0], inputs[1], outputShape, attributes), [inputs[0]]);\n\n const dotProductInputs = inputs.length === 3 ? [xIm2Col, inputs[1], inputs[2]] : [xIm2Col, inputs[1]];\n const output = inferenceHandler.run(\n createDotProductProgramInfoLoader(inferenceHandler, inputs, outputShape, attributes), dotProductInputs);\n return output;\n };\n\nconst getAdjustedConvAttributes = (attributes: T, inputs: Tensor[]): T => {\n const kernelShape = attributes.kernelShape.slice();\n // if kernelShape is not specified in the attributes of this op, infer it from the weight tensor dims\n if (attributes.kernelShape.length === 0) {\n for (let i = 2; i < inputs[1].dims.length; ++i) {\n kernelShape.push(inputs[1].dims[i]);\n }\n }\n const pads = attributes.pads.slice();\n PoolConvUtil.adjustPadsBasedOnAutoPad(\n inputs[0].dims, attributes.strides, attributes.dilations, kernelShape, pads, attributes.autoPad);\n\n // always return a new object so does not modify the original attributes\n const newAttributes: T = Object.assign({}, attributes);\n Object.assign(newAttributes, {kernelShape, pads, cacheKey: attributes.cacheKey});\n return newAttributes;\n};\n\nexport const parseConvAttributes: OperatorInitialization = (node: Graph.Node): ConvAttributes => {\n const attributes = node.attributes;\n const activationAttributes = parseInternalActivationAttributes(attributes);\n // TODO : Make this generic enough to compute default attributes for multi-dimensional conv\n const autoPad = attributes.getString('auto_pad', 'NOTSET');\n const dilations = attributes.getInts('dilations', [1, 1]);\n const group = attributes.getInt('group', 1);\n const kernelShape = attributes.getInts('kernel_shape', []);\n const pads = attributes.getInts('pads', [0, 0, 0, 0]);\n const strides = attributes.getInts('strides', [1, 1]);\n\n return createAttributeWithCacheKey({autoPad, dilations, group, kernelShape, pads, strides, ...activationAttributes});\n};\n\nconst validateInputs = (inputs: Tensor[], attributes: ConvAttributes): void => {\n // Refer to the below link for all input checks\n // https://github.com/onnx/onnx/blob/main/docs/Operators.md#Conv\n if (!inputs || (inputs.length !== 2 && inputs.length !== 3)) {\n throw new Error('Conv requires 2 or 3 inputs');\n }\n\n // TODO : Need to add support for multi-dimensional conv\n if (inputs[0].dims.length !== 4 || inputs[1].dims.length !== 4) {\n throw new Error('currently only support 2-dimensional conv');\n }\n\n // FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\n const dataChannel = inputs[0].dims[1];\n const filterInChannel = inputs[1].dims[1] * attributes.group;\n if (dataChannel !== filterInChannel) {\n throw new Error('FILTER_IN_CHANNEL should be equal to DATA_CHANNEL');\n }\n\n // if bias is provided it should be 1D and the number of elements should be equal to the number of feature maps\n if (inputs.length === 3 && (inputs[2].dims.length !== 1 || inputs[1].dims[0] !== inputs[2].dims[0])) {\n throw new Error('invalid bias');\n }\n\n const spatialRank = inputs[0].dims.length - 2;\n // wrong dilations dimension\n if (attributes.dilations.length !== spatialRank) {\n throw new Error(`dilations should be ${spatialRank}D`);\n }\n\n // Wrong strides dimension\n if (attributes.strides.length !== spatialRank) {\n throw new Error(`strides should be ${spatialRank}D`);\n }\n\n // Wrong pads dimension\n if (attributes.pads.length !== spatialRank * 2) {\n throw new Error(`pads should be ${spatialRank * 2}D`);\n }\n\n // if kernelShape is specified, it's data length must be 2 less than dims length of the weights tensor\n // (the first 2 dims are batch_size and channels)\n if (attributes.kernelShape.length !== 0 && attributes.kernelShape.length !== inputs[1].dims.length - 2) {\n throw new Error('invalid kernel shape');\n }\n\n // TODO : Need to add support for float64\n if (inputs[0].type !== 'float32' || inputs[1].type !== 'float32') {\n throw new Error('Conv input(X,W) should be float tensor');\n }\n\n if (inputs.length === 3 && inputs[2].type !== 'float32') {\n throw new Error('Conv input(bias) should be float tensor');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {InferenceHandler} from '../../../backend';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nimport {ConvAttributes} from './conv';\nimport {getActivationSnippet, parseInternalActivationAttributes} from './fuse-utils';\n\nconst computeTotalPad =\n (inDim: number, stride: number, adj: number, kernel: number, dilation: number, outSize: number) =>\n (inDim - 1) * stride + adj + (kernel - 1) * dilation + 1 - outSize;\n\nconst distributePadding = (totalPad: number, autoPad: string, pads: number[], head: number, tail: number) => {\n const smallPad = Math.floor(totalPad / 2);\n if (autoPad === 'SAME_UPPER') {\n pads[head] = smallPad;\n pads[tail] = totalPad - smallPad;\n } else if (autoPad === 'SAME_LOWER') {\n pads[head] = totalPad - smallPad;\n pads[tail] = smallPad;\n }\n};\n\nconst calculateOutputShapeAndPads =\n (inputShape: readonly number[], kernelShape: readonly number[], dilations: readonly number[], autoPad: string,\n pads: number[], strides: readonly number[], outputPadding: readonly number[], outputShape: number[]) => {\n const spatialRank = inputShape.length - 2;\n const updateShape = outputShape.length === 0;\n for (let i = 0; i < spatialRank; ++i) {\n const outSize = updateShape ? inputShape[i + 2] * strides[i] : outputShape[i];\n const totalPad = computeTotalPad(inputShape[i + 2], strides[i], pads[i], kernelShape[i], dilations[i], outSize);\n distributePadding(totalPad, autoPad, pads, i, i + spatialRank);\n if (updateShape) {\n outputShape.push(\n strides[i] * (inputShape[i + 2] - 1) + outputPadding[i] + (kernelShape[i] - 1) * dilations[i] + 1 -\n pads[i] - pads[i + spatialRank]);\n }\n }\n };\n\nexport interface ConvTransposeAttributes extends ConvAttributes {\n readonly outputPadding: readonly number[];\n readonly outputShape: readonly number[];\n}\n\nexport const convTranspose: OperatorImplementation =\n (inferenceHandler: InferenceHandler, inputs: Tensor[], attributes: ConvTransposeAttributes): Tensor[] => {\n validateInputs(inputs, attributes); // currently will fail if not convTranspose2D\n return convTranspose2d(inferenceHandler, inputs, attributes);\n };\n\nconst convTranspose2d: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ConvTransposeAttributes): Tensor[] => {\n const adjustedAttributes = getAdjustedConvTransposeAttributes(attributes, inputs);\n return [convTranspose2DUnpacked(inferenceHandler, inputs, adjustedAttributes)];\n };\n\nconst createConvTransposeProgramMetadata = (hasBias: boolean, cacheHint: string) => ({\n name: 'ConvTranspose',\n inputNames: hasBias ? ['X', 'W', 'B'] : ['X', 'W'],\n inputTypes: hasBias ? [TextureType.unpacked, TextureType.unpacked, TextureType.unpacked] :\n [TextureType.unpacked, TextureType.unpacked],\n cacheHint\n});\n\nconst createUnpackedConvTransposeProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], metadata: ProgramMetadata,\n attributes: ConvTransposeAttributes): ProgramInfo => {\n const hasBias = inputs.length > 2;\n const valueInit = hasBias ? 'getB(output_channel)' : '0.0';\n const xShape = inputs[0].dims;\n const wShape = inputs[1].dims;\n const outputChannelsPerGroup = wShape[1];\n const inputChannelsPerGroup = wShape[0] / attributes.group;\n const outputShape = [inputs[0].dims[0], inputs[1].dims[1] * attributes.group, ...attributes.outputShape];\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const {activationFunction, applyActivation} = getActivationSnippet(attributes);\n\n const shaderSource = `\n const ivec2 strides = ivec2(${attributes.strides[0]}, ${attributes.strides[1]});\n const ivec2 pads = ivec2(${attributes.pads[0]}, ${attributes.pads[1]});\n ${activationFunction}\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n int output_channel = coords.y;\n\n ivec2 loc = coords.zw + pads;\n\n int group_id = output_channel / ${outputChannelsPerGroup};\n int wOutChannel = output_channel - group_id * ${outputChannelsPerGroup};\n\n float value = ${valueInit};\n for (int inChannelOffset = 0; inChannelOffset < ${inputChannelsPerGroup}; inChannelOffset++) {\n int input_channel = group_id * ${inputChannelsPerGroup} + inChannelOffset;\n for (int wWOff = 0; wWOff < ${wShape[2]}; wWOff++) {\n for (int wHOff = 0; wHOff < ${wShape[3]}; wHOff++) {\n ivec2 wOff = ivec2(wWOff * ${attributes.dilations[0]}, wHOff * ${attributes.dilations[1]});\n ivec2 wLoc = loc - wOff;\n ivec2 wLocIn = wLoc / strides;\n if (\n wLocIn * strides == wLoc &&\n wLocIn.x >= 0 && wLocIn.x < ${xShape[2]} &&\n wLocIn.y >= 0 && wLocIn.y < ${xShape[3]}\n ) {\n float xVal = getX(batch, input_channel, wLocIn.y, wLocIn.x);\n float wVal = getW(input_channel, wOutChannel, wHOff, wWOff);\n value += xVal * wVal;\n }\n }\n }\n }\n ${applyActivation}\n ${glsl.output} = vec4(value, .0, .0, .0);\n }\n`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource,\n hasMain: true,\n };\n };\n\nconst createUnpackedConvTransposeProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvTransposeAttributes):\n ProgramInfoLoader => {\n const metadata = createConvTransposeProgramMetadata(inputs.length > 2, attributes.cacheKey);\n return {\n ...metadata,\n get: () => createUnpackedConvTransposeProgramInfo(inferenceHandler, inputs, metadata, attributes)\n };\n };\n\n\nconst convTranspose2DUnpacked =\n (inferenceHandler: WebGLInferenceHandler, inputs: readonly Tensor[], attributes: ConvTransposeAttributes):\n Tensor => {\n const result = inferenceHandler.run(\n createUnpackedConvTransposeProgramInfoLoader(inferenceHandler, inputs, attributes), inputs);\n return result;\n };\n\nconst getAdjustedConvTransposeAttributes = (attributes: T, inputs: Tensor[]): T => {\n const kernelShape = attributes.kernelShape.slice();\n // if kernelShape is not specified in the attributes of this op, infer it from the weight tensor dims\n if (attributes.kernelShape.length === 0) {\n for (let i = 2; i < inputs[1].dims.length; ++i) {\n kernelShape.push(inputs[1].dims[i]);\n }\n }\n\n const pads = attributes.pads.slice();\n const outputShape = attributes.outputShape.slice();\n const inputShape = inputs[0].dims;\n // If outputShape is not specified in the attributes of this op, infer it from the parameters\n // Similarly, automatically infer pads if not specified\n calculateOutputShapeAndPads(\n inputShape, kernelShape, attributes.dilations, attributes.autoPad, pads, attributes.strides,\n attributes.outputPadding, outputShape);\n\n // always return a new object so does not modify the original attributes\n const newAttributes: T = Object.assign({}, attributes);\n Object.assign(newAttributes, {kernelShape, pads, outputShape, cacheKey: attributes.cacheKey});\n return newAttributes;\n};\n\nexport const parseConvTransposeAttributes: OperatorInitialization =\n (node: Graph.Node): ConvTransposeAttributes => {\n const attributes = node.attributes;\n const activationAttributes = parseInternalActivationAttributes(attributes);\n // TODO : Make this generic enough to compute default attributes for multi-dimensional conv\n const autoPad = attributes.getString('auto_pad', 'NOTSET');\n const dilations = attributes.getInts('dilations', [1, 1]);\n const group = attributes.getInt('group', 1);\n const kernelShape = attributes.getInts('kernel_shape', []);\n const outputPadding = attributes.getInts('output_padding', [0, 0]);\n const outputShape = attributes.getInts('output_shape', []);\n const pads = attributes.getInts('pads', [0, 0, 0, 0]);\n const strides = attributes.getInts('strides', [1, 1]);\n\n return createAttributeWithCacheKey(\n {autoPad, dilations, group, kernelShape, outputPadding, outputShape, pads, strides, ...activationAttributes});\n };\n\nconst validateInputs = (inputs: Tensor[], attributes: ConvTransposeAttributes): void => {\n // Refer to the below link for all input checks\n // https://github.com/onnx/onnx/blob/main/docs/Operators.md#Conv\n if (!inputs || (inputs.length !== 2 && inputs.length !== 3)) {\n throw new Error('Conv requires 2 or 3 inputs');\n }\n\n // TODO : Need to add support for multi-dimensional conv\n if (inputs[0].dims.length !== 4 || inputs[1].dims.length !== 4) {\n throw new Error('currently only support 2-dimensional conv');\n }\n\n // FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\n const dataChannel = inputs[0].dims[1];\n const filterInChannel = inputs[1].dims[0];\n if (dataChannel !== filterInChannel) {\n throw new Error('FILTER_IN_CHANNEL should be equal to DATA_CHANNEL');\n }\n\n const featureMaps = inputs[1].dims[1] * attributes.group;\n\n // if bias is provided it should be 1D and the number of elements should be equal to the number of feature maps\n if (inputs.length === 3 && (inputs[2].dims.length !== 1 || inputs[2].dims[0] !== featureMaps)) {\n throw new Error('invalid bias');\n }\n\n const spatialRank = inputs[0].dims.length - 2;\n // wrong dilations dimension\n if (attributes.dilations.length !== spatialRank) {\n throw new Error(`dilations should be ${spatialRank}D`);\n }\n\n // Wrong strides dimension\n if (attributes.strides.length !== spatialRank) {\n throw new Error(`strides should be ${spatialRank}D`);\n }\n\n // Wrong pads dimension\n if (attributes.pads.length !== spatialRank * 2) {\n throw new Error(`pads should be ${spatialRank * 2}D`);\n }\n\n // Wrong output padding dimension\n if (attributes.outputPadding.length !== spatialRank) {\n throw new Error(`output_padding should be ${spatialRank}D`);\n }\n\n // if kernelShape is specified, it's data length must be 2 less than dims length of the weights tensor\n // (the first 2 dims are batch_size and channels)\n if (attributes.kernelShape.length !== 0 && attributes.kernelShape.length !== inputs[1].dims.length - 2) {\n throw new Error('invalid kernel shape');\n }\n\n // as with kernelShape, must have same number of spatial dims as input\n if (attributes.outputShape.length !== 0 && attributes.outputShape.length !== inputs[0].dims.length - 2) {\n throw new Error('invalid output shape');\n }\n\n // TODO : Need to add support for float64\n if (inputs[0].type !== 'float32' || inputs[1].type !== 'float32') {\n throw new Error('ConvTranspose input(X,W) should be float tensor');\n }\n\n if (inputs.length === 3 && inputs[2].type !== 'float32') {\n throw new Error('ConvTranspose input(bias) should be float tensor');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nexport interface TransposeAttributes extends AttributeWithCacheKey {\n readonly perm: number[];\n}\n\nconst transposeProgramMetadata = {\n name: 'Transpose',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked]\n};\n\nexport const transpose: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: TransposeAttributes): Tensor[] => {\n validateInputs(inputs);\n const output = inferenceHandler.run(\n {\n ...transposeProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createTransposeProgramInfo(inferenceHandler, inputs[0], attributes.perm)\n },\n inputs);\n return [output];\n };\n\nexport const parseTransposeAttributes: OperatorInitialization =\n (node: Graph.Node): TransposeAttributes => createAttributeWithCacheKey({perm: node.attributes.getInts('perm', [])});\n\nconst createTransposeProgramInfo =\n (_inferenceHandler: WebGLInferenceHandler, input: Tensor, perm: number[]): ProgramInfo => {\n const inputShape = input.dims;\n perm = getAdjustedPerm(inputShape, perm);\n const unpackedOutputShape = getOutputShape(inputShape, perm);\n const rank = inputShape.length;\n // A dims=[${inputs[0].dims.toString()}]\n // out Dims=[${unpackedOutputShape.toString()}]\n // based on perm=[${perm.toString()}]\n const shaderSource = `\n ${getPermFunctionBody('perm', perm, rank)}\n float process(int indices[${rank}]) {\n int a[${rank}];\n perm(a, indices);\n return _A(a);\n }`;\n return {\n ...transposeProgramMetadata,\n output: {dims: unpackedOutputShape, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst getAdjustedPerm = (inputShape: readonly number[], perm: number[]): number[] => {\n if (perm && perm.length !== inputShape.length) {\n perm = [...(inputShape.keys())].reverse();\n }\n return perm;\n};\n\nconst getOutputShape = (inputShape: readonly number[], perm: number[]): readonly number[] => {\n perm = getAdjustedPerm(inputShape, perm);\n return ShapeUtil.sortBasedOnPerm(inputShape, perm);\n};\n\nconst getPermFunctionBody = (name: string, perm: number[], rank: number): string => {\n const reverseFunc = [];\n reverseFunc.push(`void ${name}(out int a[${rank}], int src[${rank}]) {`);\n for (let i = 0; i < rank; ++i) {\n reverseFunc.push(`\\ta[${perm[i]}]=src[${i}];`);\n }\n reverseFunc.push('\\t}');\n return reverseFunc.join('\\n');\n};\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Transpose requires 1 input.');\n }\n\n if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') {\n throw new Error('input should be float tensor');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nimport {transpose, TransposeAttributes} from './transpose';\n\nexport interface DepthToSpaceAttributes {\n mode: 'DCR'|'CRD';\n blocksize: number;\n}\n\nexport const depthToSpace: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: DepthToSpaceAttributes): Tensor[] => {\n validateInputs(inputs);\n const blocksize = attributes.blocksize;\n const blocksizeSqr = blocksize * blocksize;\n const transposePerm = attributes.mode === 'DCR' ? [0, 3, 4, 1, 5, 2] : [0, 1, 4, 2, 5, 3];\n const firstReshapeShape = attributes.mode === 'DCR' ?\n [\n inputs[0].dims[0], blocksize, blocksize, inputs[0].dims[1] / blocksizeSqr, inputs[0].dims[2],\n inputs[0].dims[3]\n ] :\n [\n inputs[0].dims[0], inputs[0].dims[1] / blocksizeSqr, blocksize, blocksize, inputs[0].dims[2],\n inputs[0].dims[3]\n ];\n\n // const transpose = new WebGLTranspose();\n // const attributes = new Attribute(undefined);\n // attributes.set('perm', 'ints', transposePerm);\n // transpose.initialize(attributes);\n\n // First reshape\n const firstReshapedTensor = inferenceHandler.reshapeUnpacked(inputs[0], firstReshapeShape);\n\n // transpose\n const transposeAttributes: TransposeAttributes = {perm: transposePerm, cacheKey: `${transposePerm}`};\n const [transposeOutput] = transpose(inferenceHandler, [firstReshapedTensor], transposeAttributes);\n\n // Second reshape\n const secondReshapeShape = [\n inputs[0].dims[0], inputs[0].dims[1] / blocksizeSqr, inputs[0].dims[2] * blocksize,\n inputs[0].dims[3] * blocksize\n ];\n const result = inferenceHandler.reshapeUnpacked(transposeOutput, secondReshapeShape);\n return [result];\n };\n\nexport const parseDepthToSpaceAttributes: OperatorInitialization =\n (node: Graph.Node): DepthToSpaceAttributes => {\n // processing node attributes\n const blocksize = node.attributes.getInt('blocksize');\n if (blocksize < 1) {\n throw new Error(`blocksize must be >= 1, but got : ${blocksize} for DepthToSpace`);\n }\n const mode = node.attributes.getString('mode', 'DCR');\n if (mode !== 'DCR' && mode !== 'CRD') {\n throw new Error(`unrecognized mode: ${mode} for DepthToSpace`);\n }\n return {mode, blocksize};\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (inputs.length !== 1) {\n throw new Error(`DepthToSpace expect 1 inputs, but got ${inputs.length}`);\n }\n\n // Input has to be a 4-D tensor\n // TODO: Support string depth-to-space.\n if (inputs[0].type === 'string' || inputs[0].dims.length !== 4) {\n throw new TypeError('DepthToSpace input should be a 4-D numeric tensor');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nexport const flatten: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], axis: number): Tensor[] => {\n validateInputs(inputs, axis);\n\n const outputDims = ShapeUtil.flattenShape(inputs[0].dims, axis);\n return [inferenceHandler.reshapeUnpacked(inputs[0], outputDims)];\n };\n\nexport const parseFlattenAttributes: OperatorInitialization = (node: Graph.Node): number =>\n node.attributes.getInt('axis', 1); // default axis is 1\n\nconst validateInputs = (inputs: Tensor[], axis: number): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Flatten requires 1 input.');\n }\n\n const r = inputs[0].dims.length;\n if (r === 0) {\n throw new Error('scalar tensor is not supported.');\n }\n\n if (axis < -r || axis > r) {\n throw new Error('Invalid axis');\n }\n\n // TODO: Support string type\n if (inputs[0].type === 'string') {\n throw new Error('string tensor is not supported.');\n }\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceHandler} from './backend';\nimport {Graph} from './graph';\nimport {Tensor} from './tensor';\n\nexport type OperatorImplementation = (inferenceHandler: InferenceHandler, inputs: Tensor[], context: T) => Tensor[];\nexport type OperatorInitialization = (node: Graph.Node, graph: Graph) => T;\n\nexport interface Operator {\n readonly impl: OperatorImplementation;\n readonly context: Graph.Node|unknown;\n}\n\nexport const NUMBER_TYPES: readonly Tensor.DataType[] =\n ['float32', 'float64', 'int32', 'int16', 'int8', 'uint16', 'uint32', 'uint8'];\nexport const INT_TYPES: readonly Tensor.DataType[] = ['int32', 'int16', 'int8', 'uint16', 'uint32', 'uint8'];\nexport const FLOAT_TYPES: readonly Tensor.DataType[] = ['float32', 'float64'];\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {NUMBER_TYPES, OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\ninterface GatherAttributes extends AttributeWithCacheKey {\n readonly axis: number;\n}\n\nexport const gather: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: GatherAttributes): Tensor[] => {\n validateInputs(inputs, attributes.axis);\n const output = inferenceHandler.run(createGatherProgramInfoLoader(inferenceHandler, inputs, attributes), inputs);\n return [output];\n };\n\nexport const parseGatherAttributes: OperatorInitialization = (node: Graph.Node): GatherAttributes =>\n createAttributeWithCacheKey({axis: node.attributes.getInt('axis', 0)});\n\nconst gatherProgramMetadata = {\n name: 'Gather',\n inputNames: ['A', 'B'],\n inputTypes: [TextureType.unpacked, TextureType.unpacked],\n};\n\nconst createGatherProgramInfo =\n (_handler: WebGLInferenceHandler, metadata: ProgramMetadata, inputs: Tensor[], axis: number): ProgramInfo => {\n const inputShape = inputs[0].dims.slice();\n const indexDataShape = inputs[1].dims.slice();\n const outputShape = new Array(inputShape.length + indexDataShape.length - 1);\n\n axis = ShapeUtil.normalizeAxis(axis, inputShape.length);\n const indexCopyOps: string[] = [];\n for (let i = 0; i < outputShape.length; i++) {\n // outputShape is divided into three parts: A, B, C\n // |0 axis| axis + indexDataShape.length | end|\n // | A | B | C |\n //\n // inputIdx: [A, inputs[1][B], C]\n if (i < axis) { // A\n outputShape[i] = inputShape[i];\n indexCopyOps.push(`inputIdx[${i}] = outputIdx[${i}];`);\n } else {\n if (i < axis + indexDataShape.length) { // B\n outputShape[i] = indexDataShape[i - axis];\n indexCopyOps.push(`indexDataIdx[${i - axis}] = outputIdx[${i}];`);\n } else { // C\n outputShape[i] = inputShape[i - indexDataShape.length + 1]; // skip 1 for axis\n indexCopyOps.push(`inputIdx[${i - indexDataShape.length + 1}] = outputIdx[${i}];`);\n }\n }\n }\n\n const orank = outputShape.length || 1;\n const irank = inputShape.length;\n const iDrank = indexDataShape.length || 1;\n const shaderSource = `\n float process(int outputIdx[${orank}]) {\n int inputIdx[${irank}];\n int indexDataIdx[${iDrank}];\n indexDataIdx[0] = 0;\n ${indexCopyOps.join('\\n ')}\n int idx = int(_B(indexDataIdx));\n inputIdx[${axis}] = idx < 0 ? idx + ${inputShape[axis]} : idx;\n return _A(inputIdx);\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst createGatherProgramInfoLoader =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: GatherAttributes): ProgramInfoLoader => {\n const metadata = {...gatherProgramMetadata, cacheHint: attributes.cacheKey};\n return {...metadata, get: () => createGatherProgramInfo(handler, metadata, inputs, attributes.axis)};\n };\n\nconst validateInputs = (inputs: Tensor[], axis: number): void => {\n if (!inputs || inputs.length !== 2) {\n throw new Error('Gather requires 2 inputs.');\n }\n const tensorRank = inputs[0].dims.length;\n if (tensorRank < 1) {\n throw new Error('Invalid input shape.');\n }\n if (axis < -tensorRank || axis > tensorRank - 1) {\n throw new Error('Invalid axis.');\n }\n if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) {\n throw new Error('Invaid input type.');\n }\n if (inputs[1].type !== 'int32' && inputs[1].type !== 'int16') {\n throw new Error('Invaid input type.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {GemmUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nexport interface GemmAttributes extends AttributeWithCacheKey {\n transA: boolean;\n transB: boolean;\n alpha: number;\n beta: number;\n isOptionalC: boolean; // in opset 11, C becomes optional\n}\n\nexport const gemm: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: GemmAttributes): Tensor[] => {\n validateInputs(inputs, attributes);\n const output = inferenceHandler.run(createGemmProgramInfoLoader(inputs, attributes), inputs);\n return [output];\n };\n\nconst parseGemmAttributes = (node: Graph.Node, isOptionalC: boolean): GemmAttributes => {\n const transA = node.attributes.getInt('transA', 0) !== 0;\n const transB = node.attributes.getInt('transB', 0) !== 0;\n const alpha = node.attributes.getFloat('alpha', 1.0);\n const beta = node.attributes.getFloat('beta', 1.0);\n return createAttributeWithCacheKey({transA, transB, alpha, beta, isOptionalC});\n};\n\nexport const parseGemmAttributesV7: OperatorInitialization = (node: Graph.Node): GemmAttributes =>\n parseGemmAttributes(node, false);\n\nexport const parseGemmAttributesV11: OperatorInitialization = (node: Graph.Node): GemmAttributes =>\n parseGemmAttributes(node, true);\n\nconst createGemmProgramInfoLoader = (inputs: Tensor[], attributes: GemmAttributes): ProgramInfoLoader => {\n const metadata = {\n name: 'Gemm',\n inputNames: inputs.length === 3 ? ['A', 'B', 'C'] : ['A', 'B'],\n inputTypes: inputs.length === 3 ? [TextureType.unpacked, TextureType.unpacked, TextureType.unpacked] :\n [TextureType.unpacked, TextureType.unpacked],\n key: attributes.cacheKey\n };\n\n return {...metadata, get: () => createGemmProgramInfo(metadata, inputs, attributes)};\n};\n\nconst createGemmProgramInfo =\n (metadata: ProgramMetadata, inputs: Tensor[], attributes: GemmAttributes): ProgramInfo => {\n const aShape = inputs[0].dims.slice();\n const bShape = inputs[1].dims.slice();\n const [M, N] = GemmUtil.getShapeOfGemmResult(\n aShape, attributes.transA, bShape, attributes.transB, inputs.length === 3 ? inputs[2].dims : undefined);\n const outputShape = [M, N];\n if (!outputShape) {\n throw new Error('Can\\'t use gemm on the given tensors');\n }\n let sharedDim = aShape[aShape.length - 1];\n let line = '';\n if (attributes.transA) {\n sharedDim = aShape[0];\n }\n if (attributes.transA && attributes.transB) {\n line = 'value += _A_T(a) * _B_T(b);';\n } else if (attributes.transA && !attributes.transB) {\n line = 'value += _A_T(a) * _B(b);';\n } else if (!attributes.transA && attributes.transB) {\n line = 'value += _A(a) * _B_T(b);';\n } else if (!attributes.transA && !attributes.transB) {\n line = 'value += _A(a) * _B(b);';\n }\n const rank = outputShape.length;\n const declareC = inputs.length === 3 ? `int c[${inputs[2].dims.length}];` : '';\n const broadcastC = inputs.length === 3 ? 'bcastIndices_C(indices, c);' : '';\n const calculateC = inputs.length === 3 ? 'value += beta * _C(c);' : '';\n const shaderSource = `\n float process(int indices[${rank}]) {\n int a[${rank}];\n int b[${rank}];\n ${declareC}\n\n copyVec(indices, a);\n copyVec(indices, b);\n ${broadcastC}\n\n float value = 0.0;\n for (int k=0; k<${sharedDim}; ++k) {\n a[${rank - 1}] = k;\n b[${rank - 2}] = k;\n ${line}\n }\n\n value = value * alpha;\n ${calculateC}\n return value;\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n variables: [\n {name: 'alpha', type: 'float', data: attributes.alpha}, {name: 'beta', type: 'float', data: attributes.beta}\n ],\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[], attributes: GemmAttributes): void => {\n if (!inputs) {\n throw new Error('Input is missing');\n }\n if (attributes.isOptionalC && (inputs.length < 2 || inputs.length > 3)) {\n throw new Error('Invaid input shape.');\n }\n if (!attributes.isOptionalC && inputs.length !== 3) {\n throw new Error('Gemm requires 3 inputs');\n }\n\n // 'C' can be of dimensionality 1 or 2 only\n if (inputs.length === 3 && inputs[2].dims.length !== 1 && inputs[2].dims.length !== 2) {\n throw new Error('Invalid input shape of C');\n }\n\n if ((inputs[0].type !== 'float32' && inputs[0].type !== 'float64') ||\n (inputs[1].type !== 'float32' && inputs[1].type !== 'float64') ||\n (inputs.length === 3 && inputs[2].type !== 'float32' && inputs[2].type !== 'float64')) {\n throw new Error('Invalid input type.');\n }\n\n if ((inputs[0].type !== inputs[1].type) || (inputs.length === 3 && inputs[0].type !== inputs[2].type)) {\n throw new Error('Input types are mismatched');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nexport interface ImageScalerAttributes extends AttributeWithCacheKey {\n scale: number;\n bias: number[];\n}\n\nexport const imageScaler: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ImageScalerAttributes): Tensor[] => {\n validateInputs(inputs);\n const output =\n inferenceHandler.run(createImageScalerProgramInfoLoader(inferenceHandler, inputs, attributes), inputs);\n return [output];\n };\n\nexport const parseImageScalerAttributes: OperatorInitialization =\n (node: Graph.Node): ImageScalerAttributes => {\n const scale = node.attributes.getFloat('scale');\n const bias = node.attributes.getFloats('bias');\n return createAttributeWithCacheKey({scale, bias});\n };\n\nconst imageScalerProgramMetadata = {\n name: 'ImageScaler',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked],\n};\n\nconst createImageScalerProgramInfo =\n (_handler: WebGLInferenceHandler, metadata: ProgramMetadata, inputs: Tensor[], attributes: ImageScalerAttributes):\n ProgramInfo => {\n const outputShape = inputs[0].dims.slice();\n const rank = outputShape.length;\n const getBiasMethod = createGetBiasMethod(attributes.bias.length);\n const shaderSource = `\n ${getBiasMethod}\n float process(int indices[${rank}]) {\n return _X(indices) * scale + getBias(bias, indices[1]);\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n variables: [\n {name: 'bias', type: 'float', arrayLength: attributes.bias.length, data: attributes.bias},\n {name: 'scale', type: 'float', data: attributes.scale}\n ],\n shaderSource\n };\n };\n\nconst createImageScalerProgramInfoLoader =\n (handler: WebGLInferenceHandler, inputs: Tensor[], attributes: ImageScalerAttributes): ProgramInfoLoader => {\n const metadata = {...imageScalerProgramMetadata, cacheHint: attributes.cacheKey};\n return {...metadata, get: () => createImageScalerProgramInfo(handler, metadata, inputs, attributes)};\n };\n\nconst createGetBiasMethod = (numChannels: number): string => {\n const codeLines: string[] = [`float getBias(float bias[${numChannels}], int channel) {`];\n for (let i = 0; i < numChannels; ++i) {\n if (i === 0) {\n codeLines.push(\n '\\t' +\n `if (channel == ${i}) { return bias[${i}]; }`);\n } else if (i === numChannels - 1) {\n codeLines.push(\n '\\t' +\n `else { return bias[${i}]; }`);\n } else {\n codeLines.push(\n '\\t' +\n `else if (channel == ${i}) { return bias[${i}]; }`);\n }\n }\n codeLines.push(\n '\\t' +\n '}');\n return codeLines.join('\\n');\n};\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('ImageScaler requires 1 input.');\n }\n if (inputs[0].dims.length !== 4) {\n throw new Error('Invalid input shape.');\n }\n if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') {\n throw new Error('Invalid input type.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, ProgramMetadata, TextureType} from '../types';\n\nexport const instanceNormalization: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], epsilon: number): Tensor[] => {\n validateInputs(inputs);\n\n const meanAndVariance = inferenceHandler.run(createMeanAndVarianceProgramInfoLoader(inputs[0]), inputs);\n const output = inferenceHandler.run(\n createComputeOutputProgramInfoLoader(inferenceHandler, inputs[0], epsilon, meanAndVariance.dims),\n [inputs[0], meanAndVariance, inputs[1], inputs[2]]);\n return [output];\n };\n\nexport const parseInstanceNormalizationAttributes: OperatorInitialization = (node: Graph.Node): number =>\n node.attributes.getFloat('epsilon', 1e-5);\n\nconst meanAndVarianceProgramMetadata = {\n name: 'InstanceNormalization_MeanAndVariance',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked],\n};\n\nconst createMeanAndVarianceProgramInfo = (metadata: ProgramMetadata, input: Tensor): ProgramInfo => {\n const xDims = input.dims.slice();\n const channel = xDims[1];\n const channelSize = xDims[2] * xDims[3];\n const outputShape = [xDims[0], channel];\n\n const shaderSource = `\n vec4 process(int[2] indices) {\n vec4 v = vec4(0.0);\n int a[4];\n a[0] = indices[0];\n a[1] = indices[1];\n float temp = 0.0;\n for(int a2=0; a2<${xDims[2]}; a2++) {\n a[2] = a2;\n for(int a3=0; a3<${xDims[3]}; a3++) {\n a[3] = a3;\n float x = _X(a);\n temp += x;\n }\n }\n float mean = temp / float(${channelSize});\n temp = 0.0;\n for(int a2=0; a2<${xDims[2]}; a2++) {\n a[2] = a2;\n for(int a3=0; a3<${xDims[3]}; a3++) {\n a[3] = a3;\n float x = _X(a);\n temp += (x - mean) * (x - mean);\n }\n }\n v.r = mean;\n v.g = temp / float(${channelSize});\n\n return v;\n }`;\n return {\n ...metadata,\n output: {dims: outputShape, type: input.type, textureType: TextureType.packedLastDimension},\n shaderSource\n };\n};\n\nconst createMeanAndVarianceProgramInfoLoader = (input: Tensor): ProgramInfoLoader => ({\n ...meanAndVarianceProgramMetadata,\n get: () => createMeanAndVarianceProgramInfo(meanAndVarianceProgramMetadata, input)\n});\n\nconst computeOutputProgramMetadata = {\n name: 'InstanceNormalization_ComputeOutput',\n inputNames: ['X', 'MeanAndVariance', 'Scale', 'B'],\n inputTypes: [TextureType.unpacked, TextureType.packedLastDimension, TextureType.unpacked, TextureType.unpacked],\n};\n\nconst createComputeOutputProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, metadata: ProgramMetadata, input: Tensor, epsilon: number,\n meanAndVarianceShape: readonly number[]): ProgramInfo => {\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const [textureWidth, textureHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(meanAndVarianceShape, TextureType.packedLastDimension);\n const [meanAndVarianceWidth, meanAndVarianceHeight] = [textureWidth / 4, textureHeight];\n const shaderSource = `\n vec4 get_MeanAndVariance(int[2] mv) {\n int offset = indicesToOffset_MeanAndVariance(mv);\n vec2 coords = offsetToCoords(offset, ${meanAndVarianceWidth}, ${meanAndVarianceHeight});\n return ${glsl.texture2D}(MeanAndVariance, coords);\n }\n\n float process(int[4] indices) {\n int mv[2];\n mv[0] = indices[0];\n mv[1] = indices[1];\n vec4 mean_and_variance = get_MeanAndVariance(mv);\n float mean = mean_and_variance.r;\n float variance = mean_and_variance.g;\n\n int sb[1];\n sb[0] = indices[1];\n float scale = _Scale(sb);\n float b = _B(sb);\n\n return scale * (_X(indices) - mean) / sqrt(variance + epsilon) + b;\n }`;\n return {\n ...metadata,\n output: {dims: input.dims, type: input.type, textureType: TextureType.unpacked},\n variables: [{name: 'epsilon', type: 'float', data: epsilon}],\n shaderSource\n };\n };\n\nconst createComputeOutputProgramInfoLoader =\n (inferenceHandler: WebGLInferenceHandler, input: Tensor, epsilon: number, meanAndVarianceShape: readonly number[]):\n ProgramInfoLoader => {\n const metadata = {...computeOutputProgramMetadata, cacheHint: `${epsilon}`};\n return {\n ...metadata,\n get: () => createComputeOutputProgramInfo(inferenceHandler, metadata, input, epsilon, meanAndVarianceShape)\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 3) {\n throw new Error('InstanceNormalization requires 3 inputs.');\n }\n\n const X = inputs[0];\n const scale = inputs[1];\n const B = inputs[2];\n\n // input should at least have three dimensions - N,C,dim1,...,dimn\n // other inputs can have only one dimensions\n if (X.dims.length < 3 || scale.dims.length !== 1 || B.dims.length !== 1) {\n throw new Error('Invalid input shape.');\n }\n if (scale.dims[0] !== X.dims[1] || B.dims[0] !== X.dims[1]) {\n throw new Error('Input shapes are mismatched.');\n }\n if ((X.type !== 'float32' && X.type !== 'float64') || (scale.type !== 'float32' && scale.type !== 'float64') ||\n (B.type !== 'float32' && B.type !== 'float64')) {\n throw new Error('Invalid input type.');\n }\n if (inputs[0].dims.length !== 4) {\n throw new Error('Only support 4-D input shape.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramInfoLoader, TextureType} from '../types';\n\nexport interface LrnAttributes extends AttributeWithCacheKey {\n alpha: number;\n beta: number;\n bias: number;\n size: number;\n}\n\nexport const lrn: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: LrnAttributes): Tensor[] => {\n validateInputs(inputs);\n\n // if (inferenceHandler.session.pack) {\n // return [inferenceHandler.run(createPackedLrnProgramInfoLoader(inferenceHandler, inputs, attributes),\n // inputs)];\n // } else {\n return [inferenceHandler.run(createLrnProgramInfoLoader(inputs, attributes), inputs)];\n //}\n };\n\nexport const parseLrnAttributes: OperatorInitialization = (node: Graph.Node): LrnAttributes => {\n const alpha = node.attributes.getFloat('alpha', 0.0001);\n const beta = node.attributes.getFloat('beta', 0.75);\n const bias = node.attributes.getFloat('bias', 1.0);\n const size = node.attributes.getInt('size');\n\n return createAttributeWithCacheKey({alpha, beta, bias, size});\n};\n\nconst lrnProgramMetadata = {\n name: 'LRN',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked]\n};\n\nfunction createLrnProgramInfo(inputs: Tensor[], attributes: LrnAttributes): ProgramInfo {\n const C = inputs[0].dims[1];\n const rank = inputs[0].dims.length;\n const from = -Math.floor((attributes.size - 1) / 2);\n const to = Math.ceil((attributes.size - 1) / 2);\n const alpha = `float(${attributes.alpha}) / float(${attributes.size})`;\n const bias = `float(${attributes.bias})`;\n const beta = `float(${attributes.beta})`;\n\n const shaderSource = `\n float process(int indices[${rank}]) {\n int c = indices[1];\n float x = _X(indices);\n float square_sum = 0.0;\n\n for (int i = ${from}; i <= ${to}; i++) {\n int idx = c + i;\n if (c >= 0 && c < ${C}) {\n indices[1] = idx;\n float j = _X(indices);\n square_sum += j * j;\n }\n }\n return x / pow(${bias} + ${alpha} * square_sum, ${beta});\n }`;\n return {\n ...lrnProgramMetadata,\n cacheHint: attributes.cacheKey,\n output: {dims: inputs[0].dims, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource,\n };\n}\n\nexport function createLrnProgramInfoLoader(inputs: Tensor[], attributes: LrnAttributes): ProgramInfoLoader {\n return {...lrnProgramMetadata, cacheHint: attributes.cacheKey, get: () => createLrnProgramInfo(inputs, attributes)};\n}\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('LRN requires 1 input.');\n }\n if (inputs[0].dims.length !== 4) {\n throw new Error('currently only support LRN for input with \"NCHW\" format');\n }\n if (inputs[0].type !== 'float32') {\n throw new Error('input should be float type');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {getGlsl, Glsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nexport interface PadAttributes extends AttributeWithCacheKey {\n readonly mode: string;\n readonly pads: number[];\n readonly value: number;\n}\n\nconst padProgramMetadata = {\n name: 'Pad',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked],\n};\n\nexport const padV2: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: PadAttributes): Tensor[] => {\n validateInputsV2(inputs);\n const output = inferenceHandler.run(\n {\n ...padProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createPadProgramInfo(inferenceHandler, inputs[0], attributes)\n },\n inputs);\n return [output];\n };\n\nexport const parsePadAttributesV2: OperatorInitialization = (node: Graph.Node): PadAttributes => {\n const mode = node.attributes.getString('mode', 'constant');\n const value = node.attributes.getFloat('value', 0.0);\n const pads = node.attributes.getInts('pads');\n return createAttributeWithCacheKey({mode, value, pads});\n};\n\nexport const padV11: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], mode: string): Tensor[] => {\n validateInputsV11(inputs);\n const attrubutes = generatePadAttributesFromInputs(inferenceHandler, inputs, mode);\n return padV2(inferenceHandler, [inputs[0]], attrubutes);\n };\n\nexport const parsePadAttributesV11: OperatorInitialization = (node: Graph.Node): string =>\n node.attributes.getString('mode', 'constant');\n\nconst generatePadAttributesFromInputs =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], mode: string): PadAttributes => {\n if (!inferenceHandler.session.isInitializer(inputs[1].dataId) ||\n (inputs.length >= 3 && !inferenceHandler.session.isInitializer(inputs[2].dataId))) {\n throw new Error('dynamic pad attributes are not allowed');\n }\n\n const pads = Array.from(inputs[1].integerData);\n const value = (inputs.length >= 3) ? inputs[2].floatData[0] : 0.0;\n\n return createAttributeWithCacheKey({mode, pads, value});\n };\n\nconst createPadProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, input: Tensor, attributes: PadAttributes): ProgramInfo => {\n const outputShape = ShapeUtil.padShape(input.dims.slice(), attributes.pads);\n const rank = outputShape.length;\n const padFunction = getPadFunction(inferenceHandler, input, attributes);\n const shaderSource = `\n ${padFunction}\n float process(int[${rank}] indices) {\n return padA(indices);\n }`;\n return {\n name: 'Pad',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked],\n output: {dims: outputShape, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputsV2 = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Pad requires 1 input');\n }\n if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') {\n throw new Error('Invalid input type.');\n }\n};\n\nconst validateInputsV11 = (inputs: Tensor[]): void => {\n if (!inputs || (inputs.length !== 2 && inputs.length !== 3)) {\n throw new Error('Pad requires 2 or 3 inputs');\n }\n if (inputs[1].type !== 'int32') {\n throw new Error('Invalid input type.');\n }\n if (inputs.length >= 3 && inputs[2].type === 'string') {\n throw new Error('Invalid input type.');\n }\n};\n\nconst getPadFunction = (inferenceHandler: WebGLInferenceHandler, input: Tensor, attributes: PadAttributes): string => {\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const [width, height] = inferenceHandler.calculateTextureWidthAndHeight(input.dims, TextureType.unpacked);\n const strides = ShapeUtil.computeStrides(input.dims);\n\n switch (attributes.mode) {\n case 'constant':\n return getPadConstant(glsl, input.dims, strides, width, height, attributes.pads, attributes.value);\n case 'reflect':\n return getPadReflect(glsl, input.dims, strides, width, height, attributes.pads);\n case 'edge':\n return getPadEdge(glsl, input.dims, strides, width, height, attributes.pads);\n default:\n throw new Error('Invalid mode');\n }\n};\n\nconst getPadConstant =\n (glsl: Glsl, shape: readonly number[], strides: readonly number[], width: number, height: number, pads: number[],\n value: number): string => {\n const rank = shape.length;\n let block = '';\n for (let i = rank - 1; i >= 0; --i) {\n block += `\n k = m[${i}] - ${pads[i]};\n if (k < 0) return constant;\n if (k >= ${shape[i]}) return constant;\n offset += k * ${strides[i]};\n `;\n }\n return `\n float padA(int m[${rank}]) {\n const float constant = float(${value});\n int offset = 0;\n int k = 0;\n ${block}\n vec2 coords = offsetToCoords(offset, ${width}, ${height});\n float value = getColorAsFloat(${glsl.texture2D}(A, coords));\n return value;\n }\n `;\n };\n\nconst getPadReflect =\n (glsl: Glsl, shape: readonly number[], strides: readonly number[], width: number, height: number, pads: number[]):\n string => {\n const rank = shape.length;\n\n let block = '';\n for (let i = rank - 1; i >= 0; --i) {\n block += `\n k = m[${i}] - ${pads[i]};\n if (k < 0) { k = -k; }\n {\n const int _2n_1 = ${2 * (shape[i] - 1)};\n k = int( mod( float(k), float(_2n_1) ) ) ;\n if(k >= ${shape[i]}) { k = _2n_1 - k; }\n }\n offset += k * ${strides[i]};\n `;\n }\n return `\n float padA(int m[${rank}]) {\n int offset = 0;\n int k = 0;\n ${block}\n vec2 coords = offsetToCoords(offset, ${width}, ${height});\n float value = getColorAsFloat(${glsl.texture2D}(A, coords));\n return value;\n }\n `;\n };\n\nconst getPadEdge =\n (glsl: Glsl, shape: readonly number[], strides: readonly number[], width: number, height: number, pads: number[]):\n string => {\n const rank = shape.length;\n\n let block = '';\n for (let i = rank - 1; i >= 0; --i) {\n block += `\n k = m[${i}] - ${pads[i]};\n if (k < 0) k = 0;\n if (k >= ${shape[i]}) k = ${shape[i] - 1};\n offset += k * ${strides[i]};\n `;\n }\n return `\n float padA(int m[${rank}]) {\n int offset = 0;\n int k = 0;\n ${block}\n vec2 coords = offsetToCoords(offset, ${width}, ${height});\n float value = getColorAsFloat(${glsl.texture2D}(A, coords));\n return value;\n }\n `;\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {PoolConvUtil, ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramMetadata, TextureType} from '../types';\n\nexport interface AveragePoolAttributes extends AttributeWithCacheKey {\n readonly autoPad: string;\n readonly ceilMode: number;\n readonly countIncludePad: boolean;\n readonly kernelShape: readonly number[];\n readonly strides: readonly number[];\n readonly pads: readonly number[];\n}\n\nexport const averagePool: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: AveragePoolAttributes): Tensor[] => {\n validateInputs(inputs);\n const metadata =\n {name: 'AveragePool', inputNames: ['X'], inputTypes: [TextureType.unpacked], cacheHint: attributes.cacheKey};\n const output = inferenceHandler.run(\n {...metadata, get: () => createAveragePoolProgramInfo(inputs, metadata, false, attributes)}, inputs);\n return [output];\n };\n\nexport const parseAveragePoolAttributes: OperatorInitialization =\n (node: Graph.Node): AveragePoolAttributes => {\n const autoPad = node.attributes.getString('auto_pad', 'NOTSET');\n const ceilMode = node.attributes.getInt('ceil_mode', 0);\n const countIncludePad = (node.attributes.getInt('count_include_pad', 0) === 0 ? false : true);\n const kernelShape = node.attributes.getInts('kernel_shape');\n const strides = node.attributes.getInts('strides', []);\n const pads = node.attributes.getInts('pads', []);\n\n // TODO: support attribute 'ceil_mode'\n if (ceilMode !== 0) {\n throw new Error('using ceil() in shape computation is not yet supported for AveragePool');\n }\n\n return createAttributeWithCacheKey({autoPad, ceilMode, countIncludePad, kernelShape, strides, pads});\n };\n\nconst createAveragePoolProgramInfo =\n (inputs: Tensor[], metadata: ProgramMetadata, isGlobalOperator: boolean, attributes: AveragePoolAttributes):\n ProgramInfo => {\n const [adjustedAttributes, outputShape] =\n getAdjustedPoolAttributesAndOutputShape(inputs, attributes, isGlobalOperator);\n const kernelSize = ShapeUtil.size(adjustedAttributes.kernelShape);\n const op1 = 'value += _X(x);';\n let op2 = '';\n if (adjustedAttributes.countIncludePad) {\n op2 += `value /= float(${kernelSize});`;\n } else {\n op2 += `value /= float(${kernelSize} - pad);`;\n }\n const poolingCode = generatePoolingCode(inputs[0].dims, adjustedAttributes, op1, op2, '0.0');\n const shaderSource = `\n ${poolingCode}\n `;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nexport const globalAveragePool: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: AveragePoolAttributes): Tensor[] => {\n validateInputs(inputs);\n const metadata = {\n name: 'GlobalAveragePool',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked],\n cacheHint: `${attributes.countIncludePad}`\n };\n const output = inferenceHandler.run(\n {...metadata, get: () => createAveragePoolProgramInfo(inputs, metadata, true, attributes)}, inputs);\n return [output];\n };\n\nexport const parseGlobalAveragePoolAttributes: OperatorInitialization =\n (node: Graph.Node): AveragePoolAttributes => {\n const countIncludePad = (node.attributes.getInt('count_include_pad', 0) === 0 ? false : true);\n return createAttributeWithCacheKey(\n {autoPad: '', ceilMode: 0, countIncludePad, kernelShape: [], strides: [], pads: []});\n };\n\nexport interface MaxPoolAttributes extends AveragePoolAttributes {\n readonly storageOrder: number;\n readonly dilations: number[];\n}\n\nexport const maxPool: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: MaxPoolAttributes): Tensor[] => {\n validateInputs(inputs);\n const metadata =\n {name: 'MaxPool', inputNames: ['X'], inputTypes: [TextureType.unpacked], cacheHint: attributes.cacheKey};\n const output = inferenceHandler.run(\n {...metadata, get: () => createMaxPoolProgramInfo(inputs, metadata, false, attributes)}, inputs);\n return [output];\n };\n\nexport const parseMaxPoolAttributes: OperatorInitialization =\n (node: Graph.Node): MaxPoolAttributes => {\n const autoPad = node.attributes.getString('auto_pad', 'NOTSET');\n const ceilMode = node.attributes.getInt('ceil_mode', 0);\n const kernelShape = node.attributes.getInts('kernel_shape');\n const strides = node.attributes.getInts('strides', []);\n const pads = node.attributes.getInts('pads', []);\n const storageOrder = node.attributes.getInt('storage_order', 0);\n const dilations = node.attributes.getInts('dilations', []);\n\n // TODO: support attribute 'ceil_mode' and 'storage_order'\n if (storageOrder !== 0) {\n throw new Error('column major storage order is not yet supported for MaxPool');\n }\n if (ceilMode !== 0) {\n throw new Error('using ceil() in shape computation is not yet supported for MaxPool');\n }\n\n return createAttributeWithCacheKey(\n {autoPad, ceilMode, countIncludePad: false, kernelShape, strides, pads, storageOrder, dilations});\n };\n\nconst createMaxPoolProgramInfo =\n (inputs: Tensor[], metadata: ProgramMetadata, isGlobalOperator: boolean, attributes: MaxPoolAttributes):\n ProgramInfo => {\n const [adjustedAttributes, outputShape] =\n getAdjustedPoolAttributesAndOutputShape(inputs, attributes, isGlobalOperator);\n const op1 = `\n value = max(_X(x), value);\n `;\n const op2 = '';\n const poolingCode = generatePoolingCode(inputs[0].dims, adjustedAttributes, op1, op2, '-1e5');\n const shaderSource = `\n ${poolingCode}\n `;\n return {\n ...metadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst getAdjustedPoolAttributesAndOutputShape =\n (inputs: Tensor[], attributes: AveragePoolAttributes|MaxPoolAttributes, isGlobalOperator: boolean):\n [AveragePoolAttributes|MaxPoolAttributes, number[]] => {\n const inputShape = inputs[0].dims.slice();\n const hasDilations = Object.hasOwnProperty.call(attributes, 'dilations');\n const kernelShape = attributes.kernelShape.slice();\n const strides = attributes.strides.slice();\n const dilations: number[] = hasDilations ? (attributes as MaxPoolAttributes).dilations.slice() : [];\n const pads = attributes.pads.slice();\n PoolConvUtil.adjustPoolAttributes(isGlobalOperator, inputShape, kernelShape, strides, dilations, pads);\n\n const outputShape = PoolConvUtil.computePoolOutputShape(\n isGlobalOperator, inputShape, strides, dilations, kernelShape, pads, attributes.autoPad);\n\n const newAttributes = Object.assign({}, attributes);\n if (hasDilations) {\n Object.assign(newAttributes, {kernelShape, strides, pads, dilations, cacheKey: attributes.cacheKey});\n } else {\n Object.assign(newAttributes, {kernelShape, strides, pads, cacheKey: attributes.cacheKey});\n }\n return [newAttributes, outputShape];\n };\n\nconst globalMaxPoolAttributes = {\n autoPad: '',\n ceilMode: 0,\n countIncludePad: false,\n kernelShape: [],\n strides: [],\n pads: [],\n storageOrder: 0,\n dilations: [],\n cacheKey: ''\n};\n\nconst globalMaxPoolMetadata = {\n name: 'GlobalMaxPool',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked]\n};\n\nexport const globalMaxPool = (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputs(inputs);\n const output = inferenceHandler.run(\n {\n ...globalMaxPoolMetadata,\n get: () => createMaxPoolProgramInfo(inputs, globalMaxPoolMetadata, true, globalMaxPoolAttributes)\n },\n inputs);\n return [output];\n};\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Pool ops requires 1 input.');\n }\n if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') {\n throw new Error('Invalid input type.');\n }\n};\n\nconst generatePoolingCode =\n (inputDims: readonly number[], attributes: AveragePoolAttributes, op1: string, op2: string, start: string):\n string => {\n const rank = inputDims.length;\n if (attributes.kernelShape.length <= 2) {\n const kw = attributes.kernelShape[attributes.kernelShape.length - 1];\n const sw = attributes.strides[attributes.strides.length - 1];\n const pwStart = attributes.pads[attributes.pads.length / 2 - 1];\n const pwEnd = attributes.pads[attributes.pads.length - 1];\n const dimW = inputDims[rank - 1];\n let codeW = '';\n let codeH = '';\n let codeHEnd = '';\n if (pwStart + pwEnd !== 0) {\n codeW = `\n for (int i = 0; i < ${kw}; i++) {\n x[${rank} - 1] = indices[${rank} - 1] * ${sw} - ${pwStart} + i;\n if (x[${rank} - 1] < 0 || x[${rank} - 1] >= ${dimW}) {\n pad++;\n continue;\n }\n ${op1}\n }`;\n } else {\n codeW = `\n for (int i = 0; i < ${kw}; i++) {\n x[${rank} - 1] = indices[${rank} - 1] * ${sw} - ${pwStart} + i;\n ${op1}\n }`;\n }\n\n if (attributes.kernelShape.length === 2) {\n const kh = attributes.kernelShape[attributes.kernelShape.length - 2];\n const sh = attributes.strides[attributes.strides.length - 2];\n const phStart = attributes.pads[attributes.pads.length / 2 - 2];\n const phEnd = attributes.pads[attributes.pads.length - 2];\n const dimH = inputDims[rank - 2];\n if (phStart + phEnd !== 0) {\n codeH = `\n for (int j = 0; j < ${kh}; j++) {\n x[${rank} - 2] = indices[${rank} - 2] * ${sh} - ${phStart} + j;\n if (x[${rank} - 2] < 0 || x[${rank} - 2] >= ${dimH}) {\n pad+= ${kw};\n continue;\n }\n `;\n } else {\n codeH = `\n for (int j = 0; j < ${kh}; j++) {\n x[${rank} - 2] = indices[${rank} - 2] * ${sh} - ${phStart} + j;\n `;\n }\n codeHEnd = `\n }\n `;\n }\n\n const poolingCode = `\n float process(int indices[${rank}]) {\n int x[${rank}];\n copyVec(indices, x);\n\n float value = ${start};\n int pad = 0;\n ${codeH}\n ${codeW}\n ${codeHEnd}\n ${op2}\n return value;\n }\n `;\n return poolingCode;\n } else {\n const kernelSize = ShapeUtil.size(attributes.kernelShape);\n const kernelStrides = ShapeUtil.computeStrides(attributes.kernelShape);\n const stridesRank = kernelStrides.length;\n const padsRank = attributes.pads.length;\n const offsetToIndicesFunction = offsetToIndices(stridesRank);\n const copyInputDims = copyArray(inputDims, 'inputDims');\n const copyPads = copyArray(attributes.pads, 'pads');\n const copyKernelStrides = copyArray(kernelStrides, 'kernelStrides');\n const copyStrides = copyArray(attributes.strides, 'strides');\n const hasPads = attributes.pads.reduce((sum, cur) => sum + cur);\n let padCode = '';\n if (hasPads) {\n padCode = `\n if (x[j] >= inputDims[j] || x[j] < 0) {\n pad++;\n isPad = true;\n break;\n }\n }\n if (!isPad) {\n ${op1}\n }`;\n } else {\n padCode = `\n }\n ${op1}\n `;\n }\n const poolingCode = `\n ${offsetToIndicesFunction}\n float process(int indices[${rank}]) {\n int x[${rank}];\n copyVec(indices, x);\n int offset[${stridesRank}];\n int pads[${padsRank}];\n int inputDims[${rank}];\n int kernelStrides[${stridesRank}];\n int strides[${stridesRank}];\n ${copyPads}\n ${copyInputDims}\n ${copyStrides}\n ${copyKernelStrides}\n\n float value = ${start};\n int pad = 0;\n bool isPad = false;\n for (int i = 0; i < ${kernelSize}; i++) {\n offsetToIndices(i, kernelStrides, offset);\n isPad = false;\n for (int j = ${rank} - ${stridesRank}; j < ${rank}; j++) {\n x[j] = indices[j] * strides[j - ${rank} + ${stridesRank}]\n + offset[j - ${rank} + ${stridesRank}] - pads[j - 2];\n ${padCode}\n }\n ${op2}\n\n return value;\n }\n `;\n return poolingCode;\n }\n };\n\nconst copyArray = (array: readonly number[], arrayName: string): string => {\n let block = '';\n for (let i = 0; i < array.length; i++) {\n block += `\n ${arrayName}[${i}] = ${array[i]};\n `;\n }\n return block;\n};\n\nconst offsetToIndices = (rank: number): string => `\n void offsetToIndices(int offset, int[${rank}] strides, out int[${rank}] indices) {\n if (${rank} == 0) {\n return;\n }\n for (int i = 0; i < ${rank} - 1; ++i) {\n indices[i] = offset / strides[i];\n offset -= indices[i] * strides[i];\n }\n indices[${rank} - 1] = offset;\n }`;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {NUMBER_TYPES, OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramMetadata, TextureType} from '../types';\n\nexport interface ReduceAttributes extends AttributeWithCacheKey {\n readonly axes: number[];\n readonly keepDims: boolean;\n}\n\n// return [init ops, reduce ops, final ops]\ntype ReduceOp = (inputs: Tensor[], axes: number[]) => string[];\n\nconst reduce =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes, name: string,\n reduceOp: ReduceOp): Tensor[] => {\n validateInputs(inputs);\n\n const reduceProgramMetadata = {\n name,\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked],\n };\n\n const output = inferenceHandler.run(\n {\n ...reduceProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () =>\n createReduceProgramInfo(inferenceHandler, inputs, attributes, name, reduceOp, reduceProgramMetadata)\n },\n inputs);\n return [output];\n };\n\nexport const parseReduceAttributes: OperatorInitialization = (node: Graph.Node): ReduceAttributes => {\n const axes = node.attributes.getInts('axes', []);\n const keepDims = node.attributes.getInt('keepdims', 1) === 1;\n return createAttributeWithCacheKey({axes, keepDims});\n};\n\nconst createReduceProgramInfo =\n (_handler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes, _name: string, reduceOp: ReduceOp,\n reduceProgramMetadata: ProgramMetadata): ProgramInfo => {\n const outputShape: number[] = [];\n const iRank = inputs[0].dims.length || 1;\n\n const idxCopy = []; // copy output indexes to input indexes\n\n const axes = ShapeUtil.normalizeAxes(attributes.axes, inputs[0].dims.length);\n const ops = reduceOp(inputs, axes);\n let reduceOps = ops[1];\n\n for (let k = 0; k < inputs[0].dims.length; k++) {\n // if this axis is reduced\n if (axes.indexOf(k) >= 0 || axes.length === 0) {\n if (attributes.keepDims) {\n outputShape.push(1);\n } // else { remove the axis from outputShape; }\n\n // loop over the d-th axis\n reduceOps = `\n for(int j${k} = 0; j${k} < ${inputs[0].dims[k]}; j${k}++) {\n inputIdx[${k}] = j${k};\n ${reduceOps}\n }`;\n } else {\n idxCopy.push(`inputIdx[${k}] = outputIdx[${outputShape.length}];`);\n\n outputShape.push(inputs[0].dims[k]);\n }\n }\n\n const oRank = outputShape.length || 1;\n\n const shaderSource = `\n float process(int outputIdx[${oRank}]) {\n float value; // final result\n int inputIdx[${iRank}]; // addressing input data\n ${idxCopy.join('\\n')}\n ${ops[0]} // init ops for reduce max/min\n ${reduceOps}\n ${ops[2]} // final computation for reduce mean\n return value;\n }`;\n\n return {\n ...reduceProgramMetadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n // TODO: support Reduce* operators with 2 inputs.\n if (!inputs || inputs.length !== 1) {\n throw new Error('Reduce op requires 1 input.');\n }\n\n if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) {\n throw new Error('Invalid input type.');\n }\n};\n\nexport const reduceSum: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (): string[] => ['value = 0.0;', 'value += _A(inputIdx);', ''];\n return reduce(inferenceHandler, inputs, attributes, 'ReduceSum', reduceOp);\n };\n\nexport const reduceMean: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (inputs: Tensor[], axes: number[]): string[] => {\n let size = 1.0;\n for (let k = 0; k < inputs[0].dims.length; k++) {\n if (axes.indexOf(k) >= 0 || axes.length === 0) {\n size *= inputs[0].dims[k];\n }\n }\n\n return ['value = 0.0;', 'value += _A(inputIdx);', `value /= ${size}.;`]; // ensure real number with `.`\n };\n return reduce(inferenceHandler, inputs, attributes, 'ReduceMean', reduceOp);\n };\n\nexport const reduceMax: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (inputs: Tensor[], axes: number[]): string[] => {\n const idxZero = [];\n for (let k = 0; k < inputs[0].dims.length; k++) {\n if (axes.indexOf(k) >= 0 || axes.length === 0) {\n idxZero.push(`inputIdx[${k}] = 0;`); // first element\n }\n }\n\n return [`${idxZero.join('\\n')}\\nvalue = _A(inputIdx);`, 'value = max(value, _A(inputIdx));', ''];\n };\n return reduce(inferenceHandler, inputs, attributes, 'ReduceMax', reduceOp);\n };\n\nexport const reduceMin: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (inputs: Tensor[], axes: number[]): string[] => {\n const idxZero = [];\n for (let k = 0; k < inputs[0].dims.length; k++) {\n if (axes.indexOf(k) >= 0 || axes.length === 0) {\n idxZero.push(`inputIdx[${k}] = 0;`); // first element\n }\n }\n\n return [`${idxZero.join('\\n')}\\nvalue = _A(inputIdx);`, 'value = min(value, _A(inputIdx));', ''];\n };\n return reduce(inferenceHandler, inputs, attributes, 'ReduceMin', reduceOp);\n };\n\nexport const reduceProd: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (): string[] => ['value = 1.0;', 'value *= _A(inputIdx);', ''];\n return reduce(inferenceHandler, inputs, attributes, 'ReduceProd', reduceOp);\n };\n\nexport const reduceLogSum: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (): string[] => ['value = 0.0;', 'value += _A(inputIdx);', 'value = log(value);'];\n return reduce(inferenceHandler, inputs, attributes, 'ReduceLogSum', reduceOp);\n };\n\nexport const reduceLogSumSquare: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: ReduceAttributes): Tensor[] => {\n const reduceOp: ReduceOp = (): string[] => ['float t; value = 0.0;', 't = _A(inputIdx); value += t * t;', ''];\n return reduce(inferenceHandler, inputs, attributes, 'ReduceLogSumSquare', reduceOp);\n };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nexport const reshape = (handler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n const reshapedDims = ShapeUtil.calculateReshapedDims(inputs[0].dims, inputs[1].integerData);\n if (handler.session.pack) {\n return [handler.reshapePacked(inputs[0], reshapedDims)];\n } else {\n return [handler.reshapeUnpacked(inputs[0], reshapedDims)];\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nexport interface UpsampleAttributes extends AttributeWithCacheKey {\n readonly opset: number;\n readonly isResize: boolean;\n readonly mode: string;\n readonly scales: number[];\n readonly extrapolationValue: number;\n readonly coordinateTransformMode: string;\n readonly useExtrapolation: boolean;\n readonly needRoiInput: boolean;\n readonly nearestMode: string;\n readonly cubicCoefficientA: number;\n readonly excludeOutside: boolean;\n readonly useNearest2xOptimization: boolean;\n readonly roiInputIdx: number;\n readonly scalesInputIdx: number;\n readonly sizesInputIdx: number;\n}\n\nconst upsampleProgramMetadata = {\n name: 'Upsample',\n inputNames: ['X'],\n inputTypes: [TextureType.unpacked],\n};\n\nexport const upsample: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: UpsampleAttributes): Tensor[] => {\n validateInputs(inputs, attributes);\n const output = inferenceHandler.run(\n {\n ...upsampleProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createUpsampleProgramInfo(inferenceHandler, inputs, attributes)\n },\n inputs);\n return [output];\n };\n\nexport const parseUpsampleAttributesV7: OperatorInitialization =\n (node: Graph.Node): UpsampleAttributes => parseUpsampleAttributes(node, 7);\n\nexport const parseUpsampleAttributesV9: OperatorInitialization =\n (node: Graph.Node): UpsampleAttributes => parseUpsampleAttributes(node, 9);\n\nexport const parseUpsampleAttributes = (node: Graph.Node, opset: number): UpsampleAttributes => {\n const isResize = (opset >= 10);\n\n // processing node attributes\n const mode = node.attributes.getString('mode', 'nearest');\n if (mode !== 'nearest' && mode !== 'linear' && (opset < 11 || mode !== 'cubic')) {\n throw new Error(`unrecognized mode: ${mode}`);\n }\n\n let scales: number[] = [];\n if (opset < 9) {\n scales = node.attributes.getFloats('scales');\n scalesValidation(scales, mode, isResize);\n }\n\n const extrapolationValue = node.attributes.getFloat('extrapolation_value', 0.0);\n\n const coordinateTransformMode =\n opset > 10 ? node.attributes.getString('coordinate_transformation_mode', 'half_pixel') : 'asymmetric';\n if ([\n 'asymmetric', 'pytorch_half_pixel', 'tf_half_pixel_for_nn', 'align_corners', 'tf_crop_and_resize', 'half_pixel'\n ].indexOf(coordinateTransformMode) === -1) {\n throw new Error(`coordinate_transform_mode '${coordinateTransformMode}' is not supported`);\n }\n const needRoiInput = (coordinateTransformMode === 'tf_crop_and_resize');\n const useExtrapolation = needRoiInput;\n\n const nearestMode =\n (mode === 'nearest' && opset >= 11) ? node.attributes.getString('nearest_mode', 'round_prefer_floor') : '';\n if (['round_prefer_floor', 'round_prefer_ceil', 'floor', 'ceil', ''].indexOf(nearestMode) === -1) {\n throw new Error(`nearest_mode '${nearestMode}' is not supported`);\n }\n\n const cubicCoefficientA = node.attributes.getFloat('cubic_coeff_a', -0.75);\n const excludeOutside = node.attributes.getInt('exclude_outside', 0) !== 0;\n if (excludeOutside && mode !== 'cubic') {\n throw new Error('exclude_outside can be set to 1 only when mode is CUBIC.');\n }\n\n const useNearest2xOptimization =\n (opset < 11) ? true : (mode === 'nearest' && coordinateTransformMode === 'asymmetric' && nearestMode === 'floor');\n\n let roiInputIdx = 0;\n let scalesInputIdx = 0;\n let sizesInputIdx = 0;\n\n if (opset > 10) {\n // handle when roiInput is not given\n if (node.inputs.length > 2) {\n roiInputIdx = 1;\n scalesInputIdx = 2;\n sizesInputIdx = 3;\n } else {\n scalesInputIdx = 1;\n sizesInputIdx = 2;\n }\n } else if (opset === 9) {\n scalesInputIdx = 1;\n }\n\n return createAttributeWithCacheKey({\n opset,\n isResize,\n mode,\n scales,\n extrapolationValue,\n coordinateTransformMode,\n useExtrapolation,\n needRoiInput,\n nearestMode,\n cubicCoefficientA,\n excludeOutside,\n useNearest2xOptimization,\n roiInputIdx,\n scalesInputIdx,\n sizesInputIdx\n });\n};\n\nconst createUpsampleProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: UpsampleAttributes): ProgramInfo => {\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const [inputWidth, inputHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(inputs[0].dims, TextureType.unpacked);\n\n const outputShape = inputs[0].dims.map((dim, i) => Math.floor(dim * attributes.scales[i]));\n const [outputWidth, outputHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(outputShape, TextureType.unpacked);\n const dim = outputShape.length;\n\n const outputPitches = new Array(dim);\n const inputPitches = new Array(dim);\n let precalculatedPitches = `\n int output_pitches[${dim}];\n int input_pitches[${dim}];\n `;\n for (let d = dim - 1; d >= 0; d--) {\n outputPitches[d] = (d === dim - 1) ? 1 : outputPitches[d + 1] * outputShape[d + 1];\n inputPitches[d] = (d === dim - 1) ? 1 : inputPitches[d + 1] * inputs[0].dims[d + 1];\n\n precalculatedPitches += `\n output_pitches[${d}] = ${outputPitches[d]};\n input_pitches[${d}] = ${inputPitches[d]};\n `;\n }\n const getInputFloatFunction = `\n float getInputFloat(int index) {\n vec2 coords = offsetToCoords(index, ${inputWidth}, ${inputHeight});\n float value = getColorAsFloat(${glsl.texture2D}(X, coords));\n return value;\n }\n `;\n\n const shaderSource = attributes.mode === 'nearest' ?\n // nearest\n `\n ${getInputFloatFunction}\n float process(int indices[${dim}]) {\n int input_index = 0;\n int output_index = coordsToOffset(TexCoords, ${outputWidth}, ${outputHeight});\n\n ${precalculatedPitches}\n\n int d, m;\n for (int dim = 0; dim < ${dim}; ++dim) {\n d = output_index / output_pitches[dim];\n m = output_index - d * output_pitches[dim];\n output_index = m;\n\n if (scales[dim] != 1 && d > 0) {\n int d2 = d / scales[dim];\n m = d - d2 * scales[dim];\n d = d2;\n }\n input_index += input_pitches[dim] * d;\n }\n\n return getInputFloat(input_index);\n }` :\n dim === 4 ?\n // bilinear 4D\n `\n ${getInputFloatFunction}\n float process(int indices[4]) {\n int input_index = 0;\n int output_index = coordsToOffset(TexCoords, ${outputWidth}, ${outputHeight});\n\n ${precalculatedPitches}\n\n int m;\n int index_of_dim0, index_of_dim1, index_of_dim2, index_of_dim3;\n index_of_dim0 = output_index / output_pitches[0];\n m = output_index - index_of_dim0 * output_pitches[0];\n index_of_dim1 = m / output_pitches[1];\n m = m - index_of_dim1 * output_pitches[1];\n index_of_dim2 = m / output_pitches[2];\n m = m - index_of_dim2 * output_pitches[2];\n index_of_dim3 = m;\n\n int index_of_input_dim2, index_of_input_dim3, x_offset, y_offset;\n index_of_input_dim2 = index_of_dim2 / scales[2];\n y_offset = index_of_dim2 - index_of_input_dim2 * scales[2];\n index_of_input_dim3 = index_of_dim3 / scales[3];\n x_offset = index_of_dim3 - index_of_input_dim3 * scales[3];\n\n input_index = index_of_dim0 * input_pitches[0] +\n index_of_dim1 * input_pitches[1] +\n index_of_input_dim2 * input_pitches[2] +\n index_of_input_dim3;\n\n float x00 = getInputFloat(input_index);\n float x10, x01, x11;\n\n bool end_of_dim2 = false;\n if (index_of_input_dim2 == (${inputs[0].dims[2]} - 1)) {\n // It's the end in dimension 2\n x01 = x00;\n end_of_dim2 = true;\n } else {\n x01 = getInputFloat(input_index + input_pitches[2]);\n }\n\n if (index_of_input_dim3 == (input_pitches[2] - 1)) {\n // It's the end in dimension 3\n x10 = x00;\n x11 = x01;\n }\n else {\n x10 = getInputFloat(input_index + 1);\n x11 = end_of_dim2 ? x10 : getInputFloat(input_index + input_pitches[2] + 1);\n }\n\n float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[2]);\n float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[2]);\n return y0 + float(x_offset) * (y1 - y0) / float(scales[3]);\n }` :\n // bilinear 2D\n `\n ${getInputFloatFunction}\n float process(int indices[2]) {\n int input_index = 0;\n int output_index = coordsToOffset(TexCoords, ${outputWidth}, ${outputHeight});\n\n ${precalculatedPitches}\n\n int m;\n int index_of_dim0, index_of_dim1;\n index_of_dim0 = output_index / output_pitches[0];\n m = output_index - index_of_dim0 * output_pitches[0];\n index_of_dim1 = m;\n\n int index_of_input_dim0, index_of_input_dim1, x_offset, y_offset;\n index_of_input_dim0 = index_of_dim0 / scales[0];\n y_offset = index_of_dim0 - index_of_input_dim0 * scales[0];\n index_of_input_dim1 = index_of_dim1 / scales[1];\n x_offset = index_of_dim1 - index_of_input_dim1 * scales[1];\n\n input_index = index_of_input_dim0 * input_pitches[0] + index_of_input_dim1;\n\n float x00 = getInputFloat(input_index);\n float x10, x01, x11;\n\n bool end_of_dim0 = false;\n if (index_of_input_dim0 == (${inputs[0].dims[0]} - 1)) {\n // It's the end in dimension 0\n x01 = x00;\n end_of_dim0 = true;\n } else {\n x01 = getInputFloat(input_index + input_pitches[0]);\n }\n\n if (index_of_input_dim1 == (input_pitches[0] - 1)) {\n // It's the end in dimension 1\n x10 = x00;\n x11 = x01;\n }\n else {\n x10 = getInputFloat(input_index + 1);\n x11 = end_of_dim0 ? x10 : getInputFloat(input_index + input_pitches[0] + 1);\n }\n\n float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[0]);\n float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[0]);\n return y0 + float(x_offset) * (y1 - y0) / float(scales[1]);\n }`;\n return {\n ...upsampleProgramMetadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource,\n variables: [{\n name: 'scales',\n type: 'int',\n arrayLength: attributes.scales.length,\n data: attributes.scales.map(x => Math.ceil(x))\n }]\n };\n };\n\nexport const validateInputs = (inputs: Tensor[], attribute: UpsampleAttributes): void => {\n if (!inputs || (attribute.opset < 9 && inputs.length !== 1) ||\n (attribute.opset >= 9 && attribute.opset < 11 && inputs.length !== 2) ||\n (attribute.opset >= 11 && inputs.length < 2)) {\n throw new Error('invalid inputs.');\n }\n\n if (attribute.scales.length > 0 && inputs[0].dims.length !== attribute.scales.length) {\n throw new Error('Invalid input shape.');\n }\n\n if (inputs[0].type === 'string') {\n throw new Error('Invalid input tensor types.');\n }\n};\n\nexport const scalesValidation = (scales: number[], mode: string, isResize: boolean): void => {\n if (!isResize) {\n for (const scale of scales) {\n if (scale < 1) {\n throw new Error('Scale value should be greater than or equal to 1.');\n }\n }\n } else {\n for (const scale of scales) {\n if (scale <= 0) {\n throw new Error('Scale value should be greater than 0.');\n }\n }\n }\n if (mode === 'linear' || mode === 'cubic') {\n if (scales.length !== 2 && (scales.length !== 4 || scales[0] !== 1 || scales[1] !== 1)) {\n throw new Error(`'Linear' mode and 'Cubic' mode only support 2-D inputs ('Bilinear', 'Bicubic') \\\n or 4-D inputs with the corresponding outermost 2 scale values being 1 \\\n in the ${isResize ? 'Resize' : 'Upsample'} opeartor.`);\n }\n }\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\nimport {getCoordsDataType} from '../utils';\n\nimport {unpackFromChannel} from './packing-utils';\nimport {parseUpsampleAttributes, scalesValidation, UpsampleAttributes, validateInputs} from './upsample';\n\nconst resizeProgramMetadata = {\n name: 'Resize',\n inputNames: ['A'],\n inputTypes: [TextureType.packed]\n};\n\nexport const resize: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: UpsampleAttributes): Tensor[] => {\n validateInputs(inputs, attributes);\n const output = inferenceHandler.run(\n {\n ...resizeProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createPackedResizeProgramInfo(inferenceHandler, inputs, attributes)\n },\n inputs);\n return [output];\n };\n\nexport const parseResizeAttributesV10: OperatorInitialization =\n (node: Graph.Node): UpsampleAttributes => parseUpsampleAttributes(node, 10);\n\nexport const parseResizeAttributesV11: OperatorInitialization =\n (node: Graph.Node): UpsampleAttributes => parseUpsampleAttributes(node, 11);\n\nconst createPackedResizeProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: UpsampleAttributes): ProgramInfo => {\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const [scales, outputShape] = prepareInputs(inputs, attributes);\n\n const isSame =\n scales.every((s: number) => s === 1) && attributes.coordinateTransformMode !== 'tf_crop_and_resize';\n if (isSame) {\n return {\n ...resizeProgramMetadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.packed},\n hasMain: true,\n shaderSource: `void main() {\n vec4 v = ${glsl.texture2D}(X, TexCoords);\n ${glsl.output} = v;\n }`\n };\n }\n\n const dim = outputShape.length;\n if (dim < 2) {\n throw new Error(`output dimension should be at least 2, but got ${dim}`);\n }\n\n const outputHeight = outputShape[dim - 2];\n const outputWidth = outputShape[dim - 1];\n\n const inputShape = inputs[0].dims;\n if (dim !== inputShape.length) {\n throw new Error(`output dimension should match input ${inputShape.length}, but got ${dim}`);\n }\n const inputHeight = inputShape[dim - 2];\n const inputWidth = inputShape[dim - 1];\n\n const scalesHeight = scales[dim - 2];\n const scalesWidth = scales[dim - 1];\n\n let getSourceFracIndex = '';\n\n if (attributes.mode !== 'linear') {\n // TODO: support other modes\n throw new Error(`resize (packed) does not support mode: '${attributes.mode}'`);\n }\n switch (attributes.coordinateTransformMode) {\n case 'asymmetric':\n getSourceFracIndex = `\n vec4 getSourceFracIndex(ivec4 coords) {\n return vec4(coords) / scaleWHWH;\n }\n `;\n break;\n case 'half_pixel':\n getSourceFracIndex = `\n vec4 getSourceFracIndex(ivec4 coords) {\n return (vec4(coords) + 0.5) / scaleWHWH - 0.5;\n }\n `;\n break;\n case 'pytorch_half_pixel':\n getSourceFracIndex = `\n vec4 getSourceFracIndex(ivec4 coords) {\n vec4 fcoords = vec4(coords);\n return vec4(\n ${outputWidth}.0 > 1.0 ? (fcoords.x + 0.5) / scaleWHWH.x - 0.5 : 0.0,\n ${outputHeight}.0 > 1.0 ? (fcoords.y + 0.5) / scaleWHWH.y - 0.5 : 0.0,\n ${outputWidth}.0 > 1.0 ? (fcoords.z + 0.5) / scaleWHWH.z - 0.5 : 0.0,\n ${outputHeight}.0 > 1.0 ? (fcoords.w + 0.5) / scaleWHWH.w - 0.5 : 0.0\n );\n }\n `;\n break;\n case 'align_corners':\n getSourceFracIndex = `\n vec4 getSourceFracIndex(ivec4 coords) {\n vec4 resized = vec4(${outputWidth}.0 - 1.0, ${outputHeight}.0 - 1.0, ${outputWidth}.0 - 1.0,\n ${outputHeight}.0 - 1.0);\n vec4 original = vec4(${inputWidth}.0 - 1.0, ${inputHeight}.0 - 1.0, ${inputWidth}.0 - 1.0,\n ${inputHeight}.0 - 1.0);\n vec4 new_scale = original / resized;\n return vec4(coords) * new_scale;\n }\n `;\n break;\n default:\n // TODO:supporting other coordinateTransformModes\n throw new Error(`resize (packed) does not support coordinateTransformMode: \\\n '${attributes.coordinateTransformMode}'`);\n }\n\n const coordsDataType = getCoordsDataType(dim);\n const unpackChannel = unpackFromChannel();\n const shaderSource = `\n const vec2 inputWH = vec2(${inputHeight}.0, ${inputWidth}.0);\n const vec4 scaleWHWH = vec4(float(${scalesHeight}), float(${scalesWidth}), float(${scalesHeight}), float(${\n scalesWidth}));\n ${unpackChannel}\n ${getSourceFracIndex}\n float getAValue(int x10, int r, int c, int d) {\n return getChannel(getA(x10, r, c, d), vec2(c, d));\n }\n void main() {\n ${coordsDataType} rc = getOutputCoords();\n\n int batch = rc[0];\n int depth = rc[1];\n\n // retrieve the 4 coordinates that is used in the 4 packed output values.\n ivec4 coords = ivec4(rc.wz, rc.w + 1, rc.z + 1);\n\n // calculate the source index in fraction\n vec4 sourceFrac = getSourceFracIndex(coords);\n\n // get the lower and upper bound of the 4 values that will be packed into one texel.\n ivec4 x00 = ivec4(max(sourceFrac.xy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xy)));\n ivec4 x01 = ivec4(max(sourceFrac.xw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xw)));\n ivec4 x10 = ivec4(max(sourceFrac.zy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zy)));\n ivec4 x11 = ivec4(max(sourceFrac.zw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zw)));\n\n bool hasNextRow = rc.w < ${outputHeight - 1};\n bool hasNextCol = rc.z < ${outputWidth - 1};\n\n // pack x00, x01, x10, x11's top-left corner into one vec4 structure\n vec4 topLeft = vec4(\n getAValue(batch, depth, x00.x, x00.y),\n hasNextCol ? getAValue(batch, depth, x01.x, x01.y) : 0.0,\n hasNextRow ? getAValue(batch, depth, x10.x, x10.y) : 0.0,\n (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.y) : 0.0);\n\n // pack x00, x01, x10, x11's top-right corner into one vec4 structure\n vec4 topRight = vec4(\n getAValue(batch, depth, x00.x, x00.w),\n hasNextCol ? getAValue(batch, depth, x01.x, x01.w) : 0.0,\n hasNextRow ? getAValue(batch, depth, x10.x, x10.w) : 0.0,\n (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.w) : 0.0);\n\n // pack x00, x01, x10, x11's bottom-left corner into one vec4 structure\n vec4 bottomLeft = vec4(\n getAValue(batch, depth, x00.z, x00.y),\n hasNextCol ? getAValue(batch, depth, x01.z, x01.y) : 0.0,\n hasNextRow ? getAValue(batch, depth, x10.z, x10.y) : 0.0,\n (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.y) : 0.0);\n\n // pack x00, x01, x10, x11's bottom-right corner into one vec4 structure\n vec4 bottomRight = vec4(\n getAValue(batch, depth, x00.z, x00.w),\n hasNextCol ? getAValue(batch, depth, x01.z, x01.w) : 0.0,\n hasNextRow ? getAValue(batch, depth, x10.z, x10.w) : 0.0,\n (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.w) : 0.0);\n\n // calculate the interpolation fraction on u and v direction\n vec4 frac = vec4(sourceFrac) - floor(sourceFrac);\n vec4 clampFrac = clamp(frac, vec4(0.0), vec4(1.0));\n\n vec4 top = mix(topLeft, topRight, clampFrac.ywyw);\n vec4 bottom = mix(bottomLeft, bottomRight, clampFrac.ywyw);\n vec4 newValue = mix(top, bottom, clampFrac.xxzz);\n\n ${glsl.output} = vec4(newValue);\n }\n `;\n return {\n ...resizeProgramMetadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.packed},\n hasMain: true,\n shaderSource\n };\n };\n\n\nconst prepareInputs = (inputs: Tensor[], attributes: UpsampleAttributes): [readonly number[], readonly number[]] => {\n const x = inputs[0];\n const xDims = x.dims;\n\n let scales = attributes.scales;\n let outputSizes: number[]|undefined;\n if (scales.length === 0) {\n const scalesTensor = inputs[attributes.scalesInputIdx];\n if (scalesTensor && scalesTensor.size !== 0) {\n if (inputs[attributes.sizesInputIdx]) {\n throw new Error('Only one of scales or sizes must be provided as input.');\n }\n scales = parseScalesData(scalesTensor, attributes.mode, attributes.isResize);\n } else {\n const sizesTensor = inputs[attributes.sizesInputIdx];\n if (!sizesTensor || sizesTensor.size === 0) {\n throw new Error('Either scales or sizes MUST be provided as input.');\n }\n\n outputSizes = Array.from(sizesTensor.integerData);\n scales = parseScalesDataFromOutputSize(outputSizes, xDims, attributes.mode, attributes.isResize);\n }\n } else {\n if (inputs[attributes.sizesInputIdx]) {\n throw new Error('Only one of scales or sizes must be provided as input.');\n }\n }\n\n const yDims = outputSizes || (xDims.map((dim, i) => Math.floor(dim * scales[i])));\n\n return [scales, yDims];\n};\n\nconst parseScalesData = (scale: Tensor, mode: string, isResize: boolean): number[] => {\n const scales = Array.from(scale.floatData);\n scalesValidation(scales, mode, isResize);\n return scales;\n};\n\nconst parseScalesDataFromOutputSize =\n (yDims: readonly number[], xDims: readonly number[], mode: string, isResize: boolean): number[] => {\n const length = xDims.length;\n const scales = new Array(length);\n\n for (let i = 0, end = length; i < end; i++) {\n if (xDims[i] === 0) {\n if (yDims[i] !== 0) {\n throw new Error('Input dim is zero but required output dim is non-zero.');\n }\n scales[i] = 1;\n } else {\n scales[i] = yDims[i] / xDims[i];\n }\n }\n scalesValidation(scales, mode, isResize);\n return scales;\n };\n\n// roi data is not used yet. but leave here for future usage.\n// const getRoi = (inputs: Tensor[], attributes: UpsampleAttributes) : number[] => {\n// let roi: number[] = [];\n// if (attributes.needRoiInput) {\n// if (attributes.roiInputIdx <= 0) {\n// throw new Error('Invalid roi input index.');\n// }\n// const roiTensor = inputs[attributes.roiInputIdx];\n// roi = roiTensor.size > 0 ? Array.from(roiTensor.floatData) : [];\n// } else {\n// roi = new Array(inputs[0].dims.length * 2).fill(0);\n// }\n// return roi;\n// };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nexport const shape = (_inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputs(inputs);\n return [new Tensor([inputs[0].dims.length], 'int32', undefined, undefined, new Int32Array(inputs[0].dims))];\n};\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Shape requires 1 input.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {NUMBER_TYPES, OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nexport interface SliceAttributes extends AttributeWithCacheKey {\n readonly axes: number[];\n readonly ends: number[];\n readonly starts: number[];\n}\n\nconst sliceProgramMetadata = {\n name: 'Slice',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked]\n};\n\nexport const slice: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: SliceAttributes): Tensor[] => {\n validateInputs(inputs);\n const output = inferenceHandler.run(\n {\n ...sliceProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createSliceProgramInfo(inferenceHandler, inputs[0], attributes)\n },\n inputs);\n return [output];\n };\n\nexport const parseSliceAttributes: OperatorInitialization = (node: Graph.Node): SliceAttributes => {\n const starts = node.attributes.getInts('starts');\n const ends = node.attributes.getInts('ends');\n const axes = node.attributes.getInts('axes', []);\n return createAttributeWithCacheKey({starts, ends, axes});\n};\n\nconst createSliceProgramInfo =\n (_inferenceHandler: WebGLInferenceHandler, input: Tensor, attributes: SliceAttributes): ProgramInfo => {\n const axes = (attributes.axes.length === 0) ? input.dims.slice(0).map((_val, i) => i) : attributes.axes;\n const normalizedAxes = ShapeUtil.normalizeAxes(axes, input.dims.length);\n const starts = attributes.starts.map((start, i) => {\n if (start > input.dims[normalizedAxes[i]] - 1) {\n return input.dims[normalizedAxes[i]];\n }\n return ShapeUtil.normalizeAxis(start, input.dims[normalizedAxes[i]]);\n });\n const ends = attributes.ends.map((end, i) => {\n if (end > input.dims[normalizedAxes[i]] - 1) {\n return input.dims[normalizedAxes[i]];\n }\n return ShapeUtil.normalizeAxis(end, input.dims[normalizedAxes[i]]);\n });\n\n const outputShape = input.dims.slice();\n\n const sliceOps: string[] = [];\n for (let i = 0; i < normalizedAxes.length; i++) {\n outputShape[normalizedAxes[i]] = ends[i] - starts[i];\n if (starts[i] > 0) {\n sliceOps.push(`outputIdx[${normalizedAxes[i]}] += ${starts[i]};`);\n } // else { sliceOps.push(`outputIdx[${normalizedAxes[i]}] += 0;`); }\n }\n\n const rank = outputShape.length;\n const shaderSource = `\n float process(int outputIdx[${rank}]) {\n ${sliceOps.join('\\n ')}\n return _A(outputIdx);\n }`;\n return {\n ...sliceProgramMetadata,\n output: {dims: outputShape, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Slice requires 1 input.');\n }\n if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) {\n throw new Error('Invalid input type.');\n }\n};\n\nexport const sliceV10 = (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputsV10(inputs);\n const attributes = generateSliceAttributesFromInputs(inferenceHandler, inputs);\n const output = inferenceHandler.run(\n {\n ...sliceProgramMetadata,\n cacheHint: attributes.cacheKey,\n get: () => createSliceProgramInfo(inferenceHandler, inputs[0], attributes)\n },\n [inputs[0]]);\n return [output];\n};\n\nconst generateSliceAttributesFromInputs =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): SliceAttributes => {\n if (!inferenceHandler.session.isInitializer(inputs[1].dataId) ||\n !inferenceHandler.session.isInitializer(inputs[2].dataId) ||\n (inputs.length >= 4 && !inferenceHandler.session.isInitializer(inputs[3].dataId)) ||\n (inputs.length >= 5 && !inferenceHandler.session.isInitializer(inputs[4].dataId))) {\n throw new Error('dynamic slice attributes are not allowed');\n }\n\n if (inputs.length >= 5 && inputs[4].integerData.some((i: number) => i !== 1)) {\n throw new Error('currently non-1 steps is not supported for Slice');\n }\n\n const starts = Array.from(inputs[1].integerData);\n const ends = Array.from(inputs[2].integerData);\n const axes = inputs.length >= 4 ? Array.from(inputs[3].integerData) : [];\n const cacheKey = `${axes};${starts};${ends}`;\n return {starts, ends, axes, cacheKey};\n };\n\nconst validateInputsV10 = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length < 3 || inputs.length > 5) {\n throw new Error('Invalid input number.');\n }\n if (inputs[1].type !== 'int32' || inputs[1].dims.length !== 1) {\n throw new Error('Invalid input type.');\n }\n if (inputs[2].type !== 'int32' || inputs[2].dims.length !== 1) {\n throw new Error('Invalid input type.');\n }\n if (inputs.length >= 4 && (inputs[3].type !== 'int32' || inputs[3].dims.length !== 1)) {\n throw new Error('Invalid input type.');\n }\n if (inputs.length >= 5 && (inputs[4].type !== 'int32' || inputs[4].dims.length !== 1)) {\n throw new Error('Invalid input type.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nimport {transpose, TransposeAttributes} from './transpose';\n\nexport interface SoftmaxAttributes extends AttributeWithCacheKey {\n readonly axis: number;\n}\n\nconst softmaxComputeMaxProgramMetadata = {\n name: 'SoftmaxComputeMax',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked],\n};\n\nconst softmaxComputeScaleProgramMetadata = {\n name: 'SoftmaxComputeScale',\n inputNames: ['A', 'Max'],\n inputTypes: [TextureType.unpacked, TextureType.unpacked],\n};\n\nconst softmaxProgramMetadata = {\n name: 'SoftMax',\n inputNames: ['A', 'Max', 'Norm'],\n inputTypes: [TextureType.unpacked, TextureType.unpacked, TextureType.unpacked],\n};\n\nexport const softmax: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: SoftmaxAttributes): Tensor[] => {\n validateInputs(inputs);\n\n const inputShape = inputs[0].dims.slice();\n const axis = ShapeUtil.normalizeAxis(attributes.axis, inputShape.length);\n const logicalRowCount = ShapeUtil.sizeToDimension(inputShape, axis);\n const featureCount = ShapeUtil.sizeFromDimension(inputShape, axis);\n\n const output = computeSoftmax(inferenceHandler, inputs, attributes, logicalRowCount, featureCount);\n return output;\n };\n\nexport const parseSoftmaxAttributes: OperatorInitialization =\n (node: Graph.Node): SoftmaxAttributes => createAttributeWithCacheKey({axis: node.attributes.getInt('axis', 1)});\n\nexport const parseSoftmaxAttributesV13: OperatorInitialization =\n (node: Graph.Node): SoftmaxAttributes => createAttributeWithCacheKey({axis: node.attributes.getInt('axis', -1)});\n\n// The \"semantic\" meaning of axis has changed in opset-13.\n// Please compare: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Softmax\n// with https://github.com/onnx/onnx/blob/main/docs/Changelog.md#Softmax-11 for detailed explanations\n// To account for the opset-13 behavior, our plan will be to transpose the \"axis\" dim to the innermost dim\n// and perform softmax and then reverse the transpose. We can skip the transposing aspect if the axis is already\n// the innermost dim\nexport const softmaxV13: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: SoftmaxAttributes): Tensor[] => {\n validateInputs(inputs);\n\n const inputShape = inputs[0].dims.slice();\n const axis = ShapeUtil.normalizeAxis(attributes.axis, inputShape.length);\n const rank = inputShape.length;\n\n const isTransposeRequired = (axis !== rank - 1) ? true : false;\n const transposedInputShape: number[] = [];\n let perm: number[] = [];\n let transposedInputs: Tensor[] = [];\n let transposeAttribute: TransposeAttributes;\n\n if (isTransposeRequired) {\n perm = Array.from({length: rank}).map((_, i) => i);\n\n // swap the innermost dim with the dim corresponding to axis\n perm[axis] = rank - 1;\n perm[rank - 1] = axis;\n\n perm.map(p => transposedInputShape.push(inputShape[p]));\n\n transposeAttribute = createAttributeWithCacheKey({perm});\n transposedInputs = transpose(inferenceHandler, inputs, transposeAttribute);\n }\n\n const logicalRowCount = isTransposeRequired ? ShapeUtil.sizeToDimension(transposedInputShape, rank - 1) :\n ShapeUtil.sizeToDimension(inputShape, rank - 1);\n const featureCount = isTransposeRequired ? ShapeUtil.sizeFromDimension(transposedInputShape, rank - 1) :\n ShapeUtil.sizeFromDimension(inputShape, rank - 1);\n\n const output = computeSoftmax(\n inferenceHandler, isTransposeRequired ? transposedInputs : inputs, attributes, logicalRowCount, featureCount);\n\n if (isTransposeRequired) {\n const reversedOutput = transpose(inferenceHandler, output, transposeAttribute!);\n return reversedOutput;\n } else {\n return output;\n }\n };\n\nconst computeSoftmax =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: SoftmaxAttributes, logicalRowCount: number,\n featureCount: number): Tensor[] => {\n const computeMaxProgramInfo =\n createComputeMaxProgramInfo(inferenceHandler, inputs[0], logicalRowCount, featureCount, [logicalRowCount]);\n const max = inferenceHandler.run(\n {...softmaxComputeMaxProgramMetadata, cacheHint: attributes.cacheKey, get: () => computeMaxProgramInfo},\n inputs);\n\n const computeScaleProgramInfo = createComputScaleProgramInfo(\n inferenceHandler, inputs[0], logicalRowCount, featureCount, computeMaxProgramInfo.output.dims,\n [logicalRowCount]);\n const scale = inferenceHandler.run(\n {...softmaxComputeScaleProgramMetadata, cacheHint: attributes.cacheKey, get: () => computeScaleProgramInfo},\n [inputs[0], max]);\n\n const softMaxProgramInfo = createSoftMaxProgramInfo(\n inferenceHandler, inputs[0], logicalRowCount, featureCount, computeMaxProgramInfo.output.dims,\n computeScaleProgramInfo.output.dims);\n const output = inferenceHandler.run(\n {...softmaxProgramMetadata, cacheHint: attributes.cacheKey, get: () => softMaxProgramInfo},\n [inputs[0], max, scale]);\n return [output];\n };\n\n/**\n * Create a texture that contains the maximum value of each of the 'N' rows\n */\nconst createComputeMaxProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, input: Tensor, logicalRowCount: number, featureCount: number,\n outputShape: number[]): ProgramInfo => {\n const [textureWidth, textureHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(input.dims, TextureType.unpacked);\n const rank = outputShape.length;\n\n if (logicalRowCount < 1 || featureCount < 1) {\n throw new Error('Logical row count N and feature count D must be greater than or equal to 1');\n }\n\n if (outputShape.length !== 1) {\n throw new Error('Dimensionality of the output should be 1');\n }\n\n if (outputShape[0] !== logicalRowCount) {\n throw new Error('Shape of the output should be equal to logical row count');\n }\n\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const shaderSource = `\n float process(int[${rank}] indices) {\n int logical_row_start_offset = indices[0] * ${featureCount};\n\n float max = getColorAsFloat(${glsl.texture2D}(A, offsetToCoords(logical_row_start_offset, ${textureWidth},\n ${textureHeight} )));\n for(int i=1; i<${featureCount}; ++i)\n {\n float current = getColorAsFloat(${glsl.texture2D}(A, offsetToCoords(logical_row_start_offset + i,\n ${textureWidth}, ${textureHeight})));\n if(current > max)\n max = current;\n }\n\n return max;\n }`;\n return {\n ...softmaxComputeMaxProgramMetadata,\n output: {dims: outputShape, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\n/**\n * Create a texture that contains the normalization factor for each of the 'N' rows\n */\nconst createComputScaleProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, input: Tensor, logicalRowCount: number, featureCount: number,\n maxElementPerLogicalRow: readonly number[], outputShape: number[]): ProgramInfo => {\n const [textureWidth, textureHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(input.dims, TextureType.unpacked);\n const rank = outputShape.length;\n\n if (logicalRowCount < 1 || featureCount < 1) {\n throw new Error('Logical row count N and feature count D must be greater than or equal to 1');\n }\n\n if (outputShape.length !== 1) {\n throw new Error('Dimensionality of the output should be 1');\n }\n\n if (outputShape[0] !== logicalRowCount) {\n throw new Error('Shape of the output should be equal to logical row count');\n }\n\n if (maxElementPerLogicalRow.length !== 1) {\n throw new Error('Dimensionality of the intermediate results should be 1');\n }\n\n if (maxElementPerLogicalRow[0] !== logicalRowCount) {\n throw new Error('Shape of the intermediate results should be equal to logical row count');\n }\n\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const shaderSource = `\n float process(int[${rank}] indices) {\n int logical_row_start_offset = indices[0] * ${featureCount};\n\n float norm_factor = 0.0;\n float max = _Max(indices);\n for(int i=0; i<${featureCount}; ++i)\n {\n norm_factor += exp(getColorAsFloat(${glsl.texture2D}(A, offsetToCoords(logical_row_start_offset + i,\n ${textureWidth}, ${textureHeight}))) - max);\n }\n\n return norm_factor;\n }`;\n return {\n ...softmaxComputeScaleProgramMetadata,\n output: {dims: outputShape, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst createSoftMaxProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, input: Tensor, logicalRowCount: number, featureCount: number,\n maxElementPerLogicalRow: readonly number[], normalizationPerLogicalRow: readonly number[]): ProgramInfo => {\n const [textureWidth, textureHeight] =\n inferenceHandler.calculateTextureWidthAndHeight(input.dims, TextureType.unpacked);\n const rank = input.dims.length;\n\n if (logicalRowCount < 1 || featureCount < 1) {\n throw new Error('Logical row count N and feature count D must be greater than or equal to 1');\n }\n\n if (maxElementPerLogicalRow.length !== 1 || normalizationPerLogicalRow.length !== 1) {\n throw new Error('Dimensionality of the intermediate results should be 1');\n }\n\n if (maxElementPerLogicalRow[0] !== logicalRowCount || normalizationPerLogicalRow[0] !== logicalRowCount) {\n throw new Error('Shape of the intermediate results should be equal to logical row count');\n }\n\n const shaderSource = `\n float process(int[${rank}] indices) {\n\n // get offset of current logical tensor index from the 2-D texture coordinates (TexCoords)\n int offset = coordsToOffset(TexCoords, ${textureWidth}, ${textureHeight});\n\n //determine the logical row for this index\n int logical_row_index[1];\n logical_row_index[0] = offset / ${featureCount};\n\n float norm_factor = _Norm(logical_row_index);\n\n // avoid possible division by 0\n // if norm_facor is 0, all elements are zero\n // if so, return 0\n if(norm_factor == 0.0)\n return 0.0;\n\n return exp(_A(indices) - _Max(logical_row_index)) / norm_factor;\n }`;\n return {\n ...softmaxProgramMetadata,\n output: {dims: input.dims, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Softmax requires 1 input.');\n }\n\n if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') {\n throw new Error('Invalid input type');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {AttributeWithCacheKey, createAttributeWithCacheKey} from '../../../attribute-with-cache-key';\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil, SplitUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, TextureType} from '../types';\n\nexport interface SplitAttributes extends AttributeWithCacheKey {\n readonly axis: number;\n readonly split: number[];\n readonly numOutputs: number;\n}\n\nconst splitProgramMetadata = {\n name: 'Split',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked],\n};\n\nexport const split: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], attributes: SplitAttributes): Tensor[] => {\n validateInputs(inputs);\n\n const axis = ShapeUtil.normalizeAxis(attributes.axis, inputs[0].dims.length);\n const count = getProgramCount(inferenceHandler, inputs, axis, attributes);\n const output: Tensor[] = [];\n for (let i = 0; i < count; ++i) {\n output.push(inferenceHandler.run(\n {\n ...splitProgramMetadata,\n cacheHint: `${attributes.cacheKey};${i}`,\n get: () => createSplitProgramInfo(inferenceHandler, inputs[0], attributes, axis, i)\n },\n inputs));\n }\n\n return output;\n };\n\nexport const parseSplitAttributes: OperatorInitialization = (node: Graph.Node): SplitAttributes => {\n const axis = node.attributes.getInt('axis', 0);\n const split = node.attributes.getInts('split', []);\n const numOutputs = node.outputs.length;\n return createAttributeWithCacheKey({axis, split, numOutputs});\n};\n\nconst getProgramCount =\n (_inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], axis: number, attributes: SplitAttributes): number => {\n const [, offsets] = SplitUtil.splitShape(inputs[0].dims, axis, attributes.split, attributes.numOutputs);\n return offsets.length;\n };\n\nconst createSplitProgramInfo =\n (_inferenceHandler: WebGLInferenceHandler, input: Tensor, attributes: SplitAttributes, axis: number, index: number):\n ProgramInfo => {\n const [shapes, offsets] = SplitUtil.splitShape(input.dims, axis, attributes.split, attributes.numOutputs);\n const offset = offsets[index];\n const outputShape = shapes[index];\n const rank = outputShape.length;\n const shaderSource = `\n float process(int indices[${rank}]) {\n indices[${axis}] += ${offset};\n return _A(indices);\n }\n `;\n return {\n ...splitProgramMetadata,\n cacheHint: `${attributes.cacheKey}:${index}`,\n output: {dims: outputShape, type: input.type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Split requires one input.');\n }\n\n if (inputs[0].type !== 'int8' && inputs[0].type !== 'uint8' && inputs[0].type !== 'int16' &&\n inputs[0].type !== 'uint16' && inputs[0].type !== 'int32' && inputs[0].type !== 'uint32' &&\n inputs[0].type !== 'float32' && inputs[0].type !== 'float64' && inputs[0].type !== 'bool') {\n throw new Error('Invalid input type.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nexport const squeeze: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], axes: number[]): Tensor[] => {\n validateInputs(inputs);\n const outputShape = ShapeUtil.squeezeShape(inputs[0].dims, axes);\n const output = inferenceHandler.reshapeUnpacked(inputs[0], outputShape);\n return [output];\n };\n\nexport const squeezeV13 = (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputsV13(inputs);\n return squeeze(inferenceHandler, [inputs[0]], Array.from(inputs[1].integerData));\n};\n\nexport const parseSqueezeAttributes: OperatorInitialization = (node: Graph.Node): number[] =>\n node.attributes.getInts('axes');\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Squeeze requires 1 input.');\n }\n\n if (inputs[0].type === 'string') {\n throw new Error('invalid input tensor types.');\n }\n};\n\nconst validateInputsV13 = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 2) {\n throw new Error('Squeeze requires 2 inputs.');\n }\n\n if (inputs[1].type !== 'int32') {\n throw new Error('Invalid input type.');\n }\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from '../../../tensor';\nimport {getGlsl} from '../glsl-source';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramMetadata, TextureType} from '../types';\n\nexport const sum = (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputs(inputs);\n\n const sumProgramMetadata = {\n name: 'Sum',\n inputNames: inputs.map((_v, i) => `X${i}`),\n inputTypes: new Array(inputs.length).fill(TextureType.unpacked)\n };\n\n const output = inferenceHandler.run(\n {...sumProgramMetadata, get: () => createSumProgramInfo(inferenceHandler, inputs, sumProgramMetadata)}, inputs);\n return [output];\n};\n\nconst createSumProgramInfo =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], sumProgramMetadata: ProgramMetadata): ProgramInfo => {\n const glsl = getGlsl(inferenceHandler.session.backend.glContext.version);\n const outputShape = inputs[0].dims.slice();\n const sumLine = inputs.map((_v, i) => `${glsl.texture2D}(X${i},TexCoords)`).join(' + ');\n const shaderSource = `\n void main() {\n vec4 result = ${sumLine};\n ${glsl.output} = result;\n }\n `;\n return {\n ...sumProgramMetadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n hasMain: true,\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length === 0) {\n throw new Error('Sum requires inputs.');\n }\n\n const length = inputs[0].dims.length;\n for (let i = 1; i < inputs.length; i++) {\n if (length !== inputs[i].dims.length) {\n throw new Error('Input shapes are mismatched.');\n }\n\n for (let j = 0; j < length; j++) {\n if (inputs[0].dims[j] !== inputs[i].dims[j]) {\n throw new Error('Input shapes are not matched.');\n }\n }\n }\n\n if (inputs[0].type !== 'float32' && inputs[0].type !== 'float64') {\n throw new Error('Invalid input type.');\n }\n for (let i = 1; i < inputs.length; i++) {\n if (inputs[0].type !== inputs[i].type) {\n throw new Error('Input types are not matched.');\n }\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {NUMBER_TYPES} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {WebGLInferenceHandler} from '../inference-handler';\nimport {ProgramInfo, ProgramMetadata, TextureType} from '../types';\n\nexport const tile = (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputs(inputs);\n\n const tileProgramMetadata = {\n name: 'Tile',\n inputNames: ['A'],\n inputTypes: [TextureType.unpacked],\n };\n\n const output = inferenceHandler.run(\n {...tileProgramMetadata, get: () => createTileProgramInfo(inferenceHandler, inputs, tileProgramMetadata)},\n inputs);\n return [output];\n};\n\nconst createTileProgramInfo =\n (_handler: WebGLInferenceHandler, inputs: Tensor[], tileProgramMetadata: ProgramMetadata): ProgramInfo => {\n const inputShape = inputs[0].dims.slice();\n const outputShape = new Array(inputShape.length);\n\n const tileOps: string[] = [];\n for (let i = 0; i < inputShape.length; i++) {\n outputShape[i] = inputShape[i] * inputs[1].numberData[i];\n tileOps.push(`inputIdx[${i}] = int(mod(float(outputIdx[${i}]), ${inputShape[i]}.));`);\n }\n\n const rank = outputShape.length;\n const shaderSource = `\n float process(int outputIdx[${rank}]) {\n int inputIdx[${rank}];\n ${tileOps.join('\\n')}\n return _A(inputIdx);\n }\n `;\n return {\n ...tileProgramMetadata,\n output: {dims: outputShape, type: inputs[0].type, textureType: TextureType.unpacked},\n shaderSource\n };\n };\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 2) {\n throw new Error('Tile requires 2 input.');\n }\n if (inputs[1].dims.length !== 1) {\n throw new Error('The second input shape must 1 dimension.');\n }\n if (inputs[1].dims[0] !== inputs[0].dims.length) {\n throw new Error('Invalid input shape.');\n }\n if (NUMBER_TYPES.indexOf(inputs[0].type) === -1) {\n throw new Error('Invalid input type.');\n }\n if (inputs[1].type !== 'int32' && inputs[1].type !== 'int16') {\n throw new Error('Invalid repeat type.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Graph} from '../../../graph';\nimport {OperatorImplementation, OperatorInitialization} from '../../../operators';\nimport {Tensor} from '../../../tensor';\nimport {ShapeUtil} from '../../../util';\nimport {WebGLInferenceHandler} from '../inference-handler';\n\nexport const unsqueeze: OperatorImplementation =\n (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[], axes: number[]): Tensor[] => {\n validateInputs(inputs);\n const outputShape = ShapeUtil.unsqueezeShape(inputs[0].dims, axes);\n const output = inferenceHandler.reshapeUnpacked(inputs[0], outputShape);\n return [output];\n };\n\nexport const unsqueezeV13 = (inferenceHandler: WebGLInferenceHandler, inputs: Tensor[]): Tensor[] => {\n validateInputsV13(inputs);\n return unsqueeze(inferenceHandler, [inputs[0]], Array.from(inputs[1].integerData));\n};\n\nexport const parseUnsqueezeAttributes: OperatorInitialization = (node: Graph.Node): number[] =>\n node.attributes.getInts('axes');\n\nconst validateInputs = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 1) {\n throw new Error('Unsqueeze requires 1 input.');\n }\n\n if (inputs[0].type === 'string') {\n throw new Error('invalid input tensor types.');\n }\n};\n\nconst validateInputsV13 = (inputs: Tensor[]): void => {\n if (!inputs || inputs.length !== 2) {\n throw new Error('Unsqueeze requires 2 inputs.');\n }\n\n if (inputs[1].type !== 'int32') {\n throw new Error('Invalid input type.');\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {OpSet} from '../../opset';\n\nimport {batchNormalization, parseBatchNormalizationAttributes} from './ops/batch-normalization';\nimport * as binaryOps from './ops/binary-op';\nimport {cast, parseCastAttributes} from './ops/cast';\nimport {concat, parseConcatAttributes} from './ops/concat';\nimport {conv, parseConvAttributes} from './ops/conv';\nimport {convTranspose, parseConvTransposeAttributes} from './ops/conv-transpose';\nimport {depthToSpace, parseDepthToSpaceAttributes} from './ops/depth-to-space';\nimport {flatten, parseFlattenAttributes} from './ops/flatten';\nimport {gather, parseGatherAttributes} from './ops/gather';\nimport {gemm, parseGemmAttributesV11, parseGemmAttributesV7} from './ops/gemm';\nimport {imageScaler, parseImageScalerAttributes} from './ops/image-scaler';\nimport {instanceNormalization, parseInstanceNormalizationAttributes} from './ops/instance-normalization';\nimport {lrn, parseLrnAttributes} from './ops/lrn';\nimport {matMul, parseMatMulAttributes} from './ops/matmul';\nimport {padV11, padV2, parsePadAttributesV11, parsePadAttributesV2} from './ops/pad';\nimport {averagePool, globalAveragePool, globalMaxPool, maxPool, parseAveragePoolAttributes, parseGlobalAveragePoolAttributes, parseMaxPoolAttributes} from './ops/pool';\nimport {parseReduceAttributes, reduceLogSum, reduceLogSumSquare, reduceMax, reduceMean, reduceMin, reduceProd, reduceSum} from './ops/reduce';\nimport {reshape} from './ops/reshape';\nimport {parseResizeAttributesV10, parseResizeAttributesV11, resize} from './ops/resize-packed';\nimport {shape} from './ops/shape';\nimport {parseSliceAttributes, slice, sliceV10} from './ops/slice';\nimport {parseSoftmaxAttributes, parseSoftmaxAttributesV13, softmax, softmaxV13} from './ops/softmax';\nimport {parseSplitAttributes, split} from './ops/split';\nimport {parseSqueezeAttributes, squeeze, squeezeV13} from './ops/squeeze';\nimport {sum} from './ops/sum';\nimport {tile} from './ops/tile';\nimport {parseTransposeAttributes, transpose} from './ops/transpose';\nimport * as unaryOps from './ops/unary-op';\nimport {parseUnsqueezeAttributes, unsqueeze, unsqueezeV13} from './ops/unsqueeze';\nimport {parseUpsampleAttributesV7, parseUpsampleAttributesV9, upsample} from './ops/upsample';\n\nexport const WEBGL_OP_RESOLVE_RULES: readonly OpSet.ResolveRule[] = [\n ['Abs', '', '6+', unaryOps.abs],\n ['Acos', '', '7+', unaryOps.acos],\n ['Add', '', '7+', binaryOps.add],\n ['And', '', '7+', binaryOps.and],\n ['Asin', '', '7+', unaryOps.asin],\n ['Atan', '', '7+', unaryOps.atan],\n // TODO: support new attributes for AveragePool-10\n ['AveragePool', '', '7+', averagePool, parseAveragePoolAttributes],\n ['BatchNormalization', '', '7+', batchNormalization, parseBatchNormalizationAttributes],\n ['Cast', '', '6+', cast, parseCastAttributes],\n ['Ceil', '', '6+', unaryOps.ceil],\n ['Clip', '', '6-10', unaryOps.clip, unaryOps.parseClipAttributes],\n ['Clip', '', '11+', unaryOps.clipV11],\n ['Concat', '', '4+', concat, parseConcatAttributes],\n ['Conv', '', '1+', conv, parseConvAttributes],\n ['ConvTranspose', '', '1+', convTranspose, parseConvTransposeAttributes],\n ['Cos', '', '7+', unaryOps.cos],\n ['Div', '', '7+', binaryOps.div],\n ['Dropout', '', '7+', unaryOps.identity],\n ['DepthToSpace', '', '1+', depthToSpace, parseDepthToSpaceAttributes],\n ['Equal', '', '7+', binaryOps.equal],\n ['Elu', '', '6+', unaryOps.elu, unaryOps.parseEluAttributes],\n ['Exp', '', '6+', unaryOps.exp],\n ['Flatten', '', '1+', flatten, parseFlattenAttributes],\n ['Floor', '', '6+', unaryOps.floor],\n ['FusedConv', 'com.microsoft', '1+', conv, parseConvAttributes],\n ['Gather', '', '1+', gather, parseGatherAttributes],\n ['Gemm', '', '7-10', gemm, parseGemmAttributesV7],\n ['Gemm', '', '11+', gemm, parseGemmAttributesV11],\n ['GlobalAveragePool', '', '1+', globalAveragePool, parseGlobalAveragePoolAttributes],\n ['GlobalMaxPool', '', '1+', globalMaxPool],\n ['Greater', '', '7+', binaryOps.greater],\n ['Identity', '', '1+', unaryOps.identity],\n ['ImageScaler', '', '1+', imageScaler, parseImageScalerAttributes],\n ['InstanceNormalization', '', '6+', instanceNormalization, parseInstanceNormalizationAttributes],\n ['LeakyRelu', '', '6+', unaryOps.leakyRelu, unaryOps.parseLeakyReluAttributes],\n ['Less', '', '7+', binaryOps.less],\n ['LRN', '', '1+', lrn, parseLrnAttributes],\n ['Log', '', '6+', unaryOps.log],\n ['MatMul', '', '1+', matMul, parseMatMulAttributes],\n // TODO: support new attributes for MaxPool-8 and MaxPool-10\n ['MaxPool', '', '1+', maxPool, parseMaxPoolAttributes],\n ['Mul', '', '7+', binaryOps.mul],\n ['Neg', '', '6+', unaryOps.neg],\n ['Not', '', '1+', unaryOps.not],\n ['Or', '', '7+', binaryOps.or],\n ['Pad', '', '2-10', padV2, parsePadAttributesV2],\n ['Pad', '', '11+', padV11, parsePadAttributesV11],\n ['Pow', '', '7+', binaryOps.pow],\n ['PRelu', '', '7+', binaryOps.pRelu],\n ['ReduceLogSum', '', '1+', reduceLogSum, parseReduceAttributes],\n ['ReduceMax', '', '1+', reduceMax, parseReduceAttributes],\n ['ReduceMean', '', '1+', reduceMean, parseReduceAttributes],\n ['ReduceMin', '', '1+', reduceMin, parseReduceAttributes],\n ['ReduceProd', '', '1+', reduceProd, parseReduceAttributes],\n ['ReduceSum', '', '1-12', reduceSum, parseReduceAttributes],\n ['ReduceSumSquare', '', '1+', reduceLogSumSquare, parseReduceAttributes],\n ['Relu', '', '6+', unaryOps.relu],\n ['Reshape', '', '5+', reshape],\n ['Resize', '', '10', resize, parseResizeAttributesV10],\n ['Resize', '', '11+', resize, parseResizeAttributesV11],\n ['Shape', '', '1+', shape],\n ['Sigmoid', '', '6+', unaryOps.sigmoid],\n ['Sin', '', '7+', unaryOps.sin],\n ['Slice', '', '10+', sliceV10], // TODO: support 'steps' for Slice-10\n ['Slice', '', '1-9', slice, parseSliceAttributes],\n // The \"semantic\" meaning of axis has changed in opset-13.\n ['Softmax', '', '1-12', softmax, parseSoftmaxAttributes],\n ['Softmax', '', '13+', softmaxV13, parseSoftmaxAttributesV13],\n // 'Split' operator has an optional attribute 'split'\n // this attribute determines how the specified axis of input data is split.\n // When the attribute is missing, we need the count of number of outputs\n // so that we can determine the 'split' attribute from the runtime input to the Operator\n ['Split', '', '2-12', split, parseSplitAttributes],\n ['Sqrt', '', '6+', unaryOps.sqrt],\n ['Squeeze', '', '1-12', squeeze, parseSqueezeAttributes],\n ['Squeeze', '', '13+', squeezeV13],\n ['Sub', '', '7+', binaryOps.sub],\n ['Sum', '', '6+', sum],\n ['Tan', '', '7+', unaryOps.tan],\n ['Tanh', '', '6+', unaryOps.tanh],\n ['Tile', '', '6+', tile],\n ['Transpose', '', '1+', transpose, parseTransposeAttributes],\n ['Upsample', '', '7-8', upsample, parseUpsampleAttributesV7],\n ['Upsample', '', '9', upsample, parseUpsampleAttributesV9],\n ['Unsqueeze', '', '1-12', unsqueeze, parseUnsqueezeAttributes],\n ['Unsqueeze', '', '13+', unsqueezeV13],\n ['Xor', '', '7+', binaryOps.xor],\n];\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nconst INLINE_FUNC_DEF_REGEX = /@inline[\\s\\n\\r]+(\\w+)[\\s\\n\\r]+([0-9a-zA-Z_]+)\\s*\\(([^)]*)\\)\\s*{(([^}]|[\\n\\r])*)}/gm;\nconst FUNC_CALL_REGEX = '(\\\\w+)?\\\\s+([_0-9a-zA-Z]+)\\\\s+=\\\\s+__FUNC__\\\\((.*)\\\\)\\\\s*;';\n/**\n * GLSL preprocessor responsible for resolving @inline directives\n */\nexport function replaceInlines(script: string): string {\n const inlineDefs: {[name: string]: {params: Array<{type: string; name: string}|null>; body: string}} = {};\n let match;\n while ((match = INLINE_FUNC_DEF_REGEX.exec(script)) !== null) {\n const params = match[3]\n .split(',')\n .map(s => {\n const tokens = s.trim().split(' ');\n if (tokens && tokens.length === 2) {\n return {type: tokens[0], name: tokens[1]};\n }\n return null;\n })\n .filter(v => v !== null);\n inlineDefs[match[2]] = {params, body: match[4]};\n }\n for (const name in inlineDefs) {\n const regexString = FUNC_CALL_REGEX.replace('__FUNC__', name);\n const regex = new RegExp(regexString, 'gm');\n while ((match = regex.exec(script)) !== null) {\n const type = match[1];\n const variable = match[2];\n const params = match[3].split(',');\n const declLine = (type) ? `${type} ${variable};` : '';\n let newBody: string = inlineDefs[name].body;\n let paramRedecLine = '';\n inlineDefs[name].params.forEach((v, i) => {\n if (v) {\n paramRedecLine += `${v.type} ${v.name} = ${params[i]};\\n`;\n }\n });\n newBody = `${paramRedecLine}\\n ${newBody}`;\n newBody = newBody.replace('return', `${variable} = `);\n const replacement = `\n ${declLine}\n {\n ${newBody}\n }\n `;\n script = script.replace(match[0], replacement);\n }\n }\n script = script.replace(INLINE_FUNC_DEF_REGEX, '');\n return script;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Logger} from '../../instrument';\nimport {assert} from '../../util';\n\n/** Layout preferences */\nexport interface WidthHeightPrefs {\n breakAxis?: number;\n isPacked?: boolean;\n reverseWH?: boolean;\n}\n/**\n * TextureLayoutStrategy is an abstraction for different plans\n * for mapping n-dimensional arrays to 2D textures (and back)\n */\nexport interface TextureLayoutStrategy {\n computeTextureWH(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number];\n}\n\n/**\n * This strategy try to find the minimal max(W,H) that fulfills (W * H == totalSize)\n */\nexport class AlwaysKeepOriginalSizeStrategy implements TextureLayoutStrategy {\n constructor(public maxTextureSize: number) {}\n computeTextureWH(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number] {\n // scalar tensor\n if (shape.length === 0) {\n return [1, 1];\n }\n const maxTextureSize = this.maxTextureSize;\n if (prefs && prefs.breakAxis !== undefined) {\n // check to see if dims fit\n const wsize = prefs.breakAxis >= shape.length ? 1 : shape.slice(prefs.breakAxis).reduce((a, b) => a * b);\n const hsize = prefs.breakAxis <= 0 ? 1 : shape.slice(0, prefs.breakAxis).reduce((a, b) => a * b);\n if (wsize > maxTextureSize || hsize > maxTextureSize) {\n // ignore preferences\n // continue with default layout\n Logger.verbose(\n 'TextureLayout',\n `Given width/height preferences were unattainable: shape:${shape}, breakAxis:${prefs.breakAxis}`);\n } else {\n return [wsize, hsize];\n }\n }\n const totalSize = shape.reduce((a, b) => a * b);\n\n let width = Math.floor(Math.sqrt(totalSize));\n\n for (; width < maxTextureSize && width < totalSize; width++) {\n if (totalSize % width === 0) {\n break;\n }\n }\n\n if (width >= maxTextureSize || totalSize % width !== 0) {\n throw new Error(`The given dimensions are outside this GPU's boundaries: ${shape}`);\n }\n return [width, totalSize / width];\n }\n}\n\nexport class PreferLogicalStrategy implements TextureLayoutStrategy {\n constructor(public maxTextureSize: number) {}\n computeTextureWH(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number] {\n const wh = this.computeTexture(shape, prefs);\n if (prefs && prefs.isPacked) {\n wh[0] /= 2;\n wh[1] /= 2;\n }\n if (prefs && prefs.reverseWH) {\n return [wh[1], wh[0]];\n }\n return wh;\n }\n\n computeTexture(shape: readonly number[], prefs?: WidthHeightPrefs): [number, number] {\n const isPacked = prefs && prefs.isPacked;\n // scalar tensor\n if (shape.length === 0) {\n return isPacked ? [2, 2] : [1, 1];\n }\n let maxTextureSize = this.maxTextureSize;\n if (prefs && prefs.breakAxis !== undefined) {\n // check to see if dims fit\n const wsize = prefs.breakAxis >= shape.length ? 1 : shape.slice(prefs.breakAxis).reduce((a, b) => a * b);\n const hsize = prefs.breakAxis <= 0 ? 1 : shape.slice(0, prefs.breakAxis).reduce((a, b) => a * b);\n if (wsize > maxTextureSize || hsize > maxTextureSize) {\n // ignore preferences\n // continue with default layout\n Logger.verbose(\n 'TextureLayout',\n `Given width/height preferences were unattainable: shape:${shape}, breakAxis:${prefs.breakAxis}`);\n } else {\n return [wsize, hsize];\n }\n }\n let logShape = shape.slice(0);\n if (isPacked) {\n maxTextureSize = maxTextureSize * 2;\n\n // This logic ensures we accurately count the number of packed texels needed\n // to accommodate the tensor. We can only pack values in the same texel if\n // they are from adjacent pairs of rows/cols within the same batch. So if a\n // tensor has 3 rows, we pretend it has 4 rows in order to account for the\n // fact that the texels containing the third row are half empty.\n logShape = logShape.map(\n (_d, i) => i >= logShape.length - 2 ? (logShape[i] % 2 === 0 ? logShape[i] : logShape[i] + 1) : logShape[i]);\n\n // Packed texture height is at least 2 (the channel height of a single\n // texel).\n if (logShape.length === 1) {\n logShape = [2, logShape[0]];\n }\n }\n\n // If logical shape is 2, we don't squeeze, since we want to match physical.\n if (logShape.length !== 2) {\n const squeezeResult = squeezeShape(logShape);\n logShape = squeezeResult.newShape;\n }\n\n const size = sizeFromShape(logShape);\n if (logShape.length <= 1 && size <= maxTextureSize) {\n return [1, size];\n } else if (logShape.length === 2 && logShape[0] <= maxTextureSize && logShape[1] <= maxTextureSize) {\n return logShape as [number, number];\n } else if (logShape.length === 3 && logShape[0] * logShape[1] <= maxTextureSize && logShape[2] <= maxTextureSize) {\n return [logShape[0] * logShape[1], logShape[2]];\n } else if (logShape.length === 3 && logShape[0] <= maxTextureSize && logShape[1] * logShape[2] <= maxTextureSize) {\n return [logShape[0], logShape[1] * logShape[2]];\n } else if (\n logShape.length === 4 && logShape[0] * logShape[1] * logShape[2] <= maxTextureSize &&\n logShape[3] <= maxTextureSize) {\n return [logShape[0] * logShape[1] * logShape[2], logShape[3]];\n } else if (\n logShape.length === 4 && logShape[0] <= maxTextureSize &&\n logShape[1] * logShape[2] * logShape[3] <= maxTextureSize) {\n return [logShape[0], logShape[1] * logShape[2] * logShape[3]];\n } else {\n if (isPacked) {\n // For packed textures size equals the number of channels required to\n // accommodate the texture data. However in order to squarify such that\n // inner dimensions stay even, we rewrite size to equal the number of\n // texels. Then in the return statement we rehydrate the squarified\n // dimensions to channel units.\n return sizeToSquarishShape(size / 4).map(d => d * 2) as [number, number];\n }\n return sizeToSquarishShape(size);\n }\n }\n}\n\nexport function squeezeShape(shape: number[], axis?: number[]): {newShape: number[]; keptDims: number[]} {\n const newShape: number[] = [];\n const keptDims: number[] = [];\n const isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0;\n const axes = (axis == null || isEmptyArray) ? null : parseAxisParam(axis, shape).sort();\n let j = 0;\n for (let i = 0; i < shape.length; ++i) {\n if (axes != null) {\n if (axes[j] === i && shape[i] !== 1) {\n throw new Error(`Can't squeeze axis ${i} since its dim '${shape[i]}' is not 1`);\n }\n if ((axes[j] == null || axes[j] > i) && shape[i] === 1) {\n newShape.push(shape[i]);\n keptDims.push(i);\n }\n if (axes[j] <= i) {\n j++;\n }\n }\n if (shape[i] !== 1) {\n newShape.push(shape[i]);\n keptDims.push(i);\n }\n }\n return {newShape, keptDims};\n}\n\nexport function parseAxisParam(axis: number|number[], shape: number[]): number[] {\n const rank = shape.length;\n\n // Normalize input\n axis = axis == null ? shape.map((_s, i) => i) : ([] as number[]).concat(axis);\n\n // Check for valid range\n assert(\n axis.every(ax => ax >= -rank && ax < rank),\n () => `All values in axis param must be in range [-${rank}, ${rank}) but ` +\n `got axis ${axis}`);\n\n // Check for only integers\n assert(\n axis.every(isInt),\n () => 'All values in axis param must be integers but ' +\n `got axis ${axis}`);\n\n // Handle negative axis.\n return axis.map(a => a < 0 ? rank + a : a);\n}\nexport function isInt(a: number): boolean {\n return a % 1 === 0;\n}\nexport function sizeFromShape(shape: number[]): number {\n if (shape.length === 0) {\n // Scalar.\n return 1;\n }\n let size = shape[0];\n for (let i = 1; i < shape.length; i++) {\n size *= shape[i];\n }\n return size;\n}\nexport function getRowsCols(shape: number[]): [number, number] {\n if (shape.length === 0) {\n throw Error('Cannot get rows and columns of an empty shape array.');\n }\n\n return [shape.length > 1 ? shape[shape.length - 2] : 1, shape[shape.length - 1]];\n}\nexport function sizeToSquarishShape(size: number): [number, number] {\n const width = Math.ceil(Math.sqrt(size));\n return [width, Math.ceil(size / width)];\n}\nexport function getBatchDim(shape: number[], dimsToSkip = 2): number {\n return sizeFromShape(shape.slice(0, shape.length - dimsToSkip));\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {ArrayUtil, BroadcastUtil, ShapeUtil} from '../../util';\n\nimport {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions';\nimport {getGlsl} from './glsl-source';\nimport {squeezeShape} from './texture-layout-strategy';\nimport {TextureLayout} from './types';\nimport {generateShaderFuncNameFromInputSamplerName, generateShaderFuncNameFromInputSamplerNameAtOutCoords, getCoordsDataType, getGlChannels, getSqueezedParams, squeezeInputShape} from './utils';\n\n/**\n * GLSL Library responsible for data types and routines for manipulating\n * coordinates and mapping to/from tensor indices\n */\nexport class CoordsGlslLib extends GlslLib {\n returnType: string;\n\n constructor(context: GlslContext) {\n super(context);\n }\n getFunctions(): {[name: string]: GlslLibRoutine} {\n return {\n ...this.offsetToCoords(),\n ...this.coordsToOffset(),\n ...this.toVec(),\n ...this.valueFrom(),\n // TODO return these only when packing is enabled.\n ...this.getCommonUtilFuncs(),\n ...this.getInputsSamplingSnippets(),\n ...this.getOutputSamplingSnippet()\n };\n }\n getCustomTypes() {\n return {};\n }\n /**\n * Produces a function that can map from\n * 2D normalzied coordinates (s,t) to a flat offset\n */\n protected offsetToCoords(): {[name: string]: GlslLibRoutine} {\n const funcName = 'offsetToCoords';\n return {\n offsetToCoords: new GlslLibRoutine(`\n vec2 ${funcName}(int offset, int width, int height) {\n int t = offset / width;\n int s = offset - t*width;\n vec2 coords = (vec2(s,t) + vec2(0.5,0.5)) / vec2(width, height);\n return coords;\n }\n `)\n };\n }\n\n /**\n * Produces a function that can map from\n * 2D normalzied coordinates (s,t) to a flat offset\n */\n protected coordsToOffset(): {[name: string]: GlslLibRoutine} {\n const funcName = 'coordsToOffset';\n return {\n coordsToOffset: new GlslLibRoutine(`\n int ${funcName}(vec2 coords, int width, int height) {\n float s = coords.s * float(width);\n float t = coords.t * float(height);\n int offset = int(t) * width + int(s);\n return offset;\n }\n `)\n };\n }\n\n /**\n * Generates code for output sampler.\n */\n\n protected getOutputSamplingSnippet(): {[name: string]: GlslLibRoutine} {\n const outputLayout = this.context.outputTextureLayout;\n if (outputLayout.isPacked) {\n return this.getPackedOutputSamplingSnippet(outputLayout);\n } else {\n return this.getUnpackedOutputSamplingSnippet(outputLayout);\n }\n }\n\n /**\n * Generates code for packed output sampler.\n */\n protected getPackedOutputSamplingSnippet(outputLayout: TextureLayout): {[name: string]: GlslLibRoutine} {\n const outShape = outputLayout.unpackedShape;\n const outTexShape = [outputLayout.width, outputLayout.height];\n const result: {[name: string]: GlslLibRoutine} = {};\n const funcName = 'getOutputCoords';\n switch (outShape.length) {\n case 0:\n result[funcName] = this.getOutputScalarCoords();\n break;\n case 1:\n result[funcName] = this.getOutputPacked1DCoords(outShape as [number], outTexShape as [number, number]);\n break;\n case 2:\n result[funcName] = this.getOutputPacked2DCoords(outShape as [number, number], outTexShape as [number, number]);\n break;\n case 3:\n result[funcName] =\n this.getOutputPacked3DCoords(outShape as [number, number, number], outTexShape as [number, number]);\n break;\n default:\n result[funcName] = this.getOutputPackedNDCoords(outShape, outTexShape as [number, number]);\n }\n const glsl = getGlsl(this.context.glContext.version);\n // TODO we need this to properly return a packed vec4 from kernels.\n // Replace all '{glsl.output} = result' with 'setOutput(result)' in all kernels.\n const floatTextureSetRGBASource = `\n void setOutput(vec4 val) {\n ${glsl.output} = val;\n }\n `;\n const floatTextureSetRGBAFuncName = 'floatTextureSetRGBA';\n result[floatTextureSetRGBAFuncName] = new GlslLibRoutine(floatTextureSetRGBASource);\n return result;\n }\n\n /**\n * Generates code for unpacked output sampler.\n */\n protected getUnpackedOutputSamplingSnippet(outputLayout: TextureLayout): {[name: string]: GlslLibRoutine} {\n const outShape = outputLayout.unpackedShape;\n const outTexShape = [outputLayout.width, outputLayout.height];\n const result: {[name: string]: GlslLibRoutine} = {};\n const funcName = 'getOutputCoords';\n switch (outShape.length) {\n case 0:\n result[funcName] = this.getOutputScalarCoords();\n break;\n case 1:\n result[funcName] = this.getOutputUnpacked1DCoords(outShape as [number], outTexShape as [number, number]);\n break;\n case 2:\n result[funcName] =\n this.getOutputUnpacked2DCoords(outShape as [number, number], outTexShape as [number, number]);\n break;\n case 3:\n result[funcName] =\n this.getOutputUnpacked3DCoords(outShape as [number, number, number], outTexShape as [number, number]);\n break;\n case 4:\n result[funcName] = this.getOutputUnpacked4DCoords(\n outShape as [number, number, number, number], outTexShape as [number, number]);\n break;\n case 5:\n result[funcName] = this.getOutputUnpacked5DCoords(\n outShape as [number, number, number, number, number], outTexShape as [number, number]);\n break;\n case 6:\n result[funcName] = this.getOutputUnpacked6DCoords(\n outShape as [number, number, number, number, number, number], outTexShape as [number, number]);\n break;\n default:\n throw new Error(`Unsupported output dimensionality: ${outShape.length}`);\n }\n const glsl = getGlsl(this.context.glContext.version);\n // TODO we need this to properly return a packed vec4 from kernels.\n // Replace all '{glsl.output} = result' with 'setOutput(result)' in all kernels.\n const floatTextureSetRSource = `\n void setOutput(float val) {\n ${glsl.output} = vec4(val, 0, 0, 0);\n }\n `;\n const floatTextureSetRFuncName = 'floatTextureSetR';\n result[floatTextureSetRFuncName] = new GlslLibRoutine(floatTextureSetRSource);\n return result;\n }\n\n /**\n * Scalar output coordinates.\n */\n protected getOutputScalarCoords(): GlslLibRoutine {\n return new GlslLibRoutine(`\n int getOutputCoords() {\n return 0;\n }\n `);\n }\n\n /**\n * 1D packed output coordinates.\n */\n protected getOutputPacked1DCoords(_shape: [number], texShape: [number, number]): GlslLibRoutine {\n const packedTexShape = texShape;\n let source = '';\n if (packedTexShape[0] === 1) {\n source = `\n int getOutputCoords() {\n return 2 * int(TexCoords.y * ${packedTexShape[1]}.0);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n if (packedTexShape[1] === 1) {\n source = `\n int getOutputCoords() {\n return 2 * int(TexCoords.x * ${packedTexShape[0]}.0);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n source = `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n return 2 * (resTexRC.y * ${packedTexShape[0]} + resTexRC.x);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * 2D packed output coordinates.\n */\n protected getOutputPacked2DCoords(shape: [number, number], texShape: [number, number]): GlslLibRoutine {\n let source = '';\n if (ArrayUtil.arraysEqual(shape, texShape)) {\n source = `\n ivec2 getOutputCoords() {\n return 2 * ivec2(TexCoords.xy * vec2(${texShape[0]}, ${texShape[1]}));\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n const packedTexShape = texShape;\n // texels needed to accommodate a logical row\n const texelsInLogicalRow = Math.ceil(shape[1] / 2);\n\n /**\n * getOutputCoords\n *\n * resTexRC: The rows and columns of the texels. If you move over one\n * texel to the right in the packed texture, you are moving over one column\n * (not two).\n *\n * index: The texel index\n */\n source = `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n\n int index = resTexRC.y * ${packedTexShape[0]} + resTexRC.x;\n\n // reverse r and c order for packed texture\n int r = imod(index, ${texelsInLogicalRow}) * 2;\n int c = 2 * (index / ${texelsInLogicalRow});\n\n return ivec2(r, c);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * 3D packed output coordinates.\n */\n protected getOutputPacked3DCoords(shape: [number, number, number], texShape: [number, number]): GlslLibRoutine {\n const packedTexShape = [texShape[0], texShape[1]];\n const texelsInLogicalRow = Math.ceil(shape[2] / 2);\n const texelsInBatch = texelsInLogicalRow * Math.ceil(shape[1] / 2);\n const source = `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n int index = resTexRC.y * ${packedTexShape[0]} + resTexRC.x;\n\n int b = index / ${texelsInBatch};\n index -= b * ${texelsInBatch};\n\n // reverse r and c order for packed texture\n int r = imod(index, ${texelsInLogicalRow}) * 2;\n int c = 2 * (index / ${texelsInLogicalRow});\n\n return ivec3(b, r, c);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * ND packed output coordinates.\n */\n protected getOutputPackedNDCoords(shape: readonly number[], texShape: [number, number]): GlslLibRoutine {\n const packedTexShape = [texShape[0], texShape[1]];\n\n const texelsInLogicalRow = Math.ceil(shape[shape.length - 1] / 2);\n const texelsInBatch = texelsInLogicalRow * Math.ceil(shape[shape.length - 2] / 2);\n let texelsInBatchN = texelsInBatch;\n let batches = '';\n let coords = 'b, r, c';\n\n for (let b = 2; b < shape.length - 1; b++) {\n texelsInBatchN *= shape[shape.length - b - 1];\n batches = `\n int b${b} = index / ${texelsInBatchN};\n index -= b${b} * ${texelsInBatchN};\n ` + batches;\n coords = `b${b}, ` + coords;\n }\n const source = `\n ivec${shape.length} getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n int index = resTexRC.y * ${packedTexShape[0]} + resTexRC.x;\n\n ${batches}\n\n int b = index / ${texelsInBatch};\n index -= b * ${texelsInBatch};\n\n // reverse r and c order for packed texture\n int r = imod(index, ${texelsInLogicalRow}) * 2;\n int c = 2 * (index / ${texelsInLogicalRow});\n\n return ivec${shape.length}(${coords});\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked 1D output coordinates.\n */\n protected getOutputUnpacked1DCoords(_shape: [number], texShape: [number, number]): GlslLibRoutine {\n const source = `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${texShape[0]}, ${texShape[1]}));\n return resTexRC.y * ${texShape[0]} + resTexRC.x;\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked 2D output coordinates.\n */\n protected getOutputUnpacked2DCoords(shape: [number, number], texShape: [number, number]): GlslLibRoutine {\n const source = `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.y * ${texShape[0]} + resTexRC.x;\n int r = index / ${shape[1]};\n int c = index - r * ${shape[1]};\n return ivec2(r, c);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked 3D output coordinates.\n */\n protected getOutputUnpacked3DCoords(shape: [number, number, number], texShape: [number, number]): GlslLibRoutine {\n let source = '';\n const rank = shape.length;\n\n let strides = null;\n if (rank < 2) {\n strides = [];\n }\n\n strides = new Array(rank - 1);\n strides[rank - 2] = shape[rank - 1];\n for (let i = rank - 3; i >= 0; --i) {\n strides[i] = strides[i + 1] * shape[i + 1];\n }\n const coordsToCompute = ['r', 'c', 'd'];\n const coordsFromIndexSnippet =\n strides\n .map((stride, i) => {\n const line1 = `int ${coordsToCompute[i]} = index / ${stride}`;\n const line2 = i === strides.length - 1 ?\n `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` :\n `index -= ${coordsToCompute[i]} * ${stride}`;\n return `${line1}; ${line2};`;\n })\n .join('');\n\n source = `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.y * ${texShape[0]} + resTexRC.x;\n ${coordsFromIndexSnippet}\n return ivec3(r, c, d);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked 4D output coordinates.\n */\n protected getOutputUnpacked4DCoords(shape: [number, number, number, number], texShape: [number, number]):\n GlslLibRoutine {\n let source = '';\n const rank = shape.length;\n\n let strides = null;\n if (rank < 2) {\n strides = [];\n }\n\n strides = new Array(rank - 1);\n strides[rank - 2] = shape[rank - 1];\n for (let i = rank - 3; i >= 0; --i) {\n strides[i] = strides[i + 1] * shape[i + 1];\n }\n const coordsToCompute = ['r', 'c', 'd', 'd2'];\n const coordsFromIndexSnippet =\n strides\n .map((stride, i) => {\n const line1 = `int ${coordsToCompute[i]} = index / ${stride}`;\n const line2 = i === strides.length - 1 ?\n `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` :\n `index -= ${coordsToCompute[i]} * ${stride}`;\n return `${line1}; ${line2};`;\n })\n .join('');\n\n source = `\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.y * ${texShape[0]} + resTexRC.x;\n ${coordsFromIndexSnippet}\n return ivec4(r, c, d, d2);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked 5D output coordinates.\n */\n protected getOutputUnpacked5DCoords(shape: [number, number, number, number, number], texShape: [number, number]):\n GlslLibRoutine {\n let source = '';\n const rank = shape.length;\n\n let strides = null;\n if (rank < 2) {\n strides = [];\n }\n\n strides = new Array(rank - 1);\n strides[rank - 2] = shape[rank - 1];\n for (let i = rank - 3; i >= 0; --i) {\n strides[i] = strides[i + 1] * shape[i + 1];\n }\n const coordsToCompute = ['r', 'c', 'd', 'd2', 'd3'];\n const coordsFromIndexSnippet =\n strides\n .map((stride, i) => {\n const line1 = `int ${coordsToCompute[i]} = index / ${stride}`;\n const line2 = i === strides.length - 1 ?\n `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` :\n `index -= ${coordsToCompute[i]} * ${stride}`;\n return `${line1}; ${line2};`;\n })\n .join('');\n\n source = `\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.y * ${texShape[0]} + resTexRC.x;\n ${coordsFromIndexSnippet}\n return ivec5(r, c, d, d2, d3);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked 6D output coordinates.\n */\n protected getOutputUnpacked6DCoords(shape: [number, number, number, number, number, number], texShape: [\n number, number\n ]): GlslLibRoutine {\n let source = '';\n const rank = shape.length;\n\n let strides = null;\n if (rank < 2) {\n strides = [];\n }\n\n strides = new Array(rank - 1);\n strides[rank - 2] = shape[rank - 1];\n for (let i = rank - 3; i >= 0; --i) {\n strides[i] = strides[i + 1] * shape[i + 1];\n }\n const coordsToCompute = ['r', 'c', 'd', 'd2', 'd3', 'd4'];\n const coordsFromIndexSnippet =\n strides\n .map((stride, i) => {\n const line1 = `int ${coordsToCompute[i]} = index / ${stride}`;\n const line2 = i === strides.length - 1 ?\n `int ${coordsToCompute[i + 1]} = index - ${coordsToCompute[i]} * ${stride}` :\n `index -= ${coordsToCompute[i]} * ${stride}`;\n return `${line1}; ${line2};`;\n })\n .join('');\n\n source = `\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(TexCoords.xy *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.y * ${texShape[0]} + resTexRC.x;\n ${coordsFromIndexSnippet}\n return ivec6(r, c, d, d2, d3, d4);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Generates code for common UV coords computation utility functions.\n */\n protected getCommonUtilFuncs(): {[name: string]: GlslLibRoutine} {\n const result: {[name: string]: GlslLibRoutine} = {};\n let funcName = 'uvFromFlat';\n result[funcName] = new GlslLibRoutine(`\n vec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texC = index / texNumR;\n int texR = index - texC * texNumR;\n // TODO: swap texR, texC order in following function so row is corresponding to u and column is corresponding to\n // v.\n return (vec2(texR, texC) + halfCR) / vec2(texNumR, texNumC);\n }\n `);\n funcName = 'packedUVfrom1D';\n result[funcName] = new GlslLibRoutine(`\n vec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n }\n `);\n funcName = 'packedUVfrom2D';\n result[funcName] = new GlslLibRoutine(`\n vec2 packedUVfrom2D(int texNumR, int texNumC, int texelsInLogicalRow, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n }\n `);\n funcName = 'packedUVfrom3D';\n result[funcName] = new GlslLibRoutine(`\n vec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n }\n `);\n funcName = 'sampleTexture';\n const glsl = getGlsl(this.context.glContext.version);\n result[funcName] = new GlslLibRoutine(`\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ${glsl.texture2D}(textureSampler, uv).r;\n }`);\n return result;\n }\n\n /**\n * Constructing snippets for inputs\n */\n protected getInputsSamplingSnippets(): {[name: string]: GlslLibRoutine} {\n const result: {[name: string]: GlslLibRoutine} = {};\n const outputLayout = this.context.outputTextureLayout;\n this.context.programInfo.inputNames.forEach((samplerName, i) => {\n const inputLayout = this.context.inputTextureLayouts[i];\n const funcName = generateShaderFuncNameFromInputSamplerName(samplerName);\n if (inputLayout.isPacked) {\n result[funcName] = this.getPackedSamplerFromInput(funcName, samplerName, inputLayout);\n } else {\n result[funcName] = this.getUnpackedSamplerFromInput(funcName, samplerName, inputLayout);\n }\n\n const outCoordFuncName = generateShaderFuncNameFromInputSamplerNameAtOutCoords(samplerName);\n if (inputLayout.unpackedShape.length <= outputLayout.unpackedShape.length) {\n if (inputLayout.isPacked) {\n result[outCoordFuncName] =\n this.getPackedSamplerAtOutputCoords(outCoordFuncName, inputLayout, outputLayout, samplerName);\n } else {\n result[outCoordFuncName] =\n this.getUnpackedSamplerAtOutputCoords(outCoordFuncName, inputLayout, outputLayout, samplerName);\n }\n }\n });\n\n return result;\n }\n\n /**\n * Constructing snippets for output coordinates of samplers\n */\n protected getPackedSamplerAtOutputCoords(\n funcName: string, inputLayout: TextureLayout, outputLayout: TextureLayout, name: string): GlslLibRoutine {\n const inShape = inputLayout.unpackedShape;\n const outShape = outputLayout.unpackedShape;\n const texName = name;\n const texFuncSnippet = generateShaderFuncNameFromInputSamplerName(texName);\n\n const inRank = inShape.length;\n const outRank = outShape.length;\n\n const broadcastDims = BroadcastUtil.getBroadcastDims(inShape, outShape);\n\n const type = getCoordsDataType(outRank);\n const rankDiff = outRank - inRank;\n let coordsSnippet: string;\n const fields = getGlChannels();\n\n if (inRank === 0) {\n coordsSnippet = '';\n } else if (outRank < 2 && broadcastDims.length >= 1) {\n coordsSnippet = 'coords = 0;';\n } else {\n coordsSnippet = broadcastDims.map(d => `coords.${fields[d + rankDiff]} = 0;`).join('\\n');\n }\n let unpackedCoordsSnippet = '';\n if (outRank < 2 && inRank > 0) {\n unpackedCoordsSnippet = 'coords';\n } else {\n unpackedCoordsSnippet = inShape.map((_s, i) => `coords.${fields[i + rankDiff]}`).join(', ');\n }\n\n let output = 'return outputValue;';\n const inSize = ShapeUtil.size(inShape);\n const isInputScalar = inSize === 1;\n const outSize = ShapeUtil.size(outShape);\n const isOutputScalar = outSize === 1;\n\n if (inRank === 1 && !isInputScalar && !isOutputScalar) {\n output = `\n return vec4(outputValue.xy, outputValue.xy);\n `;\n } else if (isInputScalar && !isOutputScalar) {\n if (outRank === 1) {\n output = `\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n `;\n } else {\n output = `\n return vec4(outputValue.x);\n `;\n }\n } else if (broadcastDims.length) {\n const rows = inRank - 2;\n const cols = inRank - 1;\n\n if (broadcastDims.indexOf(rows) > -1 && broadcastDims.indexOf(cols) > -1) {\n output = 'return vec4(outputValue.x);';\n } else if (broadcastDims.indexOf(rows) > -1) {\n output = 'return vec4(outputValue.x, outputValue.y, ' +\n 'outputValue.x, outputValue.y);';\n } else if (broadcastDims.indexOf(cols) > -1) {\n output = 'return vec4(outputValue.xx, outputValue.zz);';\n }\n }\n\n const swapLastDimsSnippet = `\n int lastDim = coords.${fields[outRank - 1]};\n coords.${fields[outRank - 1]} = coords.${fields[outRank - 2]};\n coords.${fields[outRank - 2]} = lastDim;\n `;\n const source = `\n vec4 ${funcName}() {\n ${type} coords = getOutputCoords();\n ${swapLastDimsSnippet}\n ${coordsSnippet}\n vec4 outputValue = ${texFuncSnippet}(${unpackedCoordsSnippet});\n ${output}\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.getOutputCoords']);\n }\n\n /**\n * Constructing snippets for unpacked output coordinates of samplers\n */\n protected getUnpackedSamplerAtOutputCoords(\n funcName: string, inputLayout: TextureLayout, outputLayout: TextureLayout, name: string): GlslLibRoutine {\n const outTexShape = [outputLayout.width, outputLayout.height];\n const inTexShape = [inputLayout.width, inputLayout.height];\n const inRank = inputLayout.unpackedShape.length;\n const outRank = outputLayout.unpackedShape.length;\n const inShape = inputLayout.unpackedShape;\n const outShape = outputLayout.unpackedShape;\n const texFuncSnippet = generateShaderFuncNameFromInputSamplerName(name);\n\n if (inRank === outRank && ArrayUtil.arraysEqual(inTexShape, outTexShape)) {\n const source = `\n float ${funcName}() {\n return sampleTexture(${name}, TexCoords);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n\n const type = getCoordsDataType(outRank);\n const broadcastDims = BroadcastUtil.getBroadcastDims(inShape, outShape);\n const rankDiff = outRank - inRank;\n let coordsSnippet: string;\n const fields = getGlChannels();\n\n if (inRank === 0) {\n coordsSnippet = '';\n } else if (outRank < 2 && broadcastDims.length >= 1) {\n coordsSnippet = 'coords = 0;';\n } else {\n coordsSnippet = broadcastDims.map(d => `coords.${fields[d + rankDiff]} = 0;`).join('\\n');\n }\n let unpackedCoordsSnippet = '';\n if (outRank < 2 && inRank > 0) {\n unpackedCoordsSnippet = 'coords';\n } else {\n unpackedCoordsSnippet = inputLayout.unpackedShape.map((_s, i) => `coords.${fields[i + rankDiff]}`).join(', ');\n }\n const source = `\n float ${funcName}() {\n ${type} coords = getOutputCoords();\n ${coordsSnippet}\n return ${texFuncSnippet}(${unpackedCoordsSnippet});\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.getOutputCoords']);\n }\n\n /**\n * Constructing snippets for packed operations.\n */\n protected getPackedSamplerFromInput(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n switch (inputLayout.unpackedShape.length) {\n case 0:\n return this.getPackedSamplerScalar(funcName, name);\n case 1:\n return this.getPackedSampler1D(funcName, name, inputLayout);\n case 2:\n return this.getPackedSampler2D(funcName, name, inputLayout);\n case 3:\n return this.getPackedSampler3D(funcName, name, inputLayout);\n default:\n return this.getPackedSamplerND(funcName, name, inputLayout);\n }\n }\n\n /**\n * Constructing snippets for unpacked operations.\n */\n protected getUnpackedSamplerFromInput(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n switch (shape.length) {\n case 0:\n return this.getUnpackedSamplerScalar(funcName, name, inputLayout);\n case 1:\n return this.getUnpackedSampler1D(funcName, name, inputLayout);\n case 2:\n return this.getUnpackedSampler2D(funcName, name, inputLayout);\n case 3:\n return this.getUnpackedSampler3D(funcName, name, inputLayout);\n case 4:\n return this.getUnpackedSampler4D(funcName, name, inputLayout);\n case 5:\n return this.getUnpackedSampler5D(funcName, name, inputLayout);\n case 6:\n return this.getUnpackedSampler6D(funcName, name, inputLayout);\n default:\n // TODO support more dimensionalities\n throw new Error(`Unsupported dimension ${shape.length}-D`);\n }\n }\n\n /**\n * Packed scalar snippet.\n */\n protected getPackedSamplerScalar(funcName: string, name: string): GlslLibRoutine {\n const glsl = getGlsl(this.context.glContext.version);\n const source = `\n vec4 ${funcName}() {\n return ${glsl.texture2D}(${name}, halfCR);\n }\n `;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Packed 1D snippet.\n */\n protected getPackedSampler1D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const texShape = [inputLayout.width, inputLayout.height];\n const packedTexShape = [texShape[1], texShape[0]];\n const glsl = getGlsl(this.context.glContext.version);\n\n const packedSampler = `vec4 ${funcName}(int index) {\n vec2 uv = packedUVfrom1D(\n ${packedTexShape[0]}, ${packedTexShape[1]}, index);\n return ${glsl.texture2D}(${name}, uv);\n }`;\n const source = packedSampler;\n return new GlslLibRoutine(source, ['coordinates.packedUVfrom1D']);\n }\n\n /**\n * Packed 2D snippet.\n */\n protected getPackedSampler2D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const texShape = [inputLayout.width, inputLayout.height];\n const glsl = getGlsl(this.context.glContext.version);\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n\n if (texShape != null && ArrayUtil.arraysEqual(shape, texShape)) {\n const packedSampler = `vec4 ${funcName}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0);\n return ${glsl.texture2D}(${name}, uv);\n }`;\n\n return new GlslLibRoutine(packedSampler);\n }\n const packedTexShape = texShape;\n const valuesPerRow = Math.ceil(shape[1] / 2);\n const packedSampler = `vec4 ${funcName}(int row, int col) {\n vec2 uv = packedUVfrom2D(${packedTexShape[1]}, ${packedTexShape[0]}, ${valuesPerRow}, row, col);\n return ${glsl.texture2D}(${name}, uv);\n }`;\n const source = packedSampler;\n return new GlslLibRoutine(source, ['coordinates.packedUVfrom2D']);\n }\n\n /**\n * Packed 3D snippet.\n */\n protected getPackedSampler3D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const texShape = [inputLayout.width, inputLayout.height];\n const packedTexShape = [texShape[0], texShape[1]];\n const glsl = getGlsl(this.context.glContext.version);\n\n if (shape[0] === 1) {\n const squeezedShape = shape.slice(1);\n const keptDims = [1, 2];\n const newInputShape = squeezeInputShape(shape, squeezedShape);\n const params = ['b', 'row', 'col'];\n // Deep copy of input texture layout.\n const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout));\n newInputLayout.unpackedShape = newInputShape;\n const samplerRoutine = this.getPackedSamplerFromInput(funcName, name, newInputLayout);\n const packedSampler = `${samplerRoutine.routineBody}\n vec4 ${funcName}(int b, int row, int col) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n } `;\n const source = packedSampler;\n return new GlslLibRoutine(source, samplerRoutine.dependencies);\n }\n const texNumR = packedTexShape[0];\n const texNumC = packedTexShape[1];\n\n const valuesPerRow = Math.ceil(shape[2] / 2);\n const texelsInBatch = valuesPerRow * Math.ceil(shape[1] / 2);\n\n const packedSampler = `vec4 ${funcName}(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n ${texNumC}, ${texNumR}, ${texelsInBatch}, ${valuesPerRow}, b, row, col);\n return ${glsl.texture2D}(${name}, uv);}`;\n const source = packedSampler;\n return new GlslLibRoutine(source, ['coordinates.packedUVfrom3D']);\n }\n /*\n * Packed ND snippet.\n */\n protected getPackedSamplerND(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const rank = shape.length;\n const texShape = [inputLayout.width, inputLayout.height];\n const glsl = getGlsl(this.context.glContext.version);\n\n const packedTexShape = [texShape[0], texShape[1]];\n const texNumR = packedTexShape[1];\n const texNumC = packedTexShape[0];\n const valuesPerRow = Math.ceil(shape[rank - 1] / 2);\n let texelsInBatch = valuesPerRow * Math.ceil(shape[rank - 2] / 2);\n let params = 'int b, int row, int col';\n let index = `b * ${texelsInBatch} + (row / 2) * ${valuesPerRow} + (col / 2)`;\n for (let b = 2; b < rank - 1; b++) {\n params = `int b${b}, ` + params;\n texelsInBatch *= shape[rank - b - 1];\n index = `b${b} * ${texelsInBatch} + ` + index;\n }\n const packedSampler = `vec4 ${funcName}(${params}) {\n int index = ${index};\n int texR = index / ${texNumC};\n int texC = index - texR * ${texNumC};\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texNumC}, ${texNumR});\n return ${glsl.texture2D}(${name}, uv);\n }`;\n const source = packedSampler;\n return new GlslLibRoutine(source);\n }\n\n /**\n * Unpacked scalar snippet.\n */\n protected getUnpackedSamplerScalar(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const [texNumR, texNumC] = [inputLayout.width, inputLayout.height];\n if (texNumR === 1 && texNumC === 1) {\n const source = `\n float ${funcName}() {\n return sampleTexture(${name}, halfCR);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n\n const source = `\n float ${funcName}() {\n int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC});\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, offset_${name});\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(\n source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n }\n\n /**\n * Unpacked 1D snippet.\n */\n protected getUnpackedSampler1D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const tNumR = inputLayout.width;\n const tNumC = inputLayout.height;\n\n if (tNumC === 1 && tNumR === 1) {\n const source = `\n float ${funcName}(int index) {\n return sampleTexture(${name}, halfCR);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n\n if (tNumC === 1) {\n const source = `\n float ${funcName}(int index) {\n vec2 uv = vec2((float(index) + 0.5) / ${tNumR}.0, 0.5);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n if (tNumR === 1) {\n const source = `\n float ${funcName}(int index) {\n vec2 uv = vec2(0.5, (float(index) + 0.5) / ${tNumC}.0);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n const source = `\n float ${funcName}(int index) {\n vec2 uv = uvFromFlat(${tNumR}, ${tNumC}, index);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture']);\n }\n\n /**\n * Unpacked 2D snippet.\n */\n\n protected getUnpackedSampler2D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n\n // TODO: modify row/col order for other dimensions.\n const texShape = [inputLayout.height, inputLayout.width];\n\n if (texShape != null && ArrayUtil.arraysEqual(shape, texShape)) {\n const texNumR = texShape[1];\n const texNumC = texShape[0];\n const source = `\n float ${funcName}(int row, int col) {\n vec2 uv = (vec2(row, col) + halfCR) / vec2(${texNumR}.0, ${texNumC}.0);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n\n const {newShape, keptDims} = squeezeShape(shape as number[]);\n const squeezedShape = newShape;\n if (squeezedShape.length < shape.length) {\n const newInputShape = squeezeInputShape(shape, squeezedShape);\n // Deep copy of input texture layout.\n const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout));\n newInputLayout.unpackedShape = newInputShape;\n\n const params = ['col', 'row'];\n const source = `\n ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody}\n float ${funcName}(int row, int col) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture']);\n }\n\n const texNumR = texShape[1];\n const texNumC = texShape[0];\n if (texNumC === 1) {\n const source = `\n float ${funcName}(int row, int col) {\n int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC});\n float index = dot(vec3(row, col, offset_${name}), vec3(${shape[1]}, 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / ${texNumR}.0);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n }\n\n if (texNumR === 1) {\n const source = `\n float ${funcName}(int row, int col) {\n int offset_${name} = coordsToOffset(TexCoords, ${texNumR}, ${texNumC});\n float index = dot(vec3(row, col, offset_${name}), vec3(${shape[1]}, 1, 1));\n vec2 uv = vec2((index + 0.5) / ${texNumC}.0, 0.5);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n }\n\n const source = `\n float ${funcName}(int row, int col) {\n int index = col * ${shape[1]} + row;\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(\n source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n }\n\n /**\n * Unpacked 3D snippet.\n */\n\n protected getUnpackedSampler3D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const stride0 = shape[1] * shape[2];\n const stride1 = shape[2];\n\n const {newShape, keptDims} = squeezeShape(shape as number[]);\n const squeezedShape = newShape;\n if (squeezedShape.length < shape.length) {\n const newInputShape = squeezeInputShape(shape, squeezedShape);\n const params = ['batch', 'col', 'row'];\n // Deep copy of input texture layout.\n const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout));\n newInputLayout.unpackedShape = newInputShape;\n const routine = this.getUnpackedSamplerFromInput(funcName, name, newInputLayout);\n // TODO: revisit the logic here to make it simpler\n const revDims = keptDims.reverse();\n const source = `\n ${routine.routineBody}\n float ${funcName}(int batch, int row, int col) {\n return ${funcName}(${getSqueezedParams(params, revDims)});\n }\n `;\n return new GlslLibRoutine(source, routine.dependencies);\n }\n\n const texNumR = inputLayout.width;\n const texNumC = inputLayout.height;\n const source = `\n float ${funcName}(int depth, int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = depth * ${stride0} + col * ${stride1} + row;\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(\n source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n }\n\n /**\n * Unpacked 4D snippet.\n */\n\n protected getUnpackedSampler4D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const stride2 = shape[3];\n const stride1 = shape[2] * stride2;\n const stride0 = shape[1] * stride1;\n\n //\n // TODO: re-enable this shortcut once the index calculation bug is fixed.\n //\n // const {newShape, keptDims} = squeezeShape(shape as number[]);\n // if (newShape.length < shape.length) {\n // const newInputShape = squeezeInputShape(shape, newShape);\n // const params = ['row', 'col', 'depth', 'depth2'];\n // // Deep copy of input texture layout.\n // const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout));\n // newInputLayout.unpackedShape = newInputShape;\n // const source = `\n // ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody}\n // float ${funcName}(int row, int col, int depth, int depth2) {\n // return ${funcName}(${getSqueezedParams(params, keptDims)});\n // }\n // `;\n // return new GlslLibRoutine(\n // source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n // }\n\n const texNumR = inputLayout.width;\n const texNumC = inputLayout.height;\n const source = `\n float ${funcName}(int row, int col, int depth, int depth2) {\n int index = row * ${stride0} + col * ${stride1} +\n depth2 * ${stride2} + depth;\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture']);\n }\n\n /**\n * Unpacked 5D snippet.\n */\n protected getUnpackedSampler5D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const stride3 = shape[4];\n const stride2 = shape[3] * stride3;\n const stride1 = shape[2] * stride2;\n const stride0 = shape[1] * stride1;\n\n const {newShape, keptDims} = squeezeShape(shape as number[]);\n if (newShape.length < shape.length) {\n const newInputShape = squeezeInputShape(shape, newShape);\n const params = ['row', 'col', 'depth', 'depth2', 'depth3'];\n // Deep copy of input texture layout.\n const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout));\n newInputLayout.unpackedShape = newInputShape;\n\n const source = `\n ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody}\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.uvFromFlat']);\n }\n\n const texNumR = inputLayout.width;\n const texNumC = inputLayout.height;\n const source = `\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} +\n depth3 * ${stride3} + depth2;\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.uvFromFlat']);\n }\n\n /**\n * Unpacked 6D snippet.\n */\n protected getUnpackedSampler6D(funcName: string, name: string, inputLayout: TextureLayout): GlslLibRoutine {\n const shape = inputLayout.unpackedShape;\n const stride4 = shape[5];\n const stride3 = shape[4] * stride4;\n const stride2 = shape[3] * stride3;\n const stride1 = shape[2] * stride2;\n const stride0 = shape[1] * stride1;\n\n const {newShape, keptDims} = squeezeShape(shape as number[]);\n if (newShape.length < shape.length) {\n const newInputShape = squeezeInputShape(shape, newShape);\n const params = ['row', 'col', 'depth', 'depth2', 'depth3', 'depth4'];\n // Deep copy of input texture layout.\n const newInputLayout: TextureLayout = JSON.parse(JSON.stringify(inputLayout));\n newInputLayout.unpackedShape = newInputShape;\n\n const source = `\n ${this.getUnpackedSamplerFromInput(funcName, name, newInputLayout).routineBody}\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n return new GlslLibRoutine(source, ['coordinates.sampleTexture', 'coordinates.uvFromFlat']);\n }\n\n const texNumR = inputLayout.width;\n const texNumC = inputLayout.height;\n const source = `\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} +\n depth2 * ${stride3} + depth3 * ${stride4} + depth4;\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${name}, uv);\n }\n `;\n return new GlslLibRoutine(\n source, ['coordinates.uvFromFlat', 'coordinates.sampleTexture', 'coordinates.coordsToOffset']);\n }\n\n /**\n * This is the main function to map from the given texture coordiantes (s,t)\n * to logical indices for the output\n * There will only be one single variation of this\n * Also see coordsToOffset and offsetToIndices for input-specific versions\n */\n protected toVec(): {[name: string]: GlslLibRoutine} {\n const output = this.context.outputTextureLayout;\n const rank = output.shape.length;\n const strides = output.strides;\n const xScale = output.width;\n const yScale = output.height;\n\n const stridesBlock = [];\n for (let i = 0; i < rank - 1; ++i) {\n stridesBlock.push(`\n c[${i}] = offset / ${strides[i]};`);\n stridesBlock.push(`\n offset -= c[${i}] * ${strides[i]};`);\n }\n stridesBlock.push(`\n c[${rank - 1}] = offset;`);\n const body = `\n void toVec(vec2 texCoords, out int c[${rank}]) {\n int offset = coordsToOffset(texCoords, ${xScale}, ${yScale});\n ${stridesBlock.join('')}\n }\n void toVec(int offset, out int c[${rank}]) {\n ${stridesBlock.join('')}\n }\n `;\n return {toVec: new GlslLibRoutine(body, ['coordinates.coordsToOffset'])};\n }\n /**\n * These are value getter functions generated for each input\n * Each function is hardwired to the name and dimensions of the input\n * An '_T' variation is also produced which accesses values as if the\n * input was transposed\n */\n protected valueFrom(): {[name: string]: GlslLibRoutine} {\n const result: {[name: string]: GlslLibRoutine} = {};\n this.context.programInfo.inputNames.forEach((name, i) => {\n const layout = this.context.inputTextureLayouts[i];\n const shape = layout.unpackedShape.length > 0 ? layout.unpackedShape : layout.shape;\n const rank = shape.length;\n let funcName = `_${name}`;\n result[funcName] = new GlslLibRoutine(\n this.getValueFromSingle(name, rank, layout.width, layout.height, false),\n [`shapeUtils.indicesToOffset${funcName}`, 'coordinates.offsetToCoords', 'fragcolor.getColorAsFloat']);\n funcName = funcName + '_T';\n result[funcName] = new GlslLibRoutine(\n this.getValueFromSingle(name, rank, layout.width, layout.height, true),\n [`shapeUtils.indicesToOffset${funcName}`, 'coordinates.offsetToCoords', 'fragcolor.getColorAsFloat']);\n });\n return result;\n }\n /**\n * Produces one value getter function for the name and rank given\n * If a transpose is set proper offsetToCoords mapping will be used\n * @param name name of the function\n * @param rank rank of the input\n * @param transpose whether or not should generate a transpose variation\n */\n protected getValueFromSingle(varName: string, rank: number, width: number, height: number, transpose: boolean):\n string {\n let name = `_${varName}`;\n if (transpose) {\n name = name + '_T';\n }\n const glsl = getGlsl(this.context.glContext.version);\n return `\n float ${name}(int m[${rank}]) {\n int offset = indicesToOffset${name}(m);\n vec2 coords = offsetToCoords(offset, ${width}, ${height});\n float value = getColorAsFloat(${glsl.texture2D}(${varName}, coords));\n return value;\n }\n `;\n }\n\n /**\n * Produces a packed value getter function for the name and rank given\n * If a transpose is set proper offsetToCoords mapping will be used\n * @param name name of the function\n * @param rank rank of the input\n * @param transpose whether or not should generate a transpose variation\n */\n protected getPackedValueFrom(varName: string, rank: number, width: number, height: number, transpose: boolean):\n string {\n let name = `_${varName}_Pack`;\n if (transpose) {\n name = name + '_T';\n }\n const glsl = getGlsl(this.context.glContext.version);\n return `\n vec4 ${name}(int m[${rank}]) {\n int offset = indicesToOffset_${varName}(m);\n vec2 coords = offsetToCoords(offset, ${width}, ${height});\n return ${glsl.texture2D}(${varName}, coords);\n }\n `;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions';\n\n/**\n * This GLSL library handles routines converting\n * float32 to/from Unsigned byte or float 16\n */\nexport class EncodingGlslLib extends GlslLib {\n constructor(context: GlslContext) {\n super(context);\n }\n getFunctions(): {[name: string]: GlslLibRoutine} {\n return {...this.encodeFloat32(), ...this.decodeFloat32()};\n }\n getCustomTypes(): {[name: string]: string} {\n return {};\n }\n protected encodeFloat32(): {[name: string]: GlslLibRoutine} {\n return {\n encode: new GlslLibRoutine(`highp vec4 encode(highp float f) {\n return vec4(f, 0.0, 0.0, 0.0);\n }\n `)\n };\n }\n protected decodeFloat32(): {[name: string]: GlslLibRoutine} {\n return {\n decode: new GlslLibRoutine(`highp float decode(highp vec4 rgba) {\n return rgba.r;\n }\n `)\n };\n }\n /**\n * returns the routine to encode encode a 32bit float to a vec4 (of unsigned bytes)\n * @credit: https://stackoverflow.com/questions/7059962/how-do-i-convert-a-vec4-rgba-value-to-a-float\n */\n protected encodeUint8(): {[name: string]: GlslLibRoutine} {\n const endianness = EncodingGlslLib.isLittleEndian() ? 'rgba.rgba=rgba.abgr;' : '';\n return {\n encode: new GlslLibRoutine(`\n highp vec4 encode(highp float f) {\n highp float F = abs(f);\n highp float Sign = step(0.0,-f);\n highp float Exponent = floor(log2(F));\n highp float Mantissa = (exp2(- Exponent) * F);\n Exponent = floor(log2(F) + 127.0) + floor(log2(Mantissa));\n highp vec4 rgba;\n rgba[0] = 128.0 * Sign + floor(Exponent*exp2(-1.0));\n rgba[1] = 128.0 * mod(Exponent,2.0) + mod(floor(Mantissa*128.0),128.0);\n rgba[2] = floor(mod(floor(Mantissa*exp2(23.0 -8.0)),exp2(8.0)));\n rgba[3] = floor(exp2(23.0)*mod(Mantissa,exp2(-15.0)));\n ${endianness}\n rgba = rgba / 255.0; // values need to be normalized to [0,1]\n return rgba;\n }\n `)\n };\n }\n /**\n * returns the routine to encode a vec4 of unsigned bytes to float32\n * @credit: https://stackoverflow.com/questions/7059962/how-do-i-convert-a-vec4-rgba-value-to-a-float\n */\n protected decodeUint8(): {[name: string]: GlslLibRoutine} {\n const endianness = EncodingGlslLib.isLittleEndian() ? 'rgba.rgba=rgba.abgr;' : '';\n return {\n decode: new GlslLibRoutine(`\n highp float decode(highp vec4 rgba) {\n rgba = rgba * 255.0; // values need to be de-normalized from [0,1] to [0,255]\n ${endianness}\n highp float Sign = 1.0 - step(128.0,rgba[0])*2.0;\n highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0;\n highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000);\n highp float Result = Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 ));\n return Result;\n }\n `)\n };\n }\n /**\n * Determines if the machine is little endian or not\n * @credit: https://gist.github.com/TooTallNate/4750953\n */\n static isLittleEndian(): boolean {\n const b = new ArrayBuffer(4);\n const a = new Uint32Array(b);\n const c = new Uint8Array(b);\n a[0] = 0xdeadbeef;\n if (c[0] === 0xef) {\n return true;\n }\n if (c[0] === 0xde) {\n return false;\n }\n throw new Error('unknown endianness');\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions';\nimport {getGlsl} from './glsl-source';\n\n/**\n * This GLSL library handles routines around reading a texlet and writing to it\n * Reading and writing could be more than just dealing with one channel\n * It may require encoding/decoding to/from 4 channels into one\n */\nexport class FragColorGlslLib extends GlslLib {\n constructor(context: GlslContext) {\n super(context);\n }\n getFunctions(): {[name: string]: GlslLibRoutine} {\n return {...this.setFragColor(), ...this.getColorAsFloat()};\n }\n getCustomTypes(): {[name: string]: string} {\n return {};\n }\n protected setFragColor(): {[name: string]: GlslLibRoutine} {\n const glsl = getGlsl(this.context.glContext.version);\n return {\n setFragColor: new GlslLibRoutine(\n `\n void setFragColor(float value) {\n ${glsl.output} = encode(value);\n }\n `,\n ['encoding.encode'])\n };\n }\n protected getColorAsFloat(): {[name: string]: GlslLibRoutine} {\n return {\n getColorAsFloat: new GlslLibRoutine(\n `\n float getColorAsFloat(vec4 color) {\n return decode(color);\n }\n `,\n ['encoding.decode'])\n };\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions';\n\n/**\n * GLSL Library responsible for data types and routines for manipulating\n * coordinates and mapping to/from tensor indices\n */\nexport class ShapeUtilsGlslLib extends GlslLib {\n constructor(context: GlslContext) {\n super(context);\n }\n getFunctions(): {[name: string]: GlslLibRoutine} {\n return {\n ...this.bcastIndex(),\n ...this.bcastMatmulIndex(),\n ...this.offsetToIndices(),\n ...this.indicesToOffset(),\n ...this.incrementIndices()\n };\n }\n getCustomTypes() {\n return {};\n }\n protected bcastIndex(): {[name: string]: GlslLibRoutine} {\n const outputRank = this.context.outputTextureLayout.shape.length;\n const result: {[name: string]: GlslLibRoutine} = {};\n this.context.programInfo.inputNames.forEach((name, i) => {\n const shape = this.context.inputTextureLayouts[i].unpackedShape;\n if (shape.length <= outputRank) {\n const rank = shape.length;\n const dimOffset = outputRank - rank;\n const funcName = `bcastIndices_${name}`;\n let block = '';\n for (let i = 0; i < rank; ++i) {\n block += `\n realIndices[${i}] = int( mod(float(bcastedIndices[${dimOffset + i}]), ${shape[i]}.0) );\n `;\n }\n const body = `\n void ${funcName} (int bcastedIndices[${outputRank}], out int realIndices[${rank}]) {\n ${block}\n }\n `;\n result[funcName] = new GlslLibRoutine(body);\n }\n });\n return result;\n }\n protected bcastMatmulIndex(): {[name: string]: GlslLibRoutine} {\n const outputRank = this.context.outputTextureLayout.shape.length;\n const result: {[name: string]: GlslLibRoutine} = {};\n this.context.programInfo.inputNames.forEach((name, i) => {\n const shape = this.context.inputTextureLayouts[i].shape;\n if (!(shape.length < 2 || shape.length > outputRank)) {\n const rank = shape.length;\n const dimOffset = outputRank - rank;\n const funcName = `bcastMatmulIndices_${name}`;\n let block = '';\n for (let i = 0; i < rank - 2; ++i) {\n block += `\n realIndices[${i}] = int( mod(float(bcastedIndices[${dimOffset + i}]), ${shape[i]}.0) );\n `;\n }\n const body = `\n void ${funcName}(int bcastedIndices[${outputRank}], out int realIndices[${rank}]) {\n ${block}\n realIndices[${rank - 1}] = bcastedIndices[${outputRank - 1}];\n realIndices[${rank - 2}] = bcastedIndices[${outputRank - 2}];\n }\n `;\n result[funcName] = new GlslLibRoutine(body);\n }\n });\n return result;\n }\n protected indicesToOffset(): {[name: string]: GlslLibRoutine} {\n const result: {[name: string]: GlslLibRoutine} = {};\n this.context.programInfo.inputNames.forEach((name, i) => {\n const shape = this.context.inputTextureLayouts[i].shape;\n const strides = this.context.inputTextureLayouts[i].strides;\n const rank = shape.length;\n let funcName = `indicesToOffset_${name}`;\n result[funcName] = new GlslLibRoutine(ShapeUtilsGlslLib.indexToOffsetSingle(funcName, rank, strides));\n funcName = `indicesToOffset_${name}_T`;\n result[funcName] =\n new GlslLibRoutine(ShapeUtilsGlslLib.indexToOffsetSingle(funcName, rank, strides.slice().reverse()));\n });\n return result;\n }\n static indexToOffsetSingle(name: string, rank: number, strides: readonly number[]): string {\n let block = '';\n for (let i = rank - 1; i >= 0; --i) {\n block += `\n offset += indices[${i}] * ${strides[i]};\n `;\n }\n return `\n int ${name}(int indices[${rank}]) {\n int offset = 0;\n ${block}\n return offset;\n }\n `;\n }\n protected offsetToIndices(): {[name: string]: GlslLibRoutine} {\n const result: {[name: string]: GlslLibRoutine} = {};\n this.context.programInfo.inputNames.forEach((name, i) => {\n const shape = this.context.inputTextureLayouts[i].shape;\n const strides = this.context.inputTextureLayouts[i].strides;\n const rank = shape.length;\n let funcName = `offsetToIndices_${name}`;\n result[funcName] = new GlslLibRoutine(ShapeUtilsGlslLib.offsetToIndicesSingle(funcName, rank, strides));\n funcName = `offsetToIndices_${name}_T`;\n result[funcName] =\n new GlslLibRoutine(ShapeUtilsGlslLib.offsetToIndicesSingle(funcName, rank, strides.slice().reverse()));\n });\n return result;\n }\n static offsetToIndicesSingle(name: string, rank: number, strides: readonly number[]): string {\n const stridesBlock = [];\n for (let i = 0; i < rank - 1; ++i) {\n stridesBlock.push(`\n indices[${i}] = offset / ${strides[i]};`);\n stridesBlock.push(`\n offset -= indices[${i}] * ${strides[i]};`);\n }\n stridesBlock.push(`\n indices[${rank - 1}] = offset;`);\n return `\n void ${name}(int offset, out int indices[${rank}]) {\n ${stridesBlock.join('')}\n }\n `;\n }\n protected incrementIndices(): {[name: string]: GlslLibRoutine} {\n const result: {[name: string]: GlslLibRoutine} = {};\n this.context.programInfo.inputNames.forEach((name, i) => {\n const shape = this.context.inputTextureLayouts[i].shape;\n const rank = shape.length;\n const funcName = `incrementIndices_${name}`;\n let shapeInit = '';\n for (let i = 0; i < rank; ++i) {\n shapeInit += `\n shape[${i}] = ${shape[i]};`;\n }\n const body = `\n void ${funcName}(int axis, out int indices[${rank}]) {\n int shape[${rank}];\n ${shapeInit};\n for(int i = ${rank} -1 ; i >= 0; --i) {\n if(i > axis) continue;\n indices[i] += 1;\n if(indices[i] < shape[i]) {\n break;\n }\n indices[i] = 0;\n }\n }\n `;\n result[funcName] = new GlslLibRoutine(body);\n });\n return result;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {GlslContext, GlslLib, GlslLibRoutine} from './glsl-definitions';\n\n/**\n * GLSL Library responsible for vec routines\n * Vec is an varible length int array. The length is fixed at the time of\n * generating the library functions from the dimensions of the output.\n */\nexport class VecGlslLib extends GlslLib {\n constructor(context: GlslContext) {\n super(context);\n }\n getCustomTypes(): {[name: string]: string} {\n return {};\n }\n getFunctions(): {[name: string]: GlslLibRoutine} {\n return {...this.binaryVecFunctions(), ...this.copyVec(), ...this.setVecItem(), ...this.getVecItem()};\n }\n protected binaryVecFunctions(): {[name: string]: GlslLibRoutine} {\n const outputLayout = this.context.outputTextureLayout;\n const rank = outputLayout.shape.length;\n const nameOp: {[name: string]: string} = {add: '+=', sub: '-=', mul: '*=', div: '/='};\n const result: {[name: string]: GlslLibRoutine} = {};\n for (const name in nameOp) {\n const fname = `${name}Vec`;\n let assignmentBlock = '';\n for (let i = 0; i < rank; ++i) {\n assignmentBlock += `\n dest[${i}] ${nameOp[name]} src[${i}];\n `;\n }\n const body = `\n void ${fname}(int src[${rank}], out int dest[${rank}]) {\n ${assignmentBlock}\n }\n `;\n result[fname] = new GlslLibRoutine(body);\n }\n\n return result;\n }\n protected copyVec(): {[name: string]: GlslLibRoutine} {\n const outputLayout = this.context.outputTextureLayout;\n const rank = outputLayout.shape.length;\n let assignmentBlock = '';\n for (let i = 0; i < rank; ++i) {\n assignmentBlock += `\n dest[${i}] = src[${i}];\n `;\n }\n const body = `\n void copyVec(int src[${rank}], out int dest[${rank}]) {\n ${assignmentBlock}\n }\n `;\n return {copyVec: new GlslLibRoutine(body)};\n }\n\n protected setVecItem(): {[name: string]: GlslLibRoutine} {\n const outputLayout = this.context.outputTextureLayout;\n const rank = outputLayout.shape.length;\n let block = `\n if(index < 0)\n index =${rank} + index;\n if (index == 0)\n m[0] = value;\n `;\n for (let i = 1; i < rank - 1; ++i) {\n block += `\n else if (index == ${i})\n m[${i}] = value;\n `;\n }\n block += `\n else\n m[${rank - 1}] = value;\n `;\n const body = `\n void setVecItem(out int m[${rank}], int index, int value) {\n ${block}\n }\n `;\n return {setVecItem: new GlslLibRoutine(body)};\n }\n protected getVecItem(): {[name: string]: GlslLibRoutine} {\n const outputLayout = this.context.outputTextureLayout;\n const rank = outputLayout.shape.length;\n let block = `\n if(index < 0)\n index = ${rank} + index;\n if (index == 0)\n return m[0];\n `;\n for (let i = 1; i < rank - 1; ++i) {\n block += `\n else if (index == ${i})\n return m[${i}];\n `;\n }\n block += `\n else\n return m[${rank - 1}];\n `;\n const body = `\n int getVecItem(int m[${rank}], int index) {\n ${block}\n }\n `;\n return {getVecItem: new GlslLibRoutine(body)};\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {CoordsGlslLib} from './glsl-coordinate-lib';\nimport {GlslContext, GlslLib} from './glsl-definitions';\nimport {EncodingGlslLib} from './glsl-encoding-lib';\nimport {FragColorGlslLib} from './glsl-fragcolor-lib';\nimport {ShapeUtilsGlslLib} from './glsl-shape-utils-lib';\nimport {VecGlslLib} from './glsl-vec-lib';\n\nexport const glslRegistry: {[name: string]: new (context: GlslContext) => GlslLib} = {\n 'encoding': EncodingGlslLib,\n 'fragcolor': FragColorGlslLib,\n 'vec': VecGlslLib,\n 'shapeUtils': ShapeUtilsGlslLib,\n 'coordinates': CoordsGlslLib,\n // 'arrays': ArrayGlslSLib\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {GlslContext, GlslLib, GlslLibRoutineNode, TopologicalSortGlslRoutines} from './glsl-definitions';\nimport {replaceInlines} from './glsl-function-inliner';\nimport {glslRegistry} from './glsl-registered-libs';\nimport {getDefaultFragShaderMain, getFragShaderPreamble} from './glsl-source';\nimport {ProgramInfo, TextureLayout, VariableInfo} from './types';\nimport {WebGLContext} from './webgl-context';\n\n/**\n * Preprocessor for the additions to the GLSL language\n * It deals with:\n * @include directives\n * @inline\n * Loop unrolling (not implemented)\n * Macro resolution (not implemented)\n */\nexport class GlslPreprocessor {\n readonly context: GlslContext;\n readonly libs: {[name: string]: GlslLib} = {};\n readonly glslLibRoutineDependencyGraph: {[routineName: string]: GlslLibRoutineNode} = {};\n\n constructor(\n glContext: WebGLContext, programInfo: ProgramInfo, inputTextureLayouts: TextureLayout[],\n outputTextureLayout: TextureLayout) {\n this.context = new GlslContext(glContext, programInfo, inputTextureLayouts, outputTextureLayout);\n\n // construct GlslLibs\n Object.keys(glslRegistry).forEach((name: string) => {\n const lib = new glslRegistry[name](this.context);\n this.libs[name] = lib;\n });\n\n // construct GlslRoutineDependencyGraph\n const map = this.glslLibRoutineDependencyGraph;\n for (const libName in this.libs) {\n const lib = this.libs[libName];\n const routinesInLib = lib.getFunctions();\n for (const routine in routinesInLib) {\n const key = libName + '.' + routine;\n let currentNode: GlslLibRoutineNode;\n if (map[key]) {\n currentNode = map[key];\n currentNode.routineBody = routinesInLib[routine].routineBody;\n } else {\n currentNode = new GlslLibRoutineNode(key, routinesInLib[routine].routineBody);\n map[key] = currentNode;\n }\n const dependencies = routinesInLib[routine].dependencies;\n if (dependencies) {\n for (let i = 0; i < dependencies.length; ++i) {\n if (!map[dependencies[i]]) {\n const node = new GlslLibRoutineNode(dependencies[i]);\n map[dependencies[i]] = node;\n currentNode.addDependency(node);\n } else {\n currentNode.addDependency(map[dependencies[i]]);\n }\n }\n }\n }\n }\n }\n\n preprocess(): string {\n const programInfo = this.context.programInfo;\n let source = programInfo.shaderSource;\n\n // append main() function\n if (!this.context.programInfo.hasMain) {\n source = `${source}\n ${getDefaultFragShaderMain(this.context.glContext.version, this.context.outputTextureLayout.shape.length)}`;\n }\n // replace inlines\n source = replaceInlines(source);\n\n // concat final source string\n return `${getFragShaderPreamble(this.context.glContext.version)}\n ${this.getUniforms(programInfo.inputNames, programInfo.variables)}\n ${this.getImports(source)}\n ${source}`;\n }\n\n protected getImports(script: string): string {\n const routinesIncluded = this.selectGlslLibRoutinesToBeIncluded(script);\n\n if (routinesIncluded.length === 0) {\n return '';\n }\n\n let routines = '';\n for (let i = 0; i < routinesIncluded.length; ++i) {\n if (routinesIncluded[i].routineBody) {\n routines += routinesIncluded[i].routineBody + '\\n';\n } else {\n throw new Error(`Missing body for the Glsl Library routine: ${routinesIncluded[i].name}`);\n }\n }\n\n return routines;\n }\n private selectGlslLibRoutinesToBeIncluded(script: string): GlslLibRoutineNode[] {\n const nodes: GlslLibRoutineNode[] = [];\n\n Object.keys(this.glslLibRoutineDependencyGraph).forEach(classAndRoutine => {\n const routine = classAndRoutine.split('.')[1];\n if (script.indexOf(routine) !== -1) {\n nodes.push(this.glslLibRoutineDependencyGraph[classAndRoutine]);\n }\n });\n\n return TopologicalSortGlslRoutines.returnOrderedNodes(nodes);\n }\n\n protected getUniforms(samplers?: string[], variables?: VariableInfo[]): string {\n const uniformLines: string[] = [];\n if (samplers) {\n for (const sampler of samplers) {\n uniformLines.push(`uniform sampler2D ${sampler};`);\n }\n }\n if (variables) {\n for (const variable of variables) {\n uniformLines.push(\n `uniform ${variable.type} ${variable.name}${variable.arrayLength ? `[${variable.arrayLength}]` : ''};`);\n }\n }\n return uniformLines.join('\\n');\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {env} from 'onnxruntime-common';\n\nimport {Logger, Profiler} from '../../instrument';\n\nimport {GlslPreprocessor} from './glsl-preprocessor';\nimport {getVertexShaderSource} from './glsl-source';\nimport {TextureLayoutStrategy} from './texture-layout-strategy';\nimport {Artifact, ProgramInfo, ProgramVariable, TextureData, TextureLayout, VariableInfo} from './types';\nimport {WebGLContext} from './webgl-context';\n\n/**\n * ProgramManager is the main class behind running computations\n * It builds ProgramInfo's into Artifacts\n * It compiles given ProgramInfo's into WebGL Prorams (cached as Artifacts)\n * Uses the artifact to run the computation by calling Draw on\n * the WebGL drawing buffer\n * ProgramManager automatically maps (binds) input variables to their\n * corresponding Location's in the binary program\n */\nexport class ProgramManager {\n repo: Map; // this should be per-session object\n vertexShader: WebGLShader;\n attributesBound: boolean;\n\n constructor(\n public profiler: Readonly, public glContext: WebGLContext,\n public textureLayoutStrategy: TextureLayoutStrategy) {\n this.repo = new Map();\n this.attributesBound = false;\n }\n getArtifact(key: unknown): Artifact|undefined {\n return this.repo.get(key);\n }\n setArtifact(key: unknown, artifact: Artifact): void {\n this.repo.set(key, artifact);\n }\n run(buildArtifact: Artifact, inputs: TextureData[], output: TextureData): void {\n this.profiler.event('op', `ProgramManager.run ${buildArtifact.programInfo.name ?? 'unknown kernel'}`, () => {\n const gl = this.glContext.gl;\n const program = buildArtifact.program;\n gl.useProgram(program);\n try {\n this.bindOutput(output);\n if (!this.attributesBound) {\n this.bindAttributes(buildArtifact.attribLocations);\n }\n this.bindUniforms(buildArtifact.uniformLocations, buildArtifact.programInfo.variables ?? [], inputs);\n } catch (err) {\n Logger.error('ProgramManager', buildArtifact.programInfo.shaderSource);\n throw err;\n }\n this.profiler.event('backend', 'GlContext.draw()', () => {\n this.glContext.draw();\n });\n }, this.glContext);\n }\n dispose(): void {\n if (this.vertexShader) {\n this.glContext.deleteShader(this.vertexShader);\n }\n this.repo.forEach(a => this.glContext.deleteProgram(a.program));\n }\n build(programInfo: ProgramInfo, inputTextureLayouts: TextureLayout[], outputTextureLayout: TextureLayout): Artifact {\n return this.profiler.event('backend', 'ProgramManager.build', () => {\n const preprocessor = new GlslPreprocessor(this.glContext, programInfo, inputTextureLayouts, outputTextureLayout);\n const fragScript = preprocessor.preprocess();\n const program = this.compile(fragScript);\n const artifact = {\n programInfo,\n program,\n uniformLocations: this.getUniformLocations(\n program, preprocessor.context.programInfo.inputNames, preprocessor.context.programInfo.variables),\n attribLocations: this.getAttribLocations(program)\n };\n return artifact;\n });\n }\n protected compile(fragShaderScript: string): WebGLProgram {\n if (!this.vertexShader) {\n Logger.verbose('ProrgramManager', 'Compiling and caching Vertex shader for the first time');\n const vertexShaderScript = getVertexShaderSource(this.glContext.version);\n this.vertexShader = this.glContext.compileShader(vertexShaderScript, this.glContext.gl.VERTEX_SHADER);\n }\n if (env.debug) {\n Logger.verbose('ProrgramManager', `FragShader:\n${fragShaderScript}\n`);\n }\n const fragShader = this.glContext.compileShader(fragShaderScript, this.glContext.gl.FRAGMENT_SHADER);\n const program = this.glContext.createProgram(this.vertexShader, fragShader);\n this.glContext.deleteShader(fragShader);\n return program;\n }\n bindOutput(td: TextureData): void {\n const width = td.width;\n const height = td.height;\n Logger.verbose(\n 'ProrgramManager',\n `Binding output texture to Framebuffer: w/h=${width}/${height}, shape=${td.shape}, type=${td.tensor.type}`);\n this.glContext.attachFramebuffer(td.texture, width, height);\n }\n bindAttributes(attribLocations: Artifact.AttribLocations): void {\n const positionHandle = attribLocations.position;\n const textureCoordHandle = attribLocations.textureCoord;\n this.glContext.setVertexAttributes(positionHandle, textureCoordHandle);\n this.attributesBound = true;\n }\n bindUniforms(uniformLocations: Artifact.UniformLocations, variables: ProgramVariable[], textures: TextureData[]):\n void {\n const gl = this.glContext.gl;\n let texturePosition = 0;\n for (const {name, type, location, arrayLength} of uniformLocations) {\n const value = variables.find(v => v.name === name)?.data;\n if (type !== 'sampler2D' && !value) {\n throw new Error(`variable '${name}' does not have data defined in program info`);\n }\n switch (type) {\n case 'sampler2D':\n this.bindTexture(textures[texturePosition], location, texturePosition);\n texturePosition++;\n break;\n case 'float':\n if (arrayLength) {\n gl.uniform1fv(location, value as number[]);\n } else {\n gl.uniform1f(location, value as number);\n }\n break;\n case 'int':\n if (arrayLength) {\n gl.uniform1iv(location, value as number[]);\n } else {\n gl.uniform1i(location, value as number);\n }\n break;\n default:\n throw new Error(`Uniform not implemented: ${type}`);\n }\n }\n }\n bindTexture(td: TextureData, uniformHandle: WebGLUniformLocation, position: number): void {\n this.glContext.bindTextureToUniform(td.texture, position, uniformHandle);\n }\n getAttribLocations(program: WebGLProgram): Artifact.AttribLocations {\n return {\n position: this.getAttribLocation(program, 'position'),\n textureCoord: this.getAttribLocation(program, 'textureCoord')\n };\n }\n getUniformLocations(program: WebGLProgram, samplers?: string[], variables?: VariableInfo[]):\n Artifact.UniformLocations {\n const uniformLocations: Artifact.UniformLocations = [];\n if (samplers) {\n for (const sampler of samplers) {\n uniformLocations.push({name: sampler, type: 'sampler2D', location: this.getUniformLocation(program, sampler)});\n }\n }\n if (variables) {\n for (const variable of variables) {\n uniformLocations.push({...variable, location: this.getUniformLocation(program, variable.name)});\n }\n }\n return uniformLocations;\n }\n getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation {\n const gl = this.glContext.gl;\n const reference = gl.getUniformLocation(program, name);\n if (reference === null) {\n throw new Error(`Uniform ${name} not found.`);\n }\n return reference;\n }\n getAttribLocation(program: WebGLProgram, name: string): number {\n const gl = this.glContext.gl;\n const attributeLocation: number = gl.getAttribLocation(program, name);\n return attributeLocation;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Logger, Profiler} from '../../instrument';\nimport {Tensor} from '../../tensor';\n\nimport {Encoder, EncoderUsage} from './texture-data-encoder';\nimport {TextureLayoutStrategy} from './texture-layout-strategy';\nimport {TextureData, TextureLayout} from './types';\nimport {WebGLContext} from './webgl-context';\n\nexport interface TextureManagerConfig {\n reuseTextures?: boolean;\n}\n\n/**\n * TextureManager is the mainly responsible for caching Textures\n * Textures are cached in 2 levels:\n * 1. the texures which are associated with a dataId (from Tensor)\n * Caching these is crucial to performance. These are In-use Textures\n * 2. textures which are not in use by any current ProgramInfo/Tensor\n * These are called Free Textures\n * TextureManager is also used to help creating textures. For this it\n * uses WebGLContext and TextureLayoutStrategy\n */\nexport class TextureManager {\n private readonly inUseTextures: Map;\n private readonly idleTextures: Map;\n private readonly textureLookup: Map;\n private readonly pendingRead: Map void>> = new Map();\n\n constructor(\n public glContext: WebGLContext, public layoutStrategy: TextureLayoutStrategy, public profiler: Readonly,\n private config: TextureManagerConfig) {\n if (config.reuseTextures) {\n this.inUseTextures = new Map();\n this.idleTextures = new Map();\n this.textureLookup = new Map();\n }\n }\n createTextureFromLayout(\n dataType: Tensor.DataType, layout: TextureLayout, data?: Tensor.NumberType, usage?: EncoderUsage) {\n const textureDataType = this.toEncoderType(dataType);\n\n const encoder = this.glContext.getEncoder(textureDataType, layout.channels || 1, usage);\n if (layout.isPacked && usage === EncoderUsage.UploadOnly) {\n throw new Error('not implemented');\n }\n const width = layout.width;\n const height = layout.height;\n\n let key: string|undefined;\n let inUseTextures: WebGLTexture[]|undefined;\n if (this.config.reuseTextures) {\n key = `${width}x${height}_${encoder.format}_${encoder.internalFormat}_${encoder.textureType}`;\n inUseTextures = this.inUseTextures.get(key);\n if (!inUseTextures) {\n inUseTextures = [];\n this.inUseTextures.set(key, inUseTextures);\n }\n\n const idleTextures = this.idleTextures.get(key);\n if (idleTextures && idleTextures.length > 0) {\n const texture = idleTextures.pop()!;\n inUseTextures.push(texture);\n if (usage === EncoderUsage.UploadOnly) {\n this.glContext.updateTexture(texture, width, height, encoder, this.toTextureData(dataType, data)!);\n }\n return texture;\n }\n }\n\n Logger.verbose('TextureManager', `Creating new texture of size ${layout.width}x${layout.height}`);\n const texture = this.glContext.allocateTexture(width, height, encoder, this.toTextureData(dataType, data));\n\n if (this.config.reuseTextures) {\n inUseTextures!.push(texture);\n this.textureLookup.set(texture, key!);\n }\n return texture;\n }\n readTexture(td: TextureData, dataType: Tensor.DataType, channels?: number): Tensor.NumberType {\n if (!channels) {\n channels = 1;\n }\n return this.profiler.event('backend', 'TextureManager.readTexture', () => {\n const dataSize = td.shape.reduce((a, b) => a * b) * channels!;\n const data = this.glContext.readTexture(\n td.texture, td.width, td.height, dataSize, this.toEncoderType(dataType), channels!);\n return this.toTensorData(dataType, data);\n });\n }\n async readTextureAsync(td: TextureData, dataType: Tensor.DataType, channels?: number): Promise {\n const dataId = td.tensor.dataId;\n if (!channels) {\n channels = 1;\n }\n if (this.pendingRead.has(dataId)) {\n const subscribers = this.pendingRead.get(dataId);\n return new Promise(resolve => subscribers?.push(resolve));\n }\n return this.profiler.event('backend', 'TextureManager.readTextureAsync', async () => {\n this.pendingRead.set(dataId, []);\n const dataSize = td.shape.reduce((a, b) => a * b) * channels!;\n // add a fence waiting for the data to be ready\n await this.glContext.createAndWaitForFence();\n const data = this.glContext.readTexture(\n td.texture, td.width, td.height, dataSize, this.toEncoderType(dataType), channels!);\n const tensorData = this.toTensorData(dataType, data);\n const subscribers = this.pendingRead.get(dataId);\n this.pendingRead.delete(dataId);\n subscribers?.forEach(resolve => resolve(tensorData));\n return tensorData;\n });\n }\n readUint8TextureAsFloat(td: TextureData): Float32Array {\n return this.profiler.event('backend', 'TextureManager.readUint8TextureAsFloat', () => {\n const dataSize = td.shape.reduce((a, b) => a * b);\n const data = this.glContext.readTexture(td.texture, td.width, td.height, dataSize * 4, 'byte', 4);\n return new Float32Array(data.buffer, data.byteOffset, dataSize);\n });\n }\n releaseTexture(textureData: TextureData, deleteTexture?: boolean): void {\n let key: string|undefined;\n if (this.config.reuseTextures) {\n key = this.textureLookup.get(textureData.texture);\n if (key) {\n if (deleteTexture) {\n this.textureLookup.delete(key);\n }\n const inUseTextures = this.inUseTextures.get(key);\n if (inUseTextures) {\n const index = inUseTextures.indexOf(textureData.texture);\n if (index !== -1) {\n inUseTextures.splice(index, 1);\n let idleTextures = this.idleTextures.get(key);\n if (!idleTextures) {\n idleTextures = [];\n this.idleTextures.set(key, idleTextures);\n }\n idleTextures.push(textureData.texture);\n }\n }\n }\n }\n\n if (!key || deleteTexture) {\n Logger.verbose('TextureManager', `Deleting texture of size ${textureData.width}x${textureData.height}`);\n this.glContext.deleteTexture(textureData.texture);\n }\n }\n toTensorData(dataType: Tensor.DataType, data: Encoder.DataArrayType): Tensor.NumberType {\n switch (dataType) {\n case 'int16':\n return data instanceof Int16Array ? data : Int16Array.from(data);\n case 'int32':\n return data instanceof Int32Array ? data : Int32Array.from(data);\n case 'int8':\n return data instanceof Int8Array ? data : Int8Array.from(data);\n case 'uint16':\n return data instanceof Uint16Array ? data : Uint16Array.from(data);\n case 'uint32':\n return data instanceof Uint32Array ? data : Uint32Array.from(data);\n case 'uint8':\n case 'bool':\n return data instanceof Uint8Array ? data : Uint8Array.from(data);\n case 'float32':\n return data instanceof Float32Array ? data : Float32Array.from(data);\n case 'float64':\n return data instanceof Float64Array ? data : Float64Array.from(data);\n default:\n throw new Error(`TensorData type ${dataType} is not supported`);\n }\n }\n toTextureData(_dataType: Tensor.DataType, data: Tensor.NumberType|undefined): Encoder.DataArrayType|undefined {\n if (!data) {\n return undefined;\n }\n return (data instanceof Float32Array) ? data : new Float32Array(data);\n /*\n switch (dataType) {\n case 'int16':\n case 'int32':\n case 'uint16':\n case 'uint32':\n return (data.constructor === Uint32Array) ? data as Uint32Array : new Uint32Array(data);\n case 'int8':\n case 'uint8':\n case 'bool':\n return (data.constructor === Uint8Array) ? data as Uint8Array : new Uint8Array(data);\n case 'float32':\n case 'float64':\n return (data.constructor === Float32Array) ? data as Float32Array : new Float32Array(data);\n default:\n throw new Error(`TensorData type ${dataType} is not supported`);\n }\n */\n }\n toEncoderType(_dataType: Tensor.DataType): Encoder.DataType {\n return 'float';\n // switch (dataType) {\n // case 'int16':\n // case 'int32':\n // case 'uint16':\n // case 'uint32':\n // return 'int';\n // case 'uint8':\n // case 'bool':\n // return 'byte';\n // case 'float32':\n // case 'float64':\n // return 'float';\n // default:\n // throw new Error(`TensorData type ${dataType} is not supported`);\n // }\n }\n clearActiveTextures(): void {\n this.glContext.clearActiveTextures();\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {SessionHandler} from '../../backend';\nimport {Graph} from '../../graph';\nimport {Logger} from '../../instrument';\nimport {Operator} from '../../operators';\nimport {OpSet, resolveOperator} from '../../opset';\nimport {Session} from '../../session';\nimport {Tensor} from '../../tensor';\nimport {WebGLBackend} from '../backend-webgl';\n\nimport {WebGLInferenceHandler} from './inference-handler';\nimport {WEBGL_OP_RESOLVE_RULES} from './op-resolve-rules';\nimport {ProgramManager} from './program-manager';\nimport {PreferLogicalStrategy, TextureLayoutStrategy} from './texture-layout-strategy';\nimport {TextureManager} from './texture-manager';\nimport {TextureData} from './types';\n\nexport class WebGLSessionHandler implements SessionHandler {\n programManager: ProgramManager;\n textureManager: TextureManager;\n layoutStrategy: TextureLayoutStrategy;\n packedTextureDataCache: Map;\n unpackedTextureDataCache: Map;\n pack2unpackMap: Map;\n unpack2packMap: Map;\n initializers: Set;\n pack?: boolean;\n\n constructor(public readonly backend: WebGLBackend, public readonly context: Session.Context) {\n this.layoutStrategy = new PreferLogicalStrategy(backend.glContext.maxTextureSize);\n this.programManager = new ProgramManager(this.context.profiler, backend.glContext, this.layoutStrategy);\n this.textureManager = new TextureManager(\n backend.glContext, this.layoutStrategy, this.context.profiler,\n {reuseTextures: backend.textureCacheMode === 'full'});\n this.packedTextureDataCache = new Map();\n this.unpackedTextureDataCache = new Map();\n this.pack = backend.pack;\n this.pack2unpackMap = new Map();\n this.unpack2packMap = new Map();\n }\n\n createInferenceHandler() {\n return new WebGLInferenceHandler(this);\n }\n onGraphInitialized(graph: Graph): void {\n const initializers = graph.getValues().filter(v => v.from === -1 && v.tensor).map(v => v.tensor!.dataId);\n this.initializers = new Set(initializers);\n }\n isInitializer(tensorId: Tensor.Id): boolean {\n return this.initializers ? this.initializers.has(tensorId) : false;\n }\n addInitializer(tensorId: Tensor.Id): void {\n this.initializers.add(tensorId);\n }\n getTextureData(tensorId: Tensor.Id, isPacked: boolean): TextureData|undefined {\n if (isPacked) {\n return this.packedTextureDataCache.get(tensorId);\n } else {\n return this.unpackedTextureDataCache.get(tensorId);\n }\n }\n setTextureData(tensorId: Tensor.Id, textureData: TextureData, isPacked = false): void {\n Logger.verbose('WebGLSessionHandler', 'Storing Texture data in cache');\n if (isPacked) {\n this.packedTextureDataCache.set(tensorId, textureData);\n } else {\n this.unpackedTextureDataCache.set(tensorId, textureData);\n }\n }\n dispose(): void {\n this.programManager.dispose();\n this.textureManager.clearActiveTextures();\n this.packedTextureDataCache.forEach(td => this.textureManager.releaseTexture(td, true));\n this.packedTextureDataCache = new Map();\n this.unpackedTextureDataCache.forEach(td => this.textureManager.releaseTexture(td, true));\n this.unpackedTextureDataCache = new Map();\n }\n resolve(node: Graph.Node, opsets: readonly OpSet[], graph: Graph): Operator {\n const op = resolveOperator(node, opsets, WEBGL_OP_RESOLVE_RULES);\n return {impl: op.opImpl, context: op.opInit ? op.opInit(node, graph) : node};\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {env} from 'onnxruntime-common';\n\nimport * as DataEncoders from './texture-data-encoder';\nimport {DataEncoder, Encoder, EncoderUsage} from './texture-data-encoder';\nimport {repeatedTry} from './utils';\n\nexport interface FenceContext {\n query: WebGLSync|null;\n isFencePassed(): boolean;\n}\n\ntype PollItem = {\n isDoneFn: () => boolean; resolveFn: () => void;\n};\n\nexport function linearSearchLastTrue(arr: Array<() => boolean>): number {\n let i = 0;\n for (; i < arr.length; ++i) {\n const isDone = arr[i]();\n if (!isDone) {\n break;\n }\n }\n return i - 1;\n}\n\n/**\n * Abstraction and wrapper around WebGLRenderingContext and its operations\n */\nexport class WebGLContext {\n gl: WebGLRenderingContext;\n version: 1|2;\n\n private vertexbuffer: WebGLBuffer;\n private framebuffer: WebGLFramebuffer;\n\n // WebGL flags and vital parameters\n private isFloatTextureAttachableToFrameBuffer: boolean;\n isFloat32DownloadSupported: boolean;\n isRenderFloat32Supported: boolean;\n isBlendSupported: boolean;\n maxTextureSize: number;\n // private maxCombinedTextureImageUnits: number;\n private maxTextureImageUnits: number;\n // private maxCubeMapTextureSize: number;\n // private shadingLanguageVersion: string;\n // private webglVendor: string;\n // private webglVersion: string;\n\n // WebGL2 flags and vital parameters\n // private max3DTextureSize: number;\n // private maxArrayTextureLayers: number;\n // private maxColorAttachments: number;\n // private maxDrawBuffers: number;\n\n // WebGL extensions\n // eslint-disable-next-line camelcase\n textureFloatExtension: OES_texture_float|null;\n // eslint-disable-next-line camelcase\n textureHalfFloatExtension: OES_texture_half_float|null;\n\n // WebGL2 extensions\n colorBufferFloatExtension: unknown|null;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n disjointTimerQueryWebgl2Extension: {TIME_ELAPSED_EXT: GLenum; GPU_DISJOINT_EXT: GLenum}|null;\n\n private disposed: boolean;\n private frameBufferBound = false;\n\n constructor(gl: WebGLRenderingContext, version: 1|2) {\n this.gl = gl;\n this.version = version;\n\n this.getExtensions();\n this.vertexbuffer = this.createVertexbuffer();\n this.framebuffer = this.createFramebuffer();\n this.queryVitalParameters();\n }\n\n allocateTexture(width: number, height: number, encoder: DataEncoder, data?: Encoder.DataArrayType): WebGLTexture {\n const gl = this.gl;\n // create the texture\n const texture = gl.createTexture();\n // bind the texture so the following methods effect this texture.\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n const buffer = data ? encoder.encode(data, width * height) : null;\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0, // Level of detail.\n encoder.internalFormat, width, height,\n 0, // Always 0 in OpenGL ES.\n encoder.format, encoder.textureType, buffer);\n this.checkError();\n return texture as WebGLTexture;\n }\n updateTexture(\n texture: WebGLTexture, width: number, height: number, encoder: DataEncoder, data: Encoder.DataArrayType): void {\n const gl = this.gl;\n gl.bindTexture(gl.TEXTURE_2D, texture);\n const buffer = encoder.encode(data, width * height);\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0, // level\n 0, // xoffset\n 0, // yoffset\n width, height, encoder.format, encoder.textureType, buffer);\n this.checkError();\n }\n attachFramebuffer(texture: WebGLTexture, width: number, height: number): void {\n const gl = this.gl;\n // Make it the target for framebuffer operations - including rendering.\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture,\n 0); // 0, we aren't using MIPMAPs\n this.checkError();\n gl.viewport(0, 0, width, height);\n gl.scissor(0, 0, width, height);\n }\n readTexture(\n texture: WebGLTexture, width: number, height: number, dataSize: number, dataType: Encoder.DataType,\n channels: number): Encoder.DataArrayType {\n const gl = this.gl;\n if (!channels) {\n channels = 1;\n }\n if (!this.frameBufferBound) {\n this.attachFramebuffer(texture, width, height);\n }\n const encoder = this.getEncoder(dataType, channels);\n const buffer = encoder.allocate(width * height);\n // bind texture to framebuffer\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture,\n 0); // 0, we aren't using MIPMAPs\n // TODO: Check if framebuffer is ready\n gl.readPixels(0, 0, width, height, gl.RGBA, encoder.textureType, buffer);\n this.checkError();\n // unbind FB\n return encoder.decode(buffer, dataSize);\n }\n\n isFramebufferReady(): boolean {\n // TODO: Implement logic to check if the framebuffer is ready\n return true;\n }\n getActiveTexture(): string {\n const gl = this.gl;\n const n = gl.getParameter(this.gl.ACTIVE_TEXTURE);\n return `TEXTURE${(n - gl.TEXTURE0)}`;\n }\n getTextureBinding(): WebGLTexture {\n return this.gl.getParameter(this.gl.TEXTURE_BINDING_2D);\n }\n getFramebufferBinding(): WebGLFramebuffer {\n return this.gl.getParameter(this.gl.FRAMEBUFFER_BINDING);\n }\n setVertexAttributes(positionHandle: number, textureCoordHandle: number): void {\n const gl = this.gl;\n gl.vertexAttribPointer(positionHandle, 3, gl.FLOAT, false, 20, 0);\n gl.enableVertexAttribArray(positionHandle);\n if (textureCoordHandle !== -1) {\n gl.vertexAttribPointer(textureCoordHandle, 2, gl.FLOAT, false, 20, 12);\n gl.enableVertexAttribArray(textureCoordHandle);\n }\n this.checkError();\n }\n createProgram(\n vertexShader: WebGLShader,\n fragShader: WebGLShader,\n ): WebGLProgram {\n const gl = this.gl;\n const program = gl.createProgram()!;\n\n // the program consists of our shaders\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragShader);\n gl.linkProgram(program);\n return program;\n }\n compileShader(shaderSource: string, shaderType: number): WebGLShader {\n const gl = this.gl;\n const shader = gl.createShader(shaderType);\n if (!shader) {\n throw new Error(`createShader() returned null with type ${shaderType}`);\n }\n\n gl.shaderSource(shader, shaderSource);\n gl.compileShader(shader);\n if (gl.getShaderParameter(shader, gl.COMPILE_STATUS) === false) {\n throw new Error(`Failed to compile shader: ${gl.getShaderInfoLog(shader)}\nShader source:\n${shaderSource}`);\n }\n return shader;\n }\n deleteShader(shader: WebGLShader): void {\n this.gl.deleteShader(shader);\n }\n bindTextureToUniform(texture: WebGLTexture, position: number, uniformHandle: WebGLUniformLocation): void {\n const gl = this.gl;\n gl.activeTexture(gl.TEXTURE0 + position);\n this.checkError();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n this.checkError();\n gl.uniform1i(uniformHandle, position);\n this.checkError();\n }\n draw(): void {\n this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4);\n this.checkError();\n }\n checkError(): void {\n if (env.debug) {\n const gl = this.gl;\n const error = gl.getError();\n let label = '';\n switch (error) {\n case (gl.NO_ERROR):\n return;\n case (gl.INVALID_ENUM):\n label = 'INVALID_ENUM';\n break;\n case (gl.INVALID_VALUE):\n label = 'INVALID_VALUE';\n break;\n case (gl.INVALID_OPERATION):\n label = 'INVALID_OPERATION';\n break;\n case (gl.INVALID_FRAMEBUFFER_OPERATION):\n label = 'INVALID_FRAMEBUFFER_OPERATION';\n break;\n case (gl.OUT_OF_MEMORY):\n label = 'OUT_OF_MEMORY';\n break;\n case (gl.CONTEXT_LOST_WEBGL):\n label = 'CONTEXT_LOST_WEBGL';\n break;\n default:\n label = `Unknown WebGL Error: ${error.toString(16)}`;\n }\n throw new Error(label);\n }\n }\n deleteTexture(texture: WebGLTexture): void {\n this.gl.deleteTexture(texture);\n }\n deleteProgram(program: WebGLProgram): void {\n this.gl.deleteProgram(program);\n }\n getEncoder(dataType: Encoder.DataType, channels: number, usage: EncoderUsage = EncoderUsage.Default): DataEncoder {\n if (this.version === 2) {\n return new DataEncoders.RedFloat32DataEncoder(this.gl as WebGL2RenderingContext, channels);\n }\n\n switch (dataType) {\n case 'float':\n if (usage === EncoderUsage.UploadOnly || this.isRenderFloat32Supported) {\n return new DataEncoders.RGBAFloatDataEncoder(this.gl, channels);\n } else {\n return new DataEncoders.RGBAFloatDataEncoder(\n this.gl, channels, this.textureHalfFloatExtension!.HALF_FLOAT_OES);\n }\n case 'int':\n throw new Error('not implemented');\n case 'byte':\n return new DataEncoders.Uint8DataEncoder(this.gl, channels);\n default:\n throw new Error(`Invalid dataType: ${dataType}`);\n }\n }\n clearActiveTextures(): void {\n const gl = this.gl;\n for (let unit = 0; unit < this.maxTextureImageUnits; ++unit) {\n gl.activeTexture(gl.TEXTURE0 + unit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n }\n }\n dispose(): void {\n if (this.disposed) {\n return;\n }\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.deleteFramebuffer(this.framebuffer);\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n gl.deleteBuffer(this.vertexbuffer);\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n gl.finish();\n this.disposed = true;\n }\n\n private createDefaultGeometry(): Float32Array {\n // Sets of x,y,z(=0),s,t coordinates.\n return new Float32Array([\n -1.0, 1.0, 0.0, 0.0, 1.0, // upper left\n -1.0, -1.0, 0.0, 0.0, 0.0, // lower left\n 1.0, 1.0, 0.0, 1.0, 1.0, // upper right\n 1.0, -1.0, 0.0, 1.0, 0.0 // lower right\n ]);\n }\n private createVertexbuffer(): WebGLBuffer {\n const gl = this.gl;\n const buffer = gl.createBuffer();\n if (!buffer) {\n throw new Error('createBuffer() returned null');\n }\n const geometry = this.createDefaultGeometry();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, geometry, gl.STATIC_DRAW);\n this.checkError();\n return buffer;\n }\n private createFramebuffer(): WebGLFramebuffer {\n const fb = this.gl.createFramebuffer();\n if (!fb) {\n throw new Error('createFramebuffer returned null');\n }\n return fb;\n }\n\n private queryVitalParameters(): void {\n const gl = this.gl;\n\n this.isFloatTextureAttachableToFrameBuffer = this.checkFloatTextureAttachableToFrameBuffer();\n this.isRenderFloat32Supported = this.checkRenderFloat32();\n this.isFloat32DownloadSupported = this.checkFloat32Download();\n\n if (this.version === 1 && !this.textureHalfFloatExtension && !this.isRenderFloat32Supported) {\n throw new Error('both float32 and float16 TextureType are not supported');\n }\n\n this.isBlendSupported = !this.isRenderFloat32Supported || this.checkFloat32Blend();\n\n // this.maxCombinedTextureImageUnits = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n this.maxTextureImageUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n // this.maxCubeMapTextureSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n // this.shadingLanguageVersion = gl.getParameter(gl.SHADING_LANGUAGE_VERSION);\n // this.webglVendor = gl.getParameter(gl.VENDOR);\n // this.webglVersion = gl.getParameter(gl.VERSION);\n\n if (this.version === 2) {\n // this.max3DTextureSize = gl.getParameter(WebGL2RenderingContext.MAX_3D_TEXTURE_SIZE);\n // this.maxArrayTextureLayers = gl.getParameter(WebGL2RenderingContext.MAX_ARRAY_TEXTURE_LAYERS);\n // this.maxColorAttachments = gl.getParameter(WebGL2RenderingContext.MAX_COLOR_ATTACHMENTS);\n // this.maxDrawBuffers = gl.getParameter(WebGL2RenderingContext.MAX_DRAW_BUFFERS);\n }\n }\n private getExtensions(): void {\n if (this.version === 2) {\n this.colorBufferFloatExtension = this.gl.getExtension('EXT_color_buffer_float');\n this.disjointTimerQueryWebgl2Extension = this.gl.getExtension('EXT_disjoint_timer_query_webgl2');\n } else {\n this.textureFloatExtension = this.gl.getExtension('OES_texture_float');\n this.textureHalfFloatExtension = this.gl.getExtension('OES_texture_half_float');\n }\n }\n\n private checkFloatTextureAttachableToFrameBuffer(): boolean {\n // test whether Float32 texture is supported:\n // STEP.1 create a float texture\n const gl = this.gl;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const internalFormat = this.version === 2 ? (gl as unknown as {RGBA32F: number}).RGBA32F : gl.RGBA;\n gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, 1, 1, 0, gl.RGBA, gl.FLOAT, null);\n // STEP.2 bind a frame buffer\n const frameBuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n // STEP.3 attach texture to framebuffer\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n // STEP.4 test whether framebuffer is complete\n const isComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE;\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.deleteTexture(texture);\n gl.deleteFramebuffer(frameBuffer);\n return isComplete;\n }\n\n private checkRenderFloat32(): boolean {\n if (this.version === 2) {\n if (!this.colorBufferFloatExtension) {\n return false;\n }\n } else {\n if (!this.textureFloatExtension) {\n return false;\n }\n }\n return this.isFloatTextureAttachableToFrameBuffer;\n }\n\n private checkFloat32Download(): boolean {\n if (this.version === 2) {\n if (!this.colorBufferFloatExtension) {\n return false;\n }\n } else {\n if (!this.textureFloatExtension) {\n return false;\n }\n if (!this.gl.getExtension('WEBGL_color_buffer_float')) {\n return false;\n }\n }\n return this.isFloatTextureAttachableToFrameBuffer;\n }\n\n /**\n * Check whether GL_BLEND is supported\n */\n private checkFloat32Blend(): boolean {\n // it looks like currently (2019-05-08) there is no easy way to detect whether BLEND is supported\n // https://github.com/microsoft/onnxjs/issues/145\n\n const gl = this.gl;\n\n let texture: WebGLTexture|null|undefined;\n let frameBuffer: WebGLFramebuffer|null|undefined;\n let vertexShader: WebGLShader|null|undefined;\n let fragmentShader: WebGLShader|null|undefined;\n let program: WebGLProgram|null|undefined;\n\n try {\n texture = gl.createTexture();\n frameBuffer = gl.createFramebuffer();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const internalFormat = this.version === 2 ? (gl as unknown as {RGBA32F: number}).RGBA32F : gl.RGBA;\n gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, 1, 1, 0, gl.RGBA, gl.FLOAT, null);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.enable(gl.BLEND);\n\n vertexShader = gl.createShader(gl.VERTEX_SHADER);\n if (!vertexShader) {\n return false;\n }\n gl.shaderSource(vertexShader, 'void main(){}');\n gl.compileShader(vertexShader);\n\n fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n if (!fragmentShader) {\n return false;\n }\n gl.shaderSource(fragmentShader, 'precision highp float;void main(){gl_FragColor=vec4(0.5);}');\n gl.compileShader(fragmentShader);\n\n program = gl.createProgram();\n if (!program) {\n return false;\n }\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n gl.useProgram(program);\n\n gl.drawArrays(gl.POINTS, 0, 1);\n return gl.getError() === gl.NO_ERROR;\n\n } finally {\n gl.disable(gl.BLEND);\n\n if (program) {\n gl.deleteProgram(program);\n }\n if (vertexShader) {\n gl.deleteShader(vertexShader);\n }\n if (fragmentShader) {\n gl.deleteShader(fragmentShader);\n }\n if (frameBuffer) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.deleteFramebuffer(frameBuffer);\n }\n if (texture) {\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.deleteTexture(texture);\n }\n }\n }\n\n beginTimer(): WebGLQuery {\n if (this.version === 2 && this.disjointTimerQueryWebgl2Extension) {\n const gl2 = this.gl as WebGL2RenderingContext;\n const ext = this.disjointTimerQueryWebgl2Extension;\n\n const query = gl2.createQuery() as WebGLQuery;\n gl2.beginQuery(ext.TIME_ELAPSED_EXT, query);\n return query;\n } else {\n // TODO: add webgl 1 handling.\n throw new Error('WebGL1 profiling currently not supported.');\n }\n }\n\n endTimer() {\n if (this.version === 2 && this.disjointTimerQueryWebgl2Extension) {\n const gl2 = this.gl as WebGL2RenderingContext;\n const ext = this.disjointTimerQueryWebgl2Extension;\n gl2.endQuery(ext.TIME_ELAPSED_EXT);\n return;\n } else {\n // TODO: add webgl 1 handling.\n throw new Error('WebGL1 profiling currently not supported');\n }\n }\n\n isTimerResultAvailable(query: WebGLQuery): boolean {\n let available = false, disjoint = false;\n if (this.version === 2 && this.disjointTimerQueryWebgl2Extension) {\n const gl2 = this.gl as WebGL2RenderingContext;\n const ext = this.disjointTimerQueryWebgl2Extension;\n\n available = gl2.getQueryParameter(query, gl2.QUERY_RESULT_AVAILABLE);\n disjoint = gl2.getParameter(ext.GPU_DISJOINT_EXT);\n } else {\n // TODO: add webgl 1 handling.\n throw new Error('WebGL1 profiling currently not supported');\n }\n\n return available && !disjoint;\n }\n\n getTimerResult(query: WebGLQuery): number {\n let timeElapsed = 0;\n if (this.version === 2) {\n const gl2 = this.gl as WebGL2RenderingContext;\n timeElapsed = gl2.getQueryParameter(query, gl2.QUERY_RESULT);\n gl2.deleteQuery(query);\n } else {\n // TODO: add webgl 1 handling.\n throw new Error('WebGL1 profiling currently not supported');\n }\n // return miliseconds\n return timeElapsed / 1000000;\n }\n\n async waitForQueryAndGetTime(query: WebGLQuery): Promise {\n await repeatedTry(() => this.isTimerResultAvailable(query));\n return this.getTimerResult(query);\n }\n\n public async createAndWaitForFence(): Promise {\n const fenceContext = this.createFence(this.gl);\n return this.pollFence(fenceContext);\n }\n\n private createFence(gl: WebGLRenderingContext): FenceContext {\n let isFencePassed: () => boolean;\n const gl2 = gl as WebGL2RenderingContext;\n const query = gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE, 0);\n gl.flush();\n if (query === null) {\n isFencePassed = () => true;\n } else {\n isFencePassed = () => {\n const status = gl2.clientWaitSync(query, 0, 0);\n return status === gl2.ALREADY_SIGNALED || status === gl2.CONDITION_SATISFIED;\n };\n }\n return {query, isFencePassed};\n }\n\n async pollFence(fenceContext: FenceContext) {\n return new Promise(resolve => {\n void this.addItemToPoll(() => fenceContext.isFencePassed(), () => resolve());\n });\n }\n\n private itemsToPoll: PollItem[] = [];\n\n pollItems(): void {\n // Find the last query that has finished.\n const index = linearSearchLastTrue(this.itemsToPoll.map(x => x.isDoneFn));\n for (let i = 0; i <= index; ++i) {\n const {resolveFn} = this.itemsToPoll[i];\n resolveFn();\n }\n this.itemsToPoll = this.itemsToPoll.slice(index + 1);\n }\n\n private async addItemToPoll(isDoneFn: () => boolean, resolveFn: () => void) {\n this.itemsToPoll.push({isDoneFn, resolveFn});\n if (this.itemsToPoll.length > 1) {\n // We already have a running loop that polls.\n return;\n }\n // Start a new loop that polls.\n await repeatedTry(() => {\n this.pollItems();\n // End the loop if no more items to poll.\n return this.itemsToPoll.length === 0;\n });\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Logger} from '../../instrument';\n\nimport {WebGLContext} from './webgl-context';\n\nconst cache: {[contextId: string]: WebGLContext} = {};\n\n/**\n * This factory function creates proper WebGLRenderingContext based on\n * the current browsers capabilities\n * The order is from higher/most recent versions to most basic\n */\nexport function createWebGLContext(contextId?: 'webgl'|'webgl2'): WebGLContext {\n let context: WebGLContext|undefined;\n if ((!contextId || contextId === 'webgl2') && 'webgl2' in cache) {\n context = cache.webgl2;\n } else if ((!contextId || contextId === 'webgl') && 'webgl' in cache) {\n context = cache.webgl;\n }\n\n if (!context) {\n try {\n // try to create webgl context from an offscreen canvas\n const offscreenCanvas = createOffscreenCanvas();\n context = createNewWebGLContext(offscreenCanvas, contextId);\n } catch (e) {\n // if failed, fallback to try to use a normal canvas element\n const canvas = createCanvas();\n context = createNewWebGLContext(canvas, contextId);\n }\n }\n\n contextId = contextId || context.version === 1 ? 'webgl' : 'webgl2';\n const gl = context.gl;\n\n cache[contextId] = context;\n\n if (gl.isContextLost()) {\n delete cache[contextId];\n return createWebGLContext(contextId);\n }\n\n gl.disable(gl.DEPTH_TEST);\n gl.disable(gl.STENCIL_TEST);\n gl.disable(gl.BLEND);\n gl.disable(gl.DITHER);\n gl.disable(gl.POLYGON_OFFSET_FILL);\n gl.disable(gl.SAMPLE_COVERAGE);\n gl.enable(gl.SCISSOR_TEST);\n gl.enable(gl.CULL_FACE);\n gl.cullFace(gl.BACK);\n\n return context;\n}\n\nexport function createNewWebGLContext(canvas: HTMLCanvasElement, contextId?: 'webgl'|'webgl2'): WebGLContext {\n const contextAttributes: WebGLContextAttributes = {\n alpha: false,\n depth: false,\n antialias: false,\n stencil: false,\n preserveDrawingBuffer: false,\n premultipliedAlpha: false,\n failIfMajorPerformanceCaveat: false\n };\n let gl: WebGLRenderingContext|null;\n const ca = contextAttributes;\n if (!contextId || contextId === 'webgl2') {\n gl = canvas.getContext('webgl2', ca);\n if (gl) {\n try {\n return new WebGLContext(gl, 2);\n } catch (err) {\n Logger.warning('GlContextFactory', `failed to create WebGLContext using contextId 'webgl2'. Error: ${err}`);\n }\n }\n }\n if (!contextId || contextId === 'webgl') {\n gl = canvas.getContext('webgl', ca) || canvas.getContext('experimental-webgl', ca) as WebGLRenderingContext;\n if (gl) {\n try {\n return new WebGLContext(gl, 1);\n } catch (err) {\n Logger.warning(\n 'GlContextFactory',\n `failed to create WebGLContext using contextId 'webgl' or 'experimental-webgl'. Error: ${err}`);\n }\n }\n }\n\n throw new Error('WebGL is not supported');\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare let OffscreenCanvas: {new (width: number, height: number): HTMLCanvasElement};\n\nfunction createCanvas(): HTMLCanvasElement {\n if (typeof document === 'undefined') {\n throw new TypeError('failed to create canvas: document is not supported');\n }\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n return canvas;\n}\n\nfunction createOffscreenCanvas(): HTMLCanvasElement {\n if (typeof OffscreenCanvas === 'undefined') {\n throw new TypeError('failed to create offscreen canvas: OffscreenCanvas is not supported');\n }\n return new OffscreenCanvas(1, 1);\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {env} from 'onnxruntime-common';\n\nimport {Backend, SessionHandler} from '../backend';\nimport {Logger} from '../instrument';\nimport {Session} from '../session';\n\nimport {WebGLSessionHandler} from './webgl/session-handler';\nimport {WebGLContext} from './webgl/webgl-context';\nimport {createWebGLContext} from './webgl/webgl-context-factory';\n\n/**\n * WebGLBackend is the entry point for all WebGL opeartions\n * When it starts it created the WebGLRenderingContext\n * and other main framework components such as Program and Texture Managers\n */\nexport class WebGLBackend implements Backend {\n glContext: WebGLContext;\n\n get contextId(): 'webgl'|'webgl2'|undefined {\n return env.webgl.contextId;\n }\n set contextId(value: 'webgl'|'webgl2'|undefined) {\n env.webgl.contextId = value;\n }\n\n get matmulMaxBatchSize(): number|undefined {\n return env.webgl.matmulMaxBatchSize;\n }\n set matmulMaxBatchSize(value: number|undefined) {\n env.webgl.matmulMaxBatchSize = value;\n }\n\n get textureCacheMode(): 'initializerOnly'|'full'|undefined {\n return env.webgl.textureCacheMode;\n }\n set textureCacheMode(value: 'initializerOnly'|'full'|undefined) {\n env.webgl.textureCacheMode = value;\n }\n\n get pack(): boolean|undefined {\n return env.webgl.pack;\n }\n set pack(value: boolean|undefined) {\n env.webgl.pack = value;\n }\n\n get async(): boolean|undefined {\n return env.webgl.async;\n }\n set async(value: boolean|undefined) {\n env.webgl.async = value;\n }\n\n initialize(): boolean {\n try {\n this.glContext = createWebGLContext(this.contextId);\n if (typeof this.matmulMaxBatchSize !== 'number') {\n this.matmulMaxBatchSize = 16;\n }\n if (typeof this.textureCacheMode !== 'string') {\n this.textureCacheMode = 'full';\n }\n if (typeof this.pack !== 'boolean') {\n this.pack = false;\n }\n if (typeof this.async !== 'boolean') {\n this.async = false;\n }\n\n Logger.setWithEnv(env);\n\n if (!env.webgl.context) {\n Object.defineProperty(env.webgl, 'context', {value: this.glContext.gl});\n }\n\n Logger.verbose(\n 'WebGLBackend',\n `Created WebGLContext: ${typeof this.glContext} with matmulMaxBatchSize: ${\n this.matmulMaxBatchSize}; textureCacheMode: ${this.textureCacheMode}; pack: ${this.pack}; async: ${\n this.async}.`);\n return true;\n } catch (e) {\n Logger.warning('WebGLBackend', `Unable to initialize WebGLBackend. ${e}`);\n return false;\n }\n }\n createSessionHandler(context: Session.Context): SessionHandler {\n return new WebGLSessionHandler(this, context);\n }\n dispose(): void {\n this.glContext.dispose();\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {WebGLBackend} from './backends/backend-webgl';\nimport {Graph} from './graph';\nimport {Operator} from './operators';\nimport {OpSet} from './opset';\nimport {Session} from './session';\n\nexport interface InferenceHandler {\n /**\n * dispose the inference handler. it will be called as the last step in Session.run()\n */\n dispose(): void;\n}\n\nexport interface SessionHandler {\n /**\n * transform the graph at initialization time\n * @param graphTransformer the graph transformer to manipulate the model graph\n */\n transformGraph?(graphTransformer: Graph.Transformer): void;\n\n /**\n * create an instance of InferenceHandler to use in a Session.run() call\n */\n createInferenceHandler(): InferenceHandler;\n\n /**\n * dispose the session handler. it will be called when a session is being disposed explicitly\n */\n dispose(): void;\n\n /**\n * Resolves the operator from the name and opset version; backend specific\n * @param node the node to resolve\n * @param opsets a list of opsets that exported from the model\n * @param graph the completely initialized graph\n */\n resolve(node: Graph.Node, opsets: readonly OpSet[], graph: Graph): Operator;\n\n /**\n * This method let's the sessionHandler know that the graph initialization is complete\n * @param graph the completely initialized graph\n */\n onGraphInitialized?(graph: Graph): void;\n\n /**\n * a reference to the corresponding backend\n */\n readonly backend: Backend;\n\n /**\n * a reference to the session context\n */\n readonly context: Session.Context;\n}\n\nexport interface Backend {\n /**\n * initialize the backend. will be called only once, when the first time the\n * backend it to be used\n */\n initialize(): boolean|Promise;\n\n /**\n * create an instance of SessionHandler to use in a Session object's lifecycle\n */\n createSessionHandler(context: Session.Context): SessionHandler;\n\n /**\n * dispose the backend. currently this will not be called\n */\n dispose(): void;\n}\n\n// caches all initialized backend instances\nconst backendsCache: Map = new Map();\n\nexport const backend: {[name: string]: Backend} = {\n webgl: new WebGLBackend()\n};\n\n/**\n * Resolve a reference to the backend. If a hint is specified, the corresponding\n * backend will be used.\n */\nexport async function resolveBackend(hint?: string|readonly string[]): Promise {\n if (!hint) {\n return resolveBackend(['webgl']);\n } else {\n const hints = typeof hint === 'string' ? [hint] : hint;\n\n for (const backendHint of hints) {\n const cache = backendsCache.get(backendHint);\n if (cache) {\n return cache;\n }\n\n const backend = await tryLoadBackend(backendHint);\n if (backend) {\n return backend;\n }\n }\n }\n\n throw new Error('no available backend to use');\n}\n\nasync function tryLoadBackend(backendHint: string): Promise {\n const backendObj = backend;\n\n if (typeof backendObj[backendHint] !== 'undefined' && isBackend(backendObj[backendHint])) {\n const backend = backendObj[backendHint];\n let init = backend.initialize();\n if (typeof init === 'object' && 'then' in init) {\n init = await init;\n }\n if (init) {\n backendsCache.set(backendHint, backend);\n return backend;\n }\n }\n\n return undefined;\n}\n\nfunction isBackend(obj: unknown) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const o = obj as any;\n\n // check if an object is a Backend instance\n if (\n 'initialize' in o && typeof o.initialize === 'function' && // initialize()\n 'createSessionHandler' in o && typeof o.createSessionHandler === 'function' && // createSessionHandler()\n 'dispose' in o && typeof o.dispose === 'function' // dispose()\n ) {\n return true;\n }\n\n return false;\n}\n\nexport type BackendType = Backend;\nexport type SessionHandlerType = ReturnType;\nexport type InferenceHandlerType = ReturnType;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {SessionHandler} from './backend';\nimport {Graph} from './graph';\nimport {Logger, Profiler} from './instrument';\nimport {Operator} from './operators';\nimport {Tensor} from './tensor';\n\nclass KernelOp {\n constructor(public op: Operator, public node: Graph.Node) {}\n}\n\nexport class ExecutionPlan {\n constructor(private graph: Graph, ops: Operator[], private profiler: Readonly) {\n this.initialize(ops);\n }\n\n initialize(ops: Operator[]) {\n this.profiler.event('session', 'ExecutionPlan.initialize', () => {\n const graphNodes = this.graph.getNodes();\n if (graphNodes.length !== ops.length) {\n throw new Error('The size of nodes and OPs do not match.');\n }\n\n this._ops = ops.map((op, i) => new KernelOp(op, graphNodes[i]));\n this.reset();\n\n // look for starter node(s)\n this._starter = [];\n this._ops.forEach((op, i) => {\n let resolved = true;\n for (const input of op.node.inputs) {\n if (\n !this._values[input] // not an initialized input\n && this.graph.getInputIndices().indexOf(input) === -1 // not model input\n ) {\n resolved = false;\n break;\n }\n }\n if (resolved) {\n this._starter.push(i);\n }\n });\n });\n }\n\n reset() {\n this._values = this.graph.getValues().map(i => i.tensor);\n }\n\n async execute(sessionHandler: SessionHandler, modelInputs: Tensor[]): Promise {\n return this.profiler.event('session', 'ExecutionPlan.execute', async () => {\n // reset mediem result\n this.reset();\n\n // create inference handler\n const inferenceHandler = sessionHandler.createInferenceHandler();\n\n // populate inputs value\n const graphInputs = this.graph.getInputIndices();\n if (modelInputs.length !== graphInputs.length) {\n throw new Error(`number of input tensors don't match the number of inputs to the model: actual: ${\n modelInputs.length} expected: ${graphInputs.length}`);\n }\n\n modelInputs.forEach((input, i) => {\n const index = graphInputs[i];\n this._values[index] = input;\n });\n\n // prepare running sequence\n const sequence: number[] = this._starter.slice(0);\n\n // execution iterations\n const graphValues = this.graph.getValues();\n const graphNodes = this.graph.getNodes();\n\n let rear = 0;\n while (rear < sequence.length) {\n const thisOpIndex = sequence[rear++];\n const thisOp = this._ops[thisOpIndex];\n\n // check input\n const inputList = thisOp.node.inputs.map(i => this._values[i]);\n if (inputList.indexOf(undefined) !== -1) {\n throw new Error(`unresolved input detected: op: ${thisOp.node}`);\n }\n\n // run\n const inputTensors = inputList as Tensor[];\n Logger.verbose(\n 'ExecPlan',\n `Runing op:${thisOp.node.name} (${\n inputTensors.map((t, i) => `'${thisOp.node.inputs[i]}': ${t.type}[${t.dims.join(',')}]`).join(', ')})`);\n\n const outputList = await this.profiler.event(\n 'node', thisOp.node.name, async () => thisOp.op.impl(inferenceHandler, inputTensors, thisOp.op.context));\n\n // check output\n if (outputList.length !== thisOp.node.outputs.length) {\n throw new Error('the size of output does not match model definition.');\n }\n\n // fill value\n outputList.forEach((output, i) => {\n const j = thisOp.node.outputs[i];\n if (this._values[j]) {\n throw new Error(`output [${j}] already has value: op:${thisOp.node.name}`);\n }\n this._values[j] = output;\n });\n\n // resolve downstream nodes\n const downstreamNodes = new Set();\n outputList.forEach((_output, i) => {\n const j = thisOp.node.outputs[i];\n for (const currentDownstreamNodeIndex of graphValues[j].to) {\n const currentDownstreamNode = graphNodes[currentDownstreamNodeIndex];\n let resolved = true;\n for (const k of currentDownstreamNode.inputs) {\n if (!this._values[k]) {\n resolved = false;\n break;\n }\n }\n if (resolved) {\n downstreamNodes.add(currentDownstreamNodeIndex);\n }\n }\n });\n sequence.push(...downstreamNodes);\n }\n\n const output: Tensor[] = [];\n for (let i = 0; i < this.graph.getOutputIndices().length; i++) {\n const outputIndex = this.graph.getOutputIndices()[i];\n const outputTensor = this._values[outputIndex];\n if (outputTensor === undefined) {\n throw new Error(`required output [${outputIndex}] does not have value`);\n }\n if (outputIndex === 0) {\n await outputTensor.getData();\n } else {\n // eslint-disable-next-line no-unused-expressions\n outputTensor.data;\n }\n output.push(outputTensor);\n }\n Logger.verbose('ExecPlan', 'disposing of inferenceHandler');\n inferenceHandler.dispose();\n return output;\n });\n }\n\n _values: Array;\n _ops: KernelOp[];\n _starter: number[];\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport Long from 'long';\n\nimport {onnxruntime} from './ort-schema/flatbuffers/ort-generated';\nimport {onnx} from './ort-schema/protobuf/onnx';\nimport {Tensor} from './tensor';\nimport {decodeUtf8String, LongUtil} from './util';\n\nimport ortFbs = onnxruntime.experimental.fbs;\n\nexport declare namespace Attribute {\n export interface DataTypeMap {\n float: number;\n int: number;\n string: string;\n tensor: Tensor;\n floats: number[];\n ints: number[];\n strings: string[];\n tensors: Tensor[];\n }\n\n export type DataType = keyof DataTypeMap;\n}\n\ntype ValueTypes = Attribute.DataTypeMap[Attribute.DataType];\n\ntype Value = [ValueTypes, Attribute.DataType];\n\nexport class Attribute {\n constructor(attributes: onnx.IAttributeProto[]|ortFbs.Attribute[]|null|undefined) {\n this._attributes = new Map();\n if (attributes !== null && attributes !== undefined) {\n for (const attr of attributes) {\n if (attr instanceof onnx.AttributeProto) {\n this._attributes.set(attr.name, [Attribute.getValue(attr), Attribute.getType(attr)]);\n } else if (attr instanceof ortFbs.Attribute) {\n this._attributes.set(attr.name()!, [Attribute.getValue(attr), Attribute.getType(attr)]);\n }\n }\n if (this._attributes.size < attributes.length) {\n throw new Error('duplicated attribute names');\n }\n }\n }\n\n set(key: string, type: Attribute.DataType, value: ValueTypes): void {\n this._attributes.set(key, [value, type]);\n }\n delete(key: string): void {\n this._attributes.delete(key);\n }\n getFloat(key: string, defaultValue?: Attribute.DataTypeMap['float']) {\n return this.get(key, 'float', defaultValue);\n }\n\n getInt(key: string, defaultValue?: Attribute.DataTypeMap['int']) {\n return this.get(key, 'int', defaultValue);\n }\n\n getString(key: string, defaultValue?: Attribute.DataTypeMap['string']) {\n return this.get(key, 'string', defaultValue);\n }\n\n getTensor(key: string, defaultValue?: Attribute.DataTypeMap['tensor']) {\n return this.get(key, 'tensor', defaultValue);\n }\n\n getFloats(key: string, defaultValue?: Attribute.DataTypeMap['floats']) {\n return this.get(key, 'floats', defaultValue);\n }\n\n getInts(key: string, defaultValue?: Attribute.DataTypeMap['ints']) {\n return this.get(key, 'ints', defaultValue);\n }\n\n getStrings(key: string, defaultValue?: Attribute.DataTypeMap['strings']) {\n return this.get(key, 'strings', defaultValue);\n }\n\n getTensors(key: string, defaultValue?: Attribute.DataTypeMap['tensors']) {\n return this.get(key, 'tensors', defaultValue);\n }\n\n private get(\n key: string, type: Attribute.DataType, defaultValue?: V): V {\n const valueAndType = this._attributes.get(key);\n if (valueAndType === undefined) {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n throw new Error(`required attribute not found: ${key}`);\n }\n if (valueAndType[1] !== type) {\n throw new Error(`type mismatch: expected ${type} but got ${valueAndType[1]}`);\n }\n return valueAndType[0] as V;\n }\n\n private static getType(attr: onnx.IAttributeProto|ortFbs.Attribute): Attribute.DataType {\n const type = attr instanceof onnx.AttributeProto ? (attr).type : (attr as ortFbs.Attribute).type();\n switch (type) {\n case onnx.AttributeProto.AttributeType.FLOAT:\n return 'float';\n case onnx.AttributeProto.AttributeType.INT:\n return 'int';\n case onnx.AttributeProto.AttributeType.STRING:\n return 'string';\n case onnx.AttributeProto.AttributeType.TENSOR:\n return 'tensor';\n case onnx.AttributeProto.AttributeType.FLOATS:\n return 'floats';\n case onnx.AttributeProto.AttributeType.INTS:\n return 'ints';\n case onnx.AttributeProto.AttributeType.STRINGS:\n return 'strings';\n case onnx.AttributeProto.AttributeType.TENSORS:\n return 'tensors';\n default:\n throw new Error(`attribute type is not supported yet: ${onnx.AttributeProto.AttributeType[type]}`);\n }\n }\n\n private static getValue(attr: onnx.IAttributeProto|ortFbs.Attribute) {\n const attrType = attr instanceof onnx.AttributeProto ? attr.type : (attr as ortFbs.Attribute).type();\n if (attrType === onnx.AttributeProto.AttributeType.GRAPH || attrType === onnx.AttributeProto.AttributeType.GRAPHS) {\n throw new Error('graph attribute is not supported yet');\n }\n\n const value = this.getValueNoCheck(attr);\n\n // cast LONG to number\n if (attrType === onnx.AttributeProto.AttributeType.INT && LongUtil.isLong(value)) {\n return LongUtil.longToNumber(value as Long | flatbuffers.Long);\n }\n\n // cast LONG[] to number[]\n if (attrType === onnx.AttributeProto.AttributeType.INTS) {\n const arr = (value as Array);\n const numberValue: number[] = new Array(arr.length);\n\n for (let i = 0; i < arr.length; i++) {\n const maybeLong = arr[i];\n numberValue[i] = LongUtil.longToNumber(maybeLong);\n }\n\n return numberValue;\n }\n\n // cast onnx.TensorProto to onnxjs.Tensor\n if (attrType === onnx.AttributeProto.AttributeType.TENSOR) {\n return attr instanceof onnx.AttributeProto ? Tensor.fromProto(value as onnx.ITensorProto) :\n Tensor.fromOrtTensor(value as ortFbs.Tensor);\n }\n\n // cast onnx.TensorProto[] to onnxjs.Tensor[]\n if (attrType === onnx.AttributeProto.AttributeType.TENSORS) {\n if (attr instanceof onnx.AttributeProto) {\n const tensorProtos = value as onnx.ITensorProto[];\n return tensorProtos.map(value => Tensor.fromProto(value));\n } else if (attr instanceof ortFbs.Attribute) {\n const tensorProtos = value as ortFbs.Tensor[];\n return tensorProtos.map(value => Tensor.fromOrtTensor(value));\n }\n }\n\n // cast Uint8Array to string\n if (attrType === onnx.AttributeProto.AttributeType.STRING) {\n // string in onnx attribute is of uint8array type, so we need to convert it to string below. While in ort format,\n // string attributes are returned as string, so no conversion is needed.\n if (attr instanceof onnx.AttributeProto) {\n const utf8String = value as Uint8Array;\n return decodeUtf8String(utf8String);\n }\n }\n\n // cast Uint8Array[] to string[]\n if (attrType === onnx.AttributeProto.AttributeType.STRINGS) {\n // strings in onnx attribute is returned as uint8array[], so we need to convert it to string[] below. While in ort\n // format strings attributes are returned as string[], so no conversion is needed.\n if (attr instanceof onnx.AttributeProto) {\n const utf8Strings = value as Uint8Array[];\n return utf8Strings.map(decodeUtf8String);\n }\n }\n\n return value as ValueTypes;\n }\n\n private static getValueNoCheck(attr: onnx.IAttributeProto|ortFbs.Attribute) {\n return attr instanceof (onnx.AttributeProto) ? this.getValueNoCheckFromOnnxFormat(attr) :\n this.getValueNoCheckFromOrtFormat(attr as ortFbs.Attribute);\n }\n\n private static getValueNoCheckFromOnnxFormat(attr: onnx.IAttributeProto) {\n switch (attr.type!) {\n case onnx.AttributeProto.AttributeType.FLOAT:\n return attr.f;\n case onnx.AttributeProto.AttributeType.INT:\n return attr.i;\n case onnx.AttributeProto.AttributeType.STRING:\n return attr.s;\n case onnx.AttributeProto.AttributeType.TENSOR:\n return attr.t;\n case onnx.AttributeProto.AttributeType.GRAPH:\n return attr.g;\n case onnx.AttributeProto.AttributeType.FLOATS:\n return attr.floats;\n case onnx.AttributeProto.AttributeType.INTS:\n return attr.ints;\n case onnx.AttributeProto.AttributeType.STRINGS:\n return attr.strings;\n case onnx.AttributeProto.AttributeType.TENSORS:\n return attr.tensors;\n case onnx.AttributeProto.AttributeType.GRAPHS:\n return attr.graphs;\n default:\n throw new Error(`unsupported attribute type: ${onnx.AttributeProto.AttributeType[attr.type!]}`);\n }\n }\n\n private static getValueNoCheckFromOrtFormat(attr: ortFbs.Attribute) {\n switch (attr.type()) {\n case ortFbs.AttributeType.FLOAT:\n return attr.f();\n case ortFbs.AttributeType.INT:\n return attr.i();\n case ortFbs.AttributeType.STRING:\n return attr.s();\n case ortFbs.AttributeType.TENSOR:\n return attr.t();\n case ortFbs.AttributeType.GRAPH:\n return attr.g();\n case ortFbs.AttributeType.FLOATS:\n return attr.floatsArray();\n case ortFbs.AttributeType.INTS: {\n const ints = [];\n for (let i = 0; i < attr.intsLength(); i++) {\n ints.push(attr.ints(i)!);\n }\n return ints;\n }\n case ortFbs.AttributeType.STRINGS: {\n const strings = [];\n for (let i = 0; i < attr.stringsLength(); i++) {\n strings.push(attr.strings(i));\n }\n return strings;\n }\n case ortFbs.AttributeType.TENSORS: {\n const tensors = [];\n for (let i = 0; i < attr.tensorsLength(); i++) {\n tensors.push(attr.tensors(i)!);\n }\n return tensors;\n }\n // case ortFbs.AttributeType.GRAPHS:\n // TODO: Subgraph not supported yet.\n // const graphs = [];\n // for (let i = 0; i < attr.graphsLength(); i++) {\n // graphs.push(attr.graphs(i)!);\n // }\n // return graphs;\n default:\n throw new Error(`unsupported attribute type: ${ortFbs.AttributeType[attr.type()]}`);\n }\n }\n\n protected _attributes: Map;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Attribute} from './attribute';\nimport {onnxruntime} from './ort-schema/flatbuffers/ort-generated';\nimport {onnx} from './ort-schema/protobuf/onnx';\nimport {Tensor} from './tensor';\nimport {LongUtil, MAX_CLIP, MIN_CLIP, ProtoUtil} from './util';\n\nimport ortFbs = onnxruntime.experimental.fbs;\n\nexport declare namespace Graph {\n export interface Shape {\n readonly dims: readonly number[];\n }\n export interface ValueType {\n readonly tensorType: Tensor.DataType;\n readonly shape: Shape;\n }\n export interface Value {\n // the tensor data. empty for non-initialized inputs\n readonly tensor?: Tensor;\n\n // index to the Node where the value comes from. -1 for initializer.\n readonly from: number;\n\n // indices to the Nodes where the values go to.\n readonly to: readonly number[];\n\n // value type specification. empty for non-input values.\n readonly type?: ValueType;\n }\n export interface Node {\n // name of the node\n readonly name: string;\n\n // the operator type\n readonly opType: string;\n\n // indices to the Values where the inputs come from.\n readonly inputs: readonly number[];\n\n // indices to the Values where the outpus go to.\n readonly outputs: readonly number[];\n\n // the attributes that used by the operator\n readonly attributes: Attribute;\n }\n\n /**\n * a Transformer is an instance that allows all possible transformation operations that applied to a graph\n */\n export interface Transformer {\n removeAllIdentityNodes(): void;\n removeAllDropoutNodes(): void;\n fuseConvActivationNodes(): void;\n // TODO: add generic functions to manipulate the graph\n }\n\n // an initializer can use transformer to transform the graph\n export interface Initializer {\n transformGraph(transformer: Transformer): void;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface Graph {\n getInputIndices(): readonly number[];\n getInputNames(): readonly string[];\n getOutputIndices(): readonly number[];\n getOutputNames(): readonly string[];\n getValues(): readonly Graph.Value[];\n getNodes(): readonly Graph.Node[];\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-redeclare\nexport const Graph = {\n /**\n * construct a graph from a graph protobuf type\n */\n from: (graphProto: onnx.IGraphProto|ortFbs.Graph, initializer?: Graph.Initializer) =>\n new GraphImpl(graphProto, initializer),\n};\n\nclass Value implements Graph.Value {\n constructor(valueInfo?: onnx.IValueInfoProto) {\n this._from = undefined;\n this._to = [];\n this.tensor = undefined;\n this.type = undefined;\n\n if (valueInfo) {\n this.type = ProtoUtil.tensorValueTypeFromProto(valueInfo.type!.tensorType!);\n }\n }\n\n _from?: number; // -1 represent from initializer\n get from() {\n return this._from!;\n }\n _to: number[];\n get to() {\n return this._to;\n }\n type?: Graph.ValueType;\n tensor?: Tensor;\n}\n\nclass Node implements Graph.Node {\n constructor(_nodeProto: onnx.INodeProto|ortFbs.Node, name?: string) {\n if (_nodeProto instanceof onnx.NodeProto) {\n this.name = _nodeProto.name;\n this.opType = _nodeProto.opType;\n this.attributes = new Attribute(_nodeProto.attribute);\n } else if (_nodeProto instanceof ortFbs.Node) {\n this.name = name ?? _nodeProto.name()!;\n this.opType = _nodeProto.opType()!;\n this.attributes = new Attribute(ProtoUtil.tensorAttributesFromORTFormat(_nodeProto));\n }\n\n this.inputs = [];\n this.outputs = [];\n this.executeNode = true;\n }\n\n name: string;\n opType: string;\n inputs: number[];\n outputs: number[];\n attributes: Attribute;\n executeNode: boolean;\n}\n\nclass GraphImpl implements Graph, Graph.Transformer {\n private _allData: Value[];\n\n private _allInputIndices: number[];\n private _allInputNames: string[];\n\n private _allOutputIndices: number[];\n private _allOutputNames: string[];\n\n private _nodes: Node[];\n\n constructor(graph: onnx.IGraphProto|ortFbs.Graph, graphInitializer?: Graph.Initializer) {\n if (!graph) {\n throw new TypeError('graph is empty');\n }\n\n // build the graph - will throw exceptions if something fatal is detected\n this.buildGraph(graph);\n\n // execute any transformation logic for the graph (if applicable)\n this.transformGraph(graphInitializer);\n\n // check for cycles and other inconsistencies - will throw exceptions if something fatal is detected\n this.checkIsAcyclic();\n }\n\n getInputIndices(): readonly number[] {\n return this._allInputIndices;\n }\n\n getInputNames(): readonly string[] {\n return this._allInputNames;\n }\n\n getOutputIndices(): readonly number[] {\n return this._allOutputIndices;\n }\n\n getOutputNames(): readonly string[] {\n return this._allOutputNames;\n }\n\n getValues(): readonly Graph.Value[] {\n return this._allData;\n }\n\n getNodes(): readonly Graph.Node[] {\n return this._nodes;\n }\n\n private buildGraph(graph: onnx.IGraphProto|ortFbs.Graph) {\n // build the graph - will throw exceptions if something fatal is detected\n if (graph instanceof onnx.GraphProto) {\n this.buildGraphFromOnnxFormat(graph);\n } else if (graph instanceof ortFbs.Graph) {\n this.buildGraphFromOrtFormat(graph);\n } else {\n throw new TypeError('Graph type is not supported.');\n }\n }\n private buildGraphFromOnnxFormat(graph: onnx.IGraphProto) {\n const dataIndices = new Map();\n this._allData = [];\n\n this._allInputIndices = [];\n this._allInputNames = [];\n\n this._allOutputIndices = [];\n this._allOutputNames = [];\n\n this._nodes = [];\n\n const nodesIndices = new Map();\n\n // scan all inputs\n if (!graph.input) {\n throw new Error('missing information in graph: input');\n }\n const inputValueNames = [];\n for (const i of graph.input) {\n if (dataIndices.has(i.name!)) {\n throw new Error(`duplicated input name: ${i.name}`);\n }\n const currentIndex = this._allData.push(new Value(i)) - 1;\n dataIndices.set(i.name!, currentIndex);\n inputValueNames.push(i.name!);\n }\n\n // scan all initializers\n if (!graph.initializer) {\n throw new Error('missing information in graph: initializer');\n }\n for (const i of graph.initializer) {\n let index = dataIndices.get(i.name!);\n if (index === undefined) {\n const value = new Value();\n value.type = {\n shape: {dims: ProtoUtil.tensorDimsFromProto(i.dims!)},\n tensorType: ProtoUtil.tensorDataTypeFromProto(i.dataType!)\n };\n index = this._allData.push(value) - 1;\n dataIndices.set(i.name!, index);\n }\n this._allData[index]._from = -1;\n this._allData[index].tensor = Tensor.fromProto(i);\n }\n\n // filter out input indices\n for (let i = 0; i < this._allData.length; i++) {\n if (!this._allData[i].tensor) {\n this._allInputIndices.push(i);\n this._allInputNames.push(inputValueNames[i]);\n }\n }\n\n // scan all outputs\n if (!graph.output) {\n throw new Error('missing information in graph: output');\n }\n for (const i of graph.output) {\n if (dataIndices.has(i.name!)) {\n throw new Error(`duplicated output name: ${i.name}`);\n }\n const currentIndex = this._allData.push(new Value(i)) - 1;\n dataIndices.set(i.name!, currentIndex);\n this._allOutputIndices.push(currentIndex);\n this._allOutputNames.push(i.name!);\n }\n\n // scan all nodes\n if (!graph.node) {\n throw new Error('missing information in graph: node');\n }\n for (const nodeProto of graph.node) {\n if (!nodeProto.name) {\n // assign a name to the node if it doesn't have one\n for (let pick = 0;; pick++) {\n const name = `unnamed_${nodeProto.opType}_${pick}`;\n if (!nodesIndices.has(name)) {\n nodeProto.name = name;\n break;\n }\n }\n }\n\n if (nodesIndices.has(nodeProto.name)) {\n throw new Error(`duplicated node name: ${nodeProto.name}`);\n }\n const currentIndex = this._nodes.push(new Node(nodeProto)) - 1;\n nodesIndices.set(nodeProto.name, currentIndex);\n }\n\n // scan node's outputs\n for (let i = 0; i < this._nodes.length; i++) {\n const node = this._nodes[i];\n const nodeProto = graph.node[i];\n if (!nodeProto.output) {\n throw new Error(`missing output for node: ${nodeProto.name}`);\n }\n for (const output of nodeProto.output) {\n let dataIndex = dataIndices.get(output);\n if (typeof dataIndex === 'undefined') {\n dataIndex = this._allData.push(new Value()) - 1;\n dataIndices.set(output, dataIndex);\n }\n node.outputs.push(dataIndex);\n\n if (this._allData[dataIndex]._from !== undefined) {\n throw new Error(`multiple nodes output to one data value: ${dataIndex}`);\n }\n this._allData[dataIndex]._from = i;\n\n // for the 'Constant' operator, just create a new edge in the graph corresponding to the 'output' of the\n // operator and ignore the node from the graph\n if (nodeProto.opType === 'Constant') {\n if (!nodeProto.attribute || nodeProto.attribute.length !== 1 || !nodeProto.attribute[0].t) {\n throw new Error('missing attributes or missing tensor value in attributes for this Constant operator');\n }\n if (!nodeProto.output || nodeProto.output.length !== 1) {\n throw new Error('missing output or incorrect number of outputs for this Constant operator');\n }\n node.outputs.pop();\n node.executeNode = false;\n\n this._allData[dataIndex]._from = -1;\n this._allData[dataIndex].tensor = Tensor.fromProto(nodeProto.attribute[0].t);\n }\n }\n }\n\n // scan node's inputs\n for (let i = 0; i < this._nodes.length; i++) {\n const node = this._nodes[i];\n const nodeProto = graph.node[i];\n\n if (!nodeProto.input) {\n throw new Error(`missing input for node: ${nodeProto.name}`);\n }\n for (const input of nodeProto.input) {\n const dataIndex = dataIndices.get(input);\n if (typeof dataIndex === 'undefined') {\n // handle exception when opset > 9 and roi / scales not given\n if (input === '' && (nodeProto.input.length === 3 || nodeProto.input.length === 4) &&\n nodeProto.opType === 'Resize') {\n continue;\n }\n throw new Error(`unrecognized input '${input}' for node: ${nodeProto.name}`);\n }\n node.inputs.push(dataIndex);\n\n this._allData[dataIndex]._to.push(i);\n }\n }\n\n return true;\n }\n\n private buildGraphFromOrtFormat(graph: ortFbs.Graph) {\n const dataIndices = new Map();\n this._allData = [];\n\n this._allInputIndices = [];\n this._allInputNames = [];\n\n this._allOutputIndices = [];\n this._allOutputNames = [];\n\n this._nodes = [];\n\n const nodesIndices = new Map();\n\n // scan all inputs\n const inputValueNames = [];\n for (let i = 0; i < graph.inputsLength(); i++) {\n const inputName = graph.inputs(i);\n if (dataIndices.has(inputName)) {\n throw new Error(`duplicated input name: ${inputName}`);\n }\n // Find the input typeInfo from nodeargs\n for (let j = 0; j < graph.nodeArgsLength(); j++) {\n if (graph.nodeArgs(j)?.name() === inputName) {\n const value = new Value();\n const valueType = graph.nodeArgs(j)?.type()?.valueType();\n if (valueType !== ortFbs.TypeInfoValue.tensor_type) {\n throw new Error('Unexpected value type for the nodeArg.');\n }\n const valueInfo = graph.nodeArgs(j)!.type()!.value(new ortFbs.TensorTypeAndShape())!;\n const type = ProtoUtil.tensorDataTypeFromProto(valueInfo.elemType());\n const shape = valueInfo.shape()!;\n const dims = [];\n for (let k = 0; k < shape.dimLength()!; k++) {\n dims.push(LongUtil.longToNumber(shape.dim(k)!.value()!.dimValue()!));\n }\n value.type = {shape: {dims}, tensorType: type};\n const currentIndex = this._allData.push(value) - 1;\n dataIndices.set(inputName, currentIndex);\n inputValueNames.push(inputName);\n }\n }\n }\n // check initializers\n for (let i = 0; i < graph.initializersLength(); i++) {\n const initializer = graph.initializers(i)!;\n let index = dataIndices.get(initializer.name()!);\n if (index === undefined) {\n const value = new Value();\n const dims = ProtoUtil.tensorDimsFromORTFormat(initializer);\n const type = ProtoUtil.tensorDataTypeFromProto(initializer.dataType());\n value.type = {shape: {dims}, tensorType: type};\n index = this._allData.push(value) - 1;\n dataIndices.set(initializer.name()!, index);\n }\n this._allData[index]._from = -1;\n this._allData[index].tensor = Tensor.fromOrtTensor(initializer);\n }\n\n // filter out input indices\n for (let i = 0; i < this._allData.length; i++) {\n if (!this._allData[i].tensor) {\n this._allInputIndices.push(i);\n this._allInputNames.push(inputValueNames[i]);\n }\n }\n\n // scan all outputs\n for (let i = 0; i < graph.outputsLength(); i++) {\n const outputName = graph.outputs(i);\n if (dataIndices.has(outputName)) {\n throw new Error(`duplicated output name: ${outputName}`);\n }\n const currentIndex = this._allData.push(new Value()) - 1;\n dataIndices.set(outputName, currentIndex);\n this._allOutputIndices.push(currentIndex);\n this._allOutputNames.push(outputName);\n }\n\n // scan all nodes\n if (!graph.nodes) {\n throw new Error('missing information in graph: node');\n }\n for (let i = 0; i < graph.nodesLength(); i++) {\n const nodeProto = graph.nodes(i);\n let name = nodeProto!.name();\n if (!name) {\n // assign a name to the node if it doesn't have one\n for (let pick = 0;; pick++) {\n name = `unnamed_${nodeProto!.opType()}_${pick}`;\n if (!nodesIndices.has(name)) {\n // an unique name is found. break.\n break;\n }\n }\n }\n\n if (nodesIndices.has(name)) {\n throw new Error(`duplicated node name: ${name}`);\n }\n const currentIndex = this._nodes.push(new Node(nodeProto!, name)) - 1;\n nodesIndices.set(name, currentIndex);\n }\n\n // scan node's outputs\n for (let i = 0; i < this._nodes.length; i++) {\n const node = this._nodes[i];\n const nodeProto = graph.nodes(i);\n if (nodeProto == null) {\n throw new Error(`No node exists at index ${i}`);\n }\n if (nodeProto?.outputsLength() === 0) {\n throw new Error(`missing output for node: ${nodeProto.name}`);\n }\n for (let j = 0; j < nodeProto?.outputsLength(); j++) {\n const output = nodeProto?.outputs(j);\n let dataIndex = dataIndices.get(output);\n if (typeof dataIndex === 'undefined') {\n dataIndex = this._allData.push(new Value()) - 1;\n dataIndices.set(output, dataIndex);\n }\n node.outputs.push(dataIndex);\n\n if (this._allData[dataIndex]._from !== undefined) {\n throw new Error(`multiple nodes output to one data value: ${dataIndex}`);\n }\n this._allData[dataIndex]._from = i;\n\n // for the 'Constant' operator, just create a new edge in the graph corresponding to the 'output' of the\n // operator and ignore the node from the graph\n if (nodeProto.opType() === 'Constant') {\n if (nodeProto.attributesLength() !== 1 || !nodeProto.attributes(0)!.t()) {\n throw new Error('missing attributes or missing tensor value in attributes for this Constant operator');\n }\n if (nodeProto.outputsLength() !== 1) {\n throw new Error('missing output or incorrect number of outputs for this Constant operator');\n }\n node.outputs.pop();\n node.executeNode = false;\n\n this._allData[dataIndex]._from = -1;\n this._allData[dataIndex].tensor = Tensor.fromOrtTensor(nodeProto.attributes(0)!.t()!);\n }\n }\n }\n\n // scan node's inputs\n for (let i = 0; i < this._nodes.length; i++) {\n const node = this._nodes[i];\n const nodeProto = graph.nodes(i)!;\n\n if (nodeProto.inputsLength() === 0) {\n throw new Error(`missing input for node: ${nodeProto.name}`);\n }\n for (let j = 0; j < nodeProto.inputsLength()!; j++) {\n const input = nodeProto.inputs(j)!;\n const dataIndex = dataIndices.get(input);\n if (typeof dataIndex === 'undefined') {\n throw new Error(`unrecognized input '${input}' for node: ${nodeProto!.name()}`);\n }\n node.inputs.push(dataIndex);\n\n this._allData[dataIndex]._to.push(i);\n }\n }\n }\n\n private checkIsAcyclic() {\n // go through the graph and check for cycles or other fatal inconsistencies\n const starters: Set = new Set();\n this._allInputIndices.forEach(i => {\n const data = this._allData[i];\n data._to.forEach(j => {\n starters.add(j);\n });\n });\n\n // Iterative DFS to check for cycles\n const nodesStack = Array.from(starters);\n const nodesState = new Array(this._nodes.length).fill('white');\n\n while (nodesStack.length > 0) {\n const nodeIndex = nodesStack.pop()!;\n // this node has now been processed completely. Mark this node 'black' to denote this.\n if (nodesState[nodeIndex] === 'gray') {\n nodesState[nodeIndex] = 'black';\n } else {\n // this node is under processing stage. mark this node 'gray' to denote this.\n nodesStack.push(nodeIndex);\n nodesState[nodeIndex] = 'gray';\n\n this._nodes[nodeIndex].outputs.forEach((outgoingEdgeIndex) => {\n const data = this._allData[outgoingEdgeIndex];\n if (typeof data.tensor !== 'undefined') {\n throw new Error('node outputs should not be initialized');\n }\n if (data._from !== nodeIndex) {\n throw new Error('from property of the Value object doesn\\'t match index of Node being processed');\n }\n data._to.forEach((downstreamNodeIndex) => {\n // back edge found - cyclic\n if (nodesState[downstreamNodeIndex] === 'gray') {\n throw new Error('model graph is cyclic');\n }\n // tree edge found - continue processing by adding it to stack\n else if (nodesState[downstreamNodeIndex] === 'white') {\n nodesStack.push(downstreamNodeIndex);\n }\n });\n });\n }\n }\n }\n\n private transformGraph(graphInitializer?: Graph.Initializer): void {\n // apply common transform\n this.removeAllIdentityNodes();\n this.removeAllDropoutNodes();\n this.fuseConvActivationNodes();\n // apply initializer specific transform\n if (graphInitializer) {\n graphInitializer.transformGraph(this);\n }\n\n // finalize graph\n this.finalizeGraph();\n }\n\n /**\n * finalize the graph.\n *\n * this function should be called after all the transformation completed.\n * this function removes all unnecessary nodes and values from the graph\n */\n finalizeGraph() {\n let offset = 0;\n // delete all nodes that are not being executed\n // The graph is represented using these two arrays\n // this._nodes - Array holding the kernels to execute - each entry is a kernel pointing to this._allData\n // this._allData - hold 2 fields - to [] & from - these feileds hold the graph map for inputs and outputs per node\n // newIndices - remapping the graph after reading the flag 'executeNode'\n const newIndices = new Array(this._nodes.length, 0);\n let nodePossition = 0;\n\n for (let i = 0; i < this._nodes.length; i++) {\n // giving new indexes to the nodes based on execution flag\n newIndices[i] = nodePossition;\n if (this._nodes[i].executeNode) {\n if (nodePossition !== i) {\n this._nodes[nodePossition] = this._nodes[i];\n }\n nodePossition++;\n\n } else {\n // delete all output values\n this._nodes[i].outputs.forEach(ind => {\n this._allData[ind]._from = -2;\n });\n }\n }\n\n // removing the unused nodes\n this._nodes.splice(nodePossition, this._nodes.length - nodePossition);\n\n // Updating this._allData according to the new this._nodes\n for (let i = 0; i < this._allData.length; i++) {\n const currentData = this._allData[i];\n if (currentData._from !== undefined && currentData._from !== -1 && currentData._from !== -2) {\n currentData._from = newIndices[currentData._from];\n }\n\n for (let j = 0; j < currentData._to.length; j++) {\n if (currentData._to[j] >= 0) {\n currentData._to[j] = newIndices[currentData._to[j]];\n } else {\n throw new Error('Trying to update a removed node');\n }\n }\n }\n\n offset = 0;\n // delete all values that are not being referenced\n for (let i = 0; i < this._allData.length; i++) {\n // if current value is neither linked to next node, nor an output value, remove it.\n if (this._allData[i].from === -2 && this._allOutputIndices.indexOf(i + offset) === -1) {\n offset++;\n this._allData.splice(i, 1);\n i--;\n continue;\n }\n if (offset > 0) {\n let ind = -1;\n // if current value is neither an input value nor an initializer, find the node it's\n // coming from and update the corresponding node output\n if (this._allData[i].from !== undefined && this._allData[i].from !== -1) {\n ind = this._nodes[this._allData[i].from].outputs.indexOf(i + offset);\n if (ind !== -1) {\n this._nodes[this._allData[i].from].outputs[ind] = i;\n }\n } else {\n // if current value is an input value, update its reference in inputIndices\n ind = this._allInputIndices.indexOf(i + offset);\n if (ind !== -1) {\n this._allInputIndices[ind] = i;\n }\n }\n\n // find the node that the current value is linking to and update its input reference\n this._allData[i].to.forEach(node => {\n ind = this._nodes[node].inputs.indexOf(i + offset);\n if (ind !== -1) {\n this._nodes[node].inputs[ind] = i;\n }\n });\n if (this._allData[i].to.length === 0) {\n // if current value is a graph output, update its reference in outputIndices\n ind = this._allOutputIndices.indexOf(i + offset);\n if (ind !== -1) {\n this._allOutputIndices[ind] = i;\n }\n }\n }\n }\n }\n\n /**\n * Delete the specifed node. Assume the node has one incoming input and the first output connected to other nodes.\n * An input validation must be done before calling this function.\n * @param nodeIndex The index of node to be deleted\n */\n private deleteNode(nodeIndex: number) {\n const node = this._nodes[nodeIndex];\n if (node.outputs.length > 1) {\n for (let i = 1; i < node.outputs.length; i++) {\n if (this._allData[node.outputs[i]].to.length > 0) {\n throw new Error('Node deletion with more than one output connected to other nodes is not supported. ');\n }\n }\n }\n\n // this node wil not be executed\n node.executeNode = false;\n const inputValueIndex = node.inputs[0];\n const outputValueIndex = node.outputs[0];\n const nodesConsumingOutput = this._allData[outputValueIndex].to;\n\n // remove this node from the to property of the input Value\n for (let i = 0; i < node.inputs.length; i++) {\n const delIndex = this._allData[node.inputs[i]].to.indexOf(nodeIndex);\n // should not happen\n if (delIndex === -1) {\n throw new Error('The Value object doesn\\'t have the current Node in it\\'s \\'to\\' property ');\n }\n this._allData[node.inputs[i]].to.splice(delIndex, 1);\n }\n\n // clear node indices consuming this output Value\n this._allData[outputValueIndex]._to = [];\n\n // if the output of this node is a graph output, adjust the index appropriately\n const index = this._allOutputIndices.indexOf(outputValueIndex);\n if (index !== -1) {\n this._allOutputIndices[index] = inputValueIndex;\n }\n\n // override the inputs for nodes consuming this node's output with the input to this node\n if (nodesConsumingOutput && nodesConsumingOutput.length > 0) {\n for (const nodeIndex of nodesConsumingOutput) {\n const replaceIndex = this._nodes[nodeIndex].inputs.indexOf(outputValueIndex);\n // should not happen\n if (replaceIndex === -1) {\n throw new Error('The Node object doesn\\'t have the output Value in it\\'s \\'inputs\\' property ');\n }\n this._nodes[nodeIndex].inputs[replaceIndex] = inputValueIndex;\n this._allData[inputValueIndex].to.push(nodeIndex);\n }\n }\n }\n\n removeAllDropoutNodes() {\n let nodeIndex = 0;\n for (const node of this._nodes) {\n // weed out 'Dropout' nodes so that no time is wasted in execution\n if (node.opType === 'Dropout') {\n // the node should have exactly 1 input and 1 or 2 outputs\n if (node.inputs.length !== 1) {\n throw new Error('Dropout nodes should only contain one input. ');\n }\n if (node.outputs.length !== 1 && node.outputs.length !== 2) {\n throw new Error('Dropout nodes should contain either 1 or 2 output(s)');\n }\n // the second output should not be referenced by any other node\n if (node.outputs.length === 2 && this._allData[node.outputs[1]]._to.length !== 0) {\n throw new Error('Dropout nodes\\'s second output should not be referenced by other nodes');\n }\n this.deleteNode(nodeIndex);\n }\n nodeIndex++;\n }\n }\n\n removeAllIdentityNodes() {\n let nodeIndex = 0;\n for (const node of this._nodes) {\n // weed out 'Identity' nodes so that no time is wasted in execution\n if (node.opType === 'Identity') {\n this.deleteNode(nodeIndex);\n }\n nodeIndex++;\n }\n }\n\n isActivation(n: Node): boolean {\n switch (n.opType) {\n // TODO: add other activation methods\n case 'Relu':\n case 'Sigmoid':\n case 'Clip':\n return true;\n default:\n return false;\n }\n }\n\n fuseConvActivationNodes() {\n for (const node of this._nodes) {\n if (node.opType === 'Conv') {\n const next = this._allData[node.outputs[0]]._to;\n if (next.length === 1 && this.isActivation(this._nodes[next[0]])) {\n const child = this._nodes[next[0]];\n if (child.opType === 'Clip') {\n if (child.inputs.length === 1) {\n try {\n node.attributes.set(\n 'activation_params', 'floats',\n [child.attributes.getFloat('min'), child.attributes.getFloat('max')]);\n } catch (e) {\n node.attributes.set('activation_params', 'floats', [MIN_CLIP, MAX_CLIP]);\n }\n } else if (\n child.inputs.length >= 3 && this._allData[child.inputs[1]].tensor !== undefined &&\n this._allData[child.inputs[2]].tensor !== undefined) {\n node.attributes.set('activation_params', 'floats', [\n this._allData[child.inputs[1]].tensor!.floatData[0], this._allData[child.inputs[2]].tensor!.floatData[0]\n ]);\n } else {\n // Skip fusion with clip node since clip min and clip max are not coming from initializer\n continue;\n }\n }\n node.attributes.set('activation', 'string', (child.opType));\n this.deleteNode(next[0]);\n }\n }\n }\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {flatbuffers} from 'flatbuffers';\n\nimport {Graph} from './graph';\nimport {OpSet} from './opset';\nimport {onnxruntime} from './ort-schema/flatbuffers/ort-generated';\nimport {onnx} from './ort-schema/protobuf/onnx';\nimport {LongUtil} from './util';\n\nimport ortFbs = onnxruntime.experimental.fbs;\n\nexport class Model {\n // empty model\n constructor() {}\n\n load(buf: Uint8Array, graphInitializer?: Graph.Initializer, isOrtFormat?: boolean): void {\n let onnxError: Error|undefined;\n if (!isOrtFormat) {\n // isOrtFormat === false || isOrtFormat === undefined\n try {\n this.loadFromOnnxFormat(buf, graphInitializer);\n return;\n } catch (e) {\n if (isOrtFormat !== undefined) {\n throw e;\n }\n onnxError = e;\n }\n }\n\n try {\n this.loadFromOrtFormat(buf, graphInitializer);\n } catch (e) {\n if (isOrtFormat !== undefined) {\n throw e;\n }\n // Tried both formats and failed (when isOrtFormat === undefined)\n throw new Error(`Failed to load model as ONNX format: ${onnxError}\\nas ORT format: ${e}`);\n }\n }\n\n private loadFromOnnxFormat(buf: Uint8Array, graphInitializer?: Graph.Initializer): void {\n const modelProto = onnx.ModelProto.decode(buf);\n const irVersion = LongUtil.longToNumber(modelProto.irVersion);\n if (irVersion < 3) {\n throw new Error('only support ONNX model with IR_VERSION>=3');\n }\n\n this._opsets =\n modelProto.opsetImport.map(i => ({domain: i.domain as string, version: LongUtil.longToNumber(i.version!)}));\n\n this._graph = Graph.from(modelProto.graph!, graphInitializer);\n }\n\n private loadFromOrtFormat(buf: Uint8Array, graphInitializer?: Graph.Initializer): void {\n const fb = new flatbuffers.ByteBuffer(buf);\n const ortModel = ortFbs.InferenceSession.getRootAsInferenceSession(fb).model()!;\n const irVersion = LongUtil.longToNumber(ortModel.irVersion());\n if (irVersion < 3) {\n throw new Error('only support ONNX model with IR_VERSION>=3');\n }\n this._opsets = [];\n for (let i = 0; i < ortModel.opsetImportLength(); i++) {\n const opsetId = ortModel.opsetImport(i)!;\n this._opsets.push({domain: opsetId?.domain() as string, version: LongUtil.longToNumber(opsetId.version()!)});\n }\n\n this._graph = Graph.from(ortModel.graph()!, graphInitializer);\n }\n\n private _graph: Graph;\n get graph(): Graph {\n return this._graph;\n }\n\n private _opsets: OpSet[];\n get opsets(): readonly OpSet[] {\n return this._opsets;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {readFile} from 'node:fs/promises';\n\nimport {resolveBackend, SessionHandlerType} from './backend';\nimport {ExecutionPlan} from './execution-plan';\nimport {Graph} from './graph';\nimport {Profiler} from './instrument';\nimport {Model} from './model';\nimport {Operator} from './operators';\nimport {Tensor} from './tensor';\n\nexport declare namespace Session {\n export interface Config {\n backendHint?: string;\n profiler?: Profiler.Config;\n }\n\n export interface Context {\n profiler: Readonly;\n graphInputTypes?: Tensor.DataType[];\n graphInputDims?: Array;\n }\n}\n\nexport class Session {\n constructor(config: Session.Config = {}) {\n this._initialized = false;\n this.backendHint = config.backendHint;\n this.profiler = Profiler.create(config.profiler);\n this.context = {profiler: this.profiler, graphInputTypes: [], graphInputDims: []};\n }\n\n get inputNames(): readonly string[] {\n return this._model.graph.getInputNames();\n }\n get outputNames(): readonly string[] {\n return this._model.graph.getOutputNames();\n }\n\n startProfiling() {\n this.profiler.start();\n }\n\n endProfiling() {\n this.profiler.stop();\n }\n\n async loadModel(uri: string): Promise;\n async loadModel(buffer: ArrayBuffer, byteOffset?: number, length?: number): Promise;\n async loadModel(buffer: Uint8Array): Promise;\n async loadModel(arg: string|ArrayBuffer|Uint8Array, byteOffset?: number, length?: number): Promise {\n await this.profiler.event('session', 'Session.loadModel', async () => {\n // resolve backend and session handler\n const backend = await resolveBackend(this.backendHint);\n this.sessionHandler = backend.createSessionHandler(this.context);\n\n this._model = new Model();\n if (typeof arg === 'string') {\n const isOrtFormat = arg.endsWith('.ort');\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // node\n const buf = await readFile(arg);\n this.initialize(buf, isOrtFormat);\n } else {\n // browser\n const response = await fetch(arg);\n const buf = await response.arrayBuffer();\n this.initialize(new Uint8Array(buf), isOrtFormat);\n }\n } else if (!ArrayBuffer.isView(arg)) {\n // load model from ArrayBuffer\n const arr = new Uint8Array(arg, byteOffset || 0, length || arg.byteLength);\n this.initialize(arr);\n } else {\n // load model from Uint8array\n this.initialize(arg);\n }\n });\n }\n\n private initialize(modelProtoBlob: Uint8Array, isOrtFormat?: boolean): void {\n if (this._initialized) {\n throw new Error('already initialized');\n }\n\n this.profiler.event('session', 'Session.initialize', () => {\n // load graph\n const graphInitializer =\n this.sessionHandler.transformGraph ? this.sessionHandler as Graph.Initializer : undefined;\n this._model.load(modelProtoBlob, graphInitializer, isOrtFormat);\n\n // graph is completely initialzied at this stage , let the interested handlers know\n if (this.sessionHandler.onGraphInitialized) {\n this.sessionHandler.onGraphInitialized(this._model.graph);\n }\n // initialize each operator in the graph\n this.initializeOps(this._model.graph);\n\n // instantiate an ExecutionPlan object to be used by the Session object\n this._executionPlan = new ExecutionPlan(this._model.graph, this._ops, this.profiler);\n });\n\n this._initialized = true;\n }\n\n async run(inputs: Map|Tensor[]): Promise> {\n if (!this._initialized) {\n throw new Error('session not initialized yet');\n }\n\n return this.profiler.event('session', 'Session.run', async () => {\n const inputTensors = this.normalizeAndValidateInputs(inputs);\n\n const outputTensors = await this._executionPlan.execute(this.sessionHandler, inputTensors);\n\n return this.createOutput(outputTensors);\n });\n }\n\n private normalizeAndValidateInputs(inputs: Map|Tensor[]): Tensor[] {\n const modelInputNames = this._model.graph.getInputNames();\n\n // normalize inputs\n // inputs: Tensor[]\n if (Array.isArray(inputs)) {\n if (inputs.length !== modelInputNames.length) {\n throw new Error(`incorrect input array length: expected ${modelInputNames.length} but got ${inputs.length}`);\n }\n }\n // convert map to array\n // inputs: Map\n else {\n if (inputs.size !== modelInputNames.length) {\n throw new Error(`incorrect input map size: expected ${modelInputNames.length} but got ${inputs.size}`);\n }\n\n const sortedInputs = new Array(inputs.size);\n let sortedInputsIndex = 0;\n for (let i = 0; i < modelInputNames.length; ++i) {\n const tensor = inputs.get(modelInputNames[i]);\n if (!tensor) {\n throw new Error(`missing input tensor for: '${name}'`);\n }\n sortedInputs[sortedInputsIndex++] = tensor;\n }\n\n inputs = sortedInputs;\n }\n\n // validate dims requirements\n // First session run - graph input data is not cached for the session\n if (!this.context.graphInputTypes || this.context.graphInputTypes.length === 0 || !this.context.graphInputDims ||\n this.context.graphInputDims.length === 0) {\n const modelInputIndices = this._model.graph.getInputIndices();\n const modelValues = this._model.graph.getValues();\n\n const graphInputDims = new Array(modelInputIndices.length);\n\n for (let i = 0; i < modelInputIndices.length; ++i) {\n const graphInput = modelValues[modelInputIndices[i]];\n graphInputDims[i] = graphInput.type!.shape.dims;\n\n // cached for second and subsequent runs.\n // Some parts of the framework works on the assumption that the graph and types and shapes are static\n this.context.graphInputTypes!.push(graphInput.type!.tensorType);\n this.context.graphInputDims!.push(inputs[i].dims);\n }\n\n this.validateInputTensorDims(graphInputDims, inputs, true);\n }\n\n // Second and subsequent session runs - graph input data is cached for the session\n else {\n this.validateInputTensorDims(this.context.graphInputDims, inputs, false);\n }\n\n // validate types requirement\n this.validateInputTensorTypes(this.context.graphInputTypes!, inputs);\n\n return inputs;\n }\n\n private validateInputTensorTypes(graphInputTypes: Tensor.DataType[], givenInputs: Tensor[]) {\n for (let i = 0; i < givenInputs.length; i++) {\n const expectedType = graphInputTypes[i];\n const actualType = givenInputs[i].type;\n if (expectedType !== actualType) {\n throw new Error(`input tensor[${i}] check failed: expected type '${expectedType}' but got ${actualType}`);\n }\n }\n }\n\n private validateInputTensorDims(\n graphInputDims: Array, givenInputs: Tensor[], noneDimSupported: boolean) {\n for (let i = 0; i < givenInputs.length; i++) {\n const expectedDims = graphInputDims[i];\n const actualDims = givenInputs[i].dims;\n if (!this.compareTensorDims(expectedDims, actualDims, noneDimSupported)) {\n throw new Error(`input tensor[${i}] check failed: expected shape '[${expectedDims.join(',')}]' but got [${\n actualDims.join(',')}]`);\n }\n }\n }\n\n private compareTensorDims(expectedDims: readonly number[], actualDims: readonly number[], noneDimSupported: boolean):\n boolean {\n if (expectedDims.length !== actualDims.length) {\n return false;\n }\n\n for (let i = 0; i < expectedDims.length; ++i) {\n if (expectedDims[i] !== actualDims[i] && (!noneDimSupported || expectedDims[i] !== 0)) {\n // data shape mis-match AND not a 'None' dimension.\n return false;\n }\n }\n\n return true;\n }\n\n private createOutput(outputTensors: Tensor[]): Map {\n const modelOutputNames = this._model.graph.getOutputNames();\n if (outputTensors.length !== modelOutputNames.length) {\n throw new Error('expected number of outputs do not match number of generated outputs');\n }\n\n const output = new Map();\n for (let i = 0; i < modelOutputNames.length; ++i) {\n output.set(modelOutputNames[i], outputTensors[i]);\n }\n\n return output;\n }\n\n private initializeOps(graph: Graph): void {\n const nodes = graph.getNodes();\n this._ops = new Array(nodes.length);\n\n for (let i = 0; i < nodes.length; i++) {\n this._ops[i] = this.sessionHandler.resolve(nodes[i], this._model.opsets, graph);\n }\n }\n\n private _model: Model;\n private _initialized: boolean;\n\n private _ops: Operator[];\n private _executionPlan: ExecutionPlan;\n\n private backendHint?: string;\n\n private sessionHandler: SessionHandlerType;\n private context: Session.Context;\n private profiler: Readonly;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession, InferenceSessionHandler, SessionHandler, Tensor} from 'onnxruntime-common';\n\nimport {Session} from './session';\nimport {Tensor as OnnxjsTensor} from './tensor';\n\nexport class OnnxjsSessionHandler implements InferenceSessionHandler {\n constructor(private session: Session) {\n this.inputNames = this.session.inputNames;\n this.outputNames = this.session.outputNames;\n }\n\n async dispose(): Promise {}\n inputNames: readonly string[];\n outputNames: readonly string[];\n async run(\n feeds: SessionHandler.FeedsType, _fetches: SessionHandler.FetchesType,\n _options: InferenceSession.RunOptions): Promise {\n const inputMap = new Map();\n for (const name in feeds) {\n if (Object.hasOwnProperty.call(feeds, name)) {\n const feed = feeds[name];\n inputMap.set(\n name,\n new OnnxjsTensor(\n feed.dims, feed.type as OnnxjsTensor.DataType, undefined, undefined,\n feed.data as OnnxjsTensor.NumberType));\n }\n }\n const outputMap = await this.session.run(inputMap);\n const output: SessionHandler.ReturnType = {};\n outputMap.forEach((tensor, name) => {\n output[name] = new Tensor(tensor.type, tensor.data, tensor.dims);\n });\n return output;\n }\n startProfiling(): void {\n this.session.startProfiling();\n }\n endProfiling(): void {\n this.session.endProfiling();\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n/* eslint-disable import/no-internal-modules */\nimport {Backend, InferenceSession, InferenceSessionHandler} from 'onnxruntime-common';\n\nimport {Session} from './onnxjs/session';\nimport {OnnxjsSessionHandler} from './onnxjs/session-handler-inference';\n\nclass OnnxjsBackend implements Backend {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n async init(): Promise {}\n\n async createInferenceSessionHandler(pathOrBuffer: string|Uint8Array, options?: InferenceSession.SessionOptions):\n Promise {\n // NOTE: Session.Config(from onnx.js) is not compatible with InferenceSession.SessionOptions(from\n // onnxruntime-common).\n // In future we should remove Session.Config and use InferenceSession.SessionOptions.\n // Currently we allow this to happen to make test runner work.\n const session = new Session(options as unknown as Session.Config);\n\n // typescript cannot merge method override correctly (so far in 4.2.3). need if-else to call the method.\n if (typeof pathOrBuffer === 'string') {\n await session.loadModel(pathOrBuffer);\n } else {\n await session.loadModel(pathOrBuffer);\n }\n\n return new OnnxjsSessionHandler(session);\n }\n}\n\nexport const onnxjsBackend = new OnnxjsBackend();\n","export const readFile = undefined;export const readFileSync = undefined;export const createReadStream = undefined;","export const join = undefined;","\nvar ortWasm = (() => {\n var _scriptDir = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n if (typeof __filename != 'undefined') _scriptDir ||= __filename;\n return (\nfunction(moduleArg = {}) {\n\nvar f=moduleArg,k,l,readyPromise=new Promise((a,b)=>{k=a;l=b}),u=Object.assign({},f),v=\"./this.program\",aa=\"object\"==typeof window,w=\"function\"==typeof importScripts,ba=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,z=\"\",A,B,C;\nif(ba){var fs=require(\"fs\"),D=require(\"path\");z=w?D.dirname(z)+\"/\":__dirname+\"/\";A=(a,b)=>{a=E(a)?new URL(a):D.normalize(a);return fs.readFileSync(a,b?void 0:\"utf8\")};C=a=>{a=A(a,!0);a.buffer||(a=new Uint8Array(a));return a};B=(a,b,c,e=!0)=>{a=E(a)?new URL(a):D.normalize(a);fs.readFile(a,e?void 0:\"utf8\",(g,h)=>{g?c(g):b(e?h.buffer:h)})};!f.thisProgram&&1{var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.send(null);return b.responseText},w&&(C=a=>{var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.responseType=\"arraybuffer\";b.send(null);return new Uint8Array(b.response)}),B=(a,b,c)=>{var e=new XMLHttpRequest;e.open(\"GET\",a,!0);e.responseType=\"arraybuffer\";e.onload=()=>{200==e.status||0==e.status&&\ne.response?b(e.response):c()};e.onerror=c;e.send(null)};var ca=console.log.bind(console),F=console.error.bind(console);Object.assign(f,u);u=null;var G,da=!1,H,I,J,K,ea;function fa(){var a=G.buffer;f.HEAP8=H=new Int8Array(a);f.HEAP16=new Int16Array(a);f.HEAPU8=I=new Uint8Array(a);f.HEAPU16=new Uint16Array(a);f.HEAP32=J=new Int32Array(a);f.HEAPU32=K=new Uint32Array(a);f.HEAPF32=new Float32Array(a);f.HEAPF64=ea=new Float64Array(a)}var L=[],M=[],ha=[],N=0,O=null,P=null;\nfunction ia(a){a=\"Aborted(\"+a+\")\";F(a);da=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");l(a);throw a;}var ja=a=>a.startsWith(\"data:application/octet-stream;base64,\"),E=a=>a.startsWith(\"file://\"),Q;Q=\"ort-wasm.wasm\";if(!ja(Q)){var ka=Q;Q=f.locateFile?f.locateFile(ka,z):z+ka}function la(a){if(C)return C(a);throw\"both async and sync fetching of the wasm failed\";}\nfunction ma(a){if(aa||w){if(\"function\"==typeof fetch&&!E(a))return fetch(a,{credentials:\"same-origin\"}).then(b=>{if(!b.ok)throw`failed to load wasm binary file at '${a}'`;return b.arrayBuffer()}).catch(()=>la(a));if(B)return new Promise((b,c)=>{B(a,e=>b(new Uint8Array(e)),c)})}return Promise.resolve().then(()=>la(a))}function na(a,b,c){return ma(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{F(`failed to asynchronously prepare wasm: ${e}`);ia(e)})}\nfunction oa(a,b){var c=Q;return\"function\"!=typeof WebAssembly.instantiateStreaming||ja(c)||E(c)||ba||\"function\"!=typeof fetch?na(c,a,b):fetch(c,{credentials:\"same-origin\"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(g){F(`wasm streaming compile failed: ${g}`);F(\"falling back to ArrayBuffer instantiation\");return na(c,a,b)}))}\nvar R,pa={798088:(a,b,c,e)=>{if(\"undefined\"==typeof f||!f.ya)return 1;a=S(a>>>0);a.startsWith(\"./\")&&(a=a.substring(2));a=f.ya.get(a);if(!a)return 2;b>>>=0;c>>>=0;if(b+c>a.byteLength)return 3;try{return I.set(a.subarray(b,b+c),e>>>0>>>0),0}catch{return 4}}};class qa{constructor(a){this.wa=a-24}}\nvar ra=0,sa=0,ta=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0,ua=(a,b,c)=>{b>>>=0;var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+=String.fromCharCode(g)}return e},\nS=(a,b)=>(a>>>=0)?ua(I,a,b):\"\",va=a=>{for(var b=0,c=0;c=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},T=(a,b,c,e)=>{c>>>=0;if(!(0=m){var q=a.charCodeAt(++h);m=65536+((m&1023)<<10)|q&1023}if(127>=m){if(c>=e)break;b[c++>>>0]=m}else{if(2047>=m){if(c+1>=e)break;b[c++>>>0]=192|m>>6}else{if(65535>=m){if(c+2>=e)break;b[c++>>>0]=224|m>>12}else{if(c+3>=\ne)break;b[c++>>>0]=240|m>>18;b[c++>>>0]=128|m>>12&63}b[c++>>>0]=128|m>>6&63}b[c++>>>0]=128|m&63}}b[c>>>0]=0;return c-g},U=a=>0===a%4&&(0!==a%100||0===a%400),za=[0,31,60,91,121,152,182,213,244,274,305,335],Aa=[0,31,59,90,120,151,181,212,243,273,304,334],V=[],W={},Ba=()=>{if(!X){var a={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(\"object\"==typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:v||\"./this.program\"},b;for(b in W)void 0===\nW[b]?delete a[b]:a[b]=W[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);X=c}return X},X,Ca=[null,[],[]],Da=[31,29,31,30,31,30,31,31,30,31,30,31],Ea=[31,28,31,30,31,30,31,31,30,31,30,31];function Fa(a){var b=Array(va(a)+1);T(a,b,0,b.length);return b}\nfunction Ga(a,b,c,e){function g(d,n,p){for(d=\"number\"==typeof d?d.toString():d||\"\";d.lengthwa?-1:0y-d.getDate())n-=y-d.getDate()+1,d.setDate(1),11>p?d.setMonth(p+1):(d.setMonth(0),d.setFullYear(d.getFullYear()+1));else{d.setDate(d.getDate()+n);break}}p=new Date(d.getFullYear()+1,0,4);n=q(new Date(d.getFullYear(),\n0,4));p=q(p);return 0>=m(n,d)?0>=m(p,d)?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}a>>>=0;b>>>=0;c>>>=0;e>>>=0;var r=K[e+40>>>2>>>0];e={Ba:J[e>>>2>>>0],Aa:J[e+4>>>2>>>0],ua:J[e+8>>>2>>>0],xa:J[e+12>>>2>>>0],va:J[e+16>>>2>>>0],ta:J[e+20>>>2>>>0],na:J[e+24>>>2>>>0],sa:J[e+28>>>2>>>0],Da:J[e+32>>>2>>>0],za:J[e+36>>>2>>>0],Ca:r?S(r):\"\"};c=S(c);r={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\n\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var t in r)c=c.replace(new RegExp(t,\"g\"),r[t]);var xa=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),ya=\"January February March April May June July August September October November December\".split(\" \");r={\"%a\":d=>xa[d.na].substring(0,3),\"%A\":d=>xa[d.na],\n\"%b\":d=>ya[d.va].substring(0,3),\"%B\":d=>ya[d.va],\"%C\":d=>h((d.ta+1900)/100|0,2),\"%d\":d=>h(d.xa,2),\"%e\":d=>g(d.xa,2,\" \"),\"%g\":d=>x(d).toString().substring(2),\"%G\":x,\"%H\":d=>h(d.ua,2),\"%I\":d=>{d=d.ua;0==d?d=12:12{for(var n=0,p=0;p<=d.va-1;n+=(U(d.ta+1900)?Da:Ea)[p++]);return h(d.xa+n,3)},\"%m\":d=>h(d.va+1,2),\"%M\":d=>h(d.Aa,2),\"%n\":()=>\"\\n\",\"%p\":d=>0<=d.ua&&12>d.ua?\"AM\":\"PM\",\"%S\":d=>h(d.Ba,2),\"%t\":()=>\"\\t\",\"%u\":d=>d.na||7,\"%U\":d=>h(Math.floor((d.sa+7-d.na)/7),2),\"%V\":d=>\n{var n=Math.floor((d.sa+7-(d.na+6)%7)/7);2>=(d.na+371-d.sa-2)%7&&n++;if(n)53==n&&(p=(d.na+371-d.sa)%7,4==p||3==p&&U(d.ta)||(n=1));else{n=52;var p=(d.na+7-d.sa-1)%7;(4==p||5==p&&U(d.ta%400-1))&&n++}return h(n,2)},\"%w\":d=>d.na,\"%W\":d=>h(Math.floor((d.sa+7-(d.na+6)%7)/7),2),\"%y\":d=>(d.ta+1900).toString().substring(2),\"%Y\":d=>d.ta+1900,\"%z\":d=>{d=d.za;var n=0<=d;d=Math.abs(d)/60;return(n?\"+\":\"-\")+String(\"0000\"+(d/60*100+d%60)).slice(-4)},\"%Z\":d=>d.Ca,\"%%\":()=>\"%\"};c=c.replace(/%%/g,\"\\x00\\x00\");for(t in r)c.includes(t)&&\n(c=c.replace(new RegExp(t,\"g\"),r[t](e)));c=c.replace(/\\0\\0/g,\"%\");t=Fa(c);if(t.length>b)return 0;H.set(t,a>>>0);return t.length-1}\nvar Ia={a:function(a,b,c){a>>>=0;var e=new qa(a);K[e.wa+16>>>2>>>0]=0;K[e.wa+4>>>2>>>0]=b>>>0;K[e.wa+8>>>2>>>0]=c>>>0;ra=a;sa++;throw ra;},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,I:function(a,b,c){b>>>=0;return I.copyWithin(a>>>0>>>0,b>>>0,b+(c>>>0)>>>0)},n:function(a,b,c){a=b+2097152>>>0<4194305-!!a?(a>>>0)+4294967296*b:\nNaN;c>>>=0;a=new Date(1E3*a);J[c>>>2>>>0]=a.getUTCSeconds();J[c+4>>>2>>>0]=a.getUTCMinutes();J[c+8>>>2>>>0]=a.getUTCHours();J[c+12>>>2>>>0]=a.getUTCDate();J[c+16>>>2>>>0]=a.getUTCMonth();J[c+20>>>2>>>0]=a.getUTCFullYear()-1900;J[c+24>>>2>>>0]=a.getUTCDay();J[c+28>>>2>>>0]=(a.getTime()-Date.UTC(a.getUTCFullYear(),0,1,0,0,0,0))/864E5|0},o:function(a,b,c){a=b+2097152>>>0<4194305-!!a?(a>>>0)+4294967296*b:NaN;c>>>=0;a=new Date(1E3*a);J[c>>>2>>>0]=a.getSeconds();J[c+4>>>2>>>0]=a.getMinutes();J[c+8>>>2>>>\n0]=a.getHours();J[c+12>>>2>>>0]=a.getDate();J[c+16>>>2>>>0]=a.getMonth();J[c+20>>>2>>>0]=a.getFullYear()-1900;J[c+24>>>2>>>0]=a.getDay();J[c+28>>>2>>>0]=(U(a.getFullYear())?za:Aa)[a.getMonth()]+a.getDate()-1|0;J[c+36>>>2>>>0]=-(60*a.getTimezoneOffset());b=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var e=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();J[c+32>>>2>>>0]=(b!=e&&a.getTimezoneOffset()==Math.min(e,b))|0},p:function(a){a>>>=0;var b=new Date(J[a+20>>>2>>>0]+1900,J[a+16>>>2>>>0],\nJ[a+12>>>2>>>0],J[a+8>>>2>>>0],J[a+4>>>2>>>0],J[a>>>2>>>0],0),c=J[a+32>>>2>>>0],e=b.getTimezoneOffset(),g=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),h=(new Date(b.getFullYear(),0,1)).getTimezoneOffset(),m=Math.min(h,g);0>c?J[a+32>>>2>>>0]=Number(g!=h&&m==e):0>>2>>>0]=b.getDay();J[a+28>>>2>>>0]=(U(b.getFullYear())?za:Aa)[b.getMonth()]+b.getDate()-1|0;J[a>>>2>>>0]=b.getSeconds();J[a+4>>>2>>>0]=b.getMinutes();J[a+\n8>>>2>>>0]=b.getHours();J[a+12>>>2>>>0]=b.getDate();J[a+16>>>2>>>0]=b.getMonth();J[a+20>>>2>>>0]=b.getYear();a=b.getTime();a=isNaN(a)?-1:a/1E3;Ha((R=a,1<=+Math.abs(R)?0>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0));return a>>>0},l:function(){return-52},m:function(){},t:function(a,b,c,e){c>>>=0;e>>>=0;var g=(new Date).getFullYear(),h=new Date(g,0,1),m=new Date(g,6,1);g=h.getTimezoneOffset();var q=m.getTimezoneOffset();K[a>>>0>>>2>>>0]=60*Math.max(g,q);J[b>>>0>>>2>>>\n0]=Number(g!=q);a=x=>x.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1];h=a(h);m=a(m);q{ia(\"\")},B:function(a,b,c){a>>>=0;b>>>=0;c>>>=0;V.length=0;for(var e;e=I[b++>>>0];){var g=105!=e;g&=112!=e;c+=g&&c%8?4:0;V.push(112==e?K[c>>>2>>>0]:105==e?J[c>>>2>>>0]:ea[c>>>3>>>0]);c+=g?8:4}return pa[a](...V)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),s:function(a){a>>>=0;var b=I.length;if(4294901760<\na)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,4294901760,e+(65536-e%65536)%65536)-G.buffer.byteLength+65535)/65536;try{G.grow(g);fa();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1},C:function(a,b){a>>>=0;b>>>=0;var c=0;Ba().forEach((e,g)=>{var h=b+c;g=K[a+4*g>>>2>>>0]=h;for(h=0;h>>0]=e.charCodeAt(h);H[g>>>0]=0;c+=e.length+1});return 0},D:function(a,b){a>>>=0;b>>>=0;var c=Ba();K[a>>>2>>>0]=\nc.length;var e=0;c.forEach(g=>e+=g.length+1);K[b>>>2>>>0]=e;return 0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(a,b,c,e){b>>>=0;c>>>=0;e>>>=0;for(var g=0,h=0;h>>2>>>0],q=K[b+4>>>2>>>0];b+=8;for(var x=0;x>>0],t=Ca[a];0===r||10===r?((1===a?ca:F)(ua(t,0)),t.length=0):t.push(r)}g+=q}K[e>>>2>>>0]=g;return 0},r:Ga,c:function(a,b,c,e){return Ga(a>>>0,b>>>0,c>>>0,e>>>0)}},Y=function(){function a(c){Y=c.exports;Y=Ja();G=Y.K;fa();M.unshift(Y.L);\nN--;0==N&&(null!==O&&(clearInterval(O),O=null),P&&(c=P,P=null,c()));return Y}var b={a:Ia};N++;if(f.instantiateWasm)try{return f.instantiateWasm(b,a)}catch(c){F(`Module.instantiateWasm callback failed with error: ${c}`),l(c)}oa(b,function(c){a(c.instance)}).catch(l);return{}}();f._OrtInit=(a,b)=>(f._OrtInit=Y.M)(a,b);f._OrtGetLastError=(a,b)=>(f._OrtGetLastError=Y.N)(a,b);f._OrtCreateSessionOptions=(a,b,c,e,g,h,m,q,x,r)=>(f._OrtCreateSessionOptions=Y.O)(a,b,c,e,g,h,m,q,x,r);\nf._OrtAppendExecutionProvider=(a,b)=>(f._OrtAppendExecutionProvider=Y.P)(a,b);f._OrtAddFreeDimensionOverride=(a,b,c)=>(f._OrtAddFreeDimensionOverride=Y.Q)(a,b,c);f._OrtAddSessionConfigEntry=(a,b,c)=>(f._OrtAddSessionConfigEntry=Y.R)(a,b,c);f._OrtReleaseSessionOptions=a=>(f._OrtReleaseSessionOptions=Y.S)(a);f._OrtCreateSession=(a,b,c)=>(f._OrtCreateSession=Y.T)(a,b,c);f._OrtReleaseSession=a=>(f._OrtReleaseSession=Y.U)(a);f._OrtGetInputOutputCount=(a,b,c)=>(f._OrtGetInputOutputCount=Y.V)(a,b,c);\nf._OrtGetInputName=(a,b)=>(f._OrtGetInputName=Y.W)(a,b);f._OrtGetOutputName=(a,b)=>(f._OrtGetOutputName=Y.X)(a,b);f._OrtFree=a=>(f._OrtFree=Y.Y)(a);f._OrtCreateTensor=(a,b,c,e,g,h)=>(f._OrtCreateTensor=Y.Z)(a,b,c,e,g,h);f._OrtGetTensorData=(a,b,c,e,g)=>(f._OrtGetTensorData=Y._)(a,b,c,e,g);f._OrtReleaseTensor=a=>(f._OrtReleaseTensor=Y.$)(a);f._OrtCreateRunOptions=(a,b,c,e)=>(f._OrtCreateRunOptions=Y.aa)(a,b,c,e);f._OrtAddRunConfigEntry=(a,b,c)=>(f._OrtAddRunConfigEntry=Y.ba)(a,b,c);\nf._OrtReleaseRunOptions=a=>(f._OrtReleaseRunOptions=Y.ca)(a);f._OrtCreateBinding=a=>(f._OrtCreateBinding=Y.da)(a);f._OrtBindInput=(a,b,c)=>(f._OrtBindInput=Y.ea)(a,b,c);f._OrtBindOutput=(a,b,c,e)=>(f._OrtBindOutput=Y.fa)(a,b,c,e);f._OrtClearBoundOutputs=a=>(f._OrtClearBoundOutputs=Y.ga)(a);f._OrtReleaseBinding=a=>(f._OrtReleaseBinding=Y.ha)(a);f._OrtRunWithBinding=(a,b,c,e,g)=>(f._OrtRunWithBinding=Y.ia)(a,b,c,e,g);f._OrtRun=(a,b,c,e,g,h,m,q)=>(f._OrtRun=Y.ja)(a,b,c,e,g,h,m,q);\nf._OrtEndProfiling=a=>(f._OrtEndProfiling=Y.ka)(a);f._malloc=a=>(f._malloc=Y.la)(a);f._free=a=>(f._free=Y.ma)(a);var Ha=a=>(Ha=Y.oa)(a),Ka=a=>(Ka=Y.pa)(a),La=a=>(La=Y.qa)(a),Ma=()=>(Ma=Y.ra)();function Ja(){var a=Y;a=Object.assign({},a);var b=c=>e=>c(e)>>>0;a.la=b(a.la);a.qa=b(a.qa);a.ra=(c=>()=>c()>>>0)(a.ra);return a}f.stackSave=()=>Ma();f.stackRestore=a=>Ka(a);f.stackAlloc=a=>La(a);f.UTF8ToString=S;f.stringToUTF8=(a,b,c)=>T(a,I,b,c);f.lengthBytesUTF8=va;var Z;P=function Na(){Z||Oa();Z||(P=Na)};\nfunction Oa(){if(!(0 ortWasm);\n",null,null,"export const cpus = undefined;","\nvar ortWasmThreaded = (() => {\n var _scriptDir = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n if (typeof __filename != 'undefined') _scriptDir ||= __filename;\n return (\nfunction(moduleArg = {}) {\n\nfunction aa(){e.buffer!=l.buffer&&m();return l}function n(){e.buffer!=l.buffer&&m();return ba}function p(){e.buffer!=l.buffer&&m();return ca}function r(){e.buffer!=l.buffer&&m();return da}function ea(){e.buffer!=l.buffer&&m();return fa}\nvar v=moduleArg,ha,x,readyPromise=new Promise((a,b)=>{ha=a;x=b}),ia=Object.assign({},v),ja=\"./this.program\",z=(a,b)=>{throw b;},ka=\"object\"==typeof window,A=\"function\"==typeof importScripts,B=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node,D=v.ENVIRONMENT_IS_PTHREAD||!1,E=\"\";function la(a){return v.locateFile?v.locateFile(a,E):E+a}var ma,G,H;\nif(B){var fs=require(\"fs\"),na=require(\"path\");E=A?na.dirname(E)+\"/\":__dirname+\"/\";ma=(a,b)=>{a=I(a)?new URL(a):na.normalize(a);return fs.readFileSync(a,b?void 0:\"utf8\")};H=a=>{a=ma(a,!0);a.buffer||(a=new Uint8Array(a));return a};G=(a,b,c,d=!0)=>{a=I(a)?new URL(a):na.normalize(a);fs.readFile(a,d?void 0:\"utf8\",(h,g)=>{h?c(h):b(d?g.buffer:g)})};!v.thisProgram&&1{process.exitCode=a;throw b;};global.Worker=require(\"worker_threads\").Worker}else if(ka||\nA)A?E=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(E=document.currentScript.src),(typeof _scriptDir !== \"undefined\" && _scriptDir)&&(E=_scriptDir),E.startsWith(\"blob:\")?E=\"\":E=E.substr(0,E.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),B||(ma=a=>{var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.send(null);return b.responseText},A&&(H=a=>{var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.responseType=\"arraybuffer\";b.send(null);return new Uint8Array(b.response)}),G=(a,b,c)=>{var d=new XMLHttpRequest;d.open(\"GET\",a,!0);d.responseType=\n\"arraybuffer\";d.onload=()=>{200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)});B&&\"undefined\"==typeof performance&&(global.performance=require(\"perf_hooks\").performance);var oa=console.log.bind(console),pa=console.error.bind(console);B&&(oa=(...a)=>fs.writeSync(1,a.join(\" \")+\"\\n\"),pa=(...a)=>fs.writeSync(2,a.join(\" \")+\"\\n\"));var qa=oa,J=pa;Object.assign(v,ia);ia=null;var e,ra,K=!1,L,l,ba,ca,da,fa;\nfunction m(){var a=e.buffer;v.HEAP8=l=new Int8Array(a);v.HEAP16=new Int16Array(a);v.HEAPU8=ba=new Uint8Array(a);v.HEAPU16=new Uint16Array(a);v.HEAP32=ca=new Int32Array(a);v.HEAPU32=da=new Uint32Array(a);v.HEAPF32=new Float32Array(a);v.HEAPF64=fa=new Float64Array(a)}var sa=16777216;\nif(D)e=v.wasmMemory;else if(v.wasmMemory)e=v.wasmMemory;else if(e=new WebAssembly.Memory({initial:sa/65536,maximum:65536,shared:!0}),!(e.buffer instanceof SharedArrayBuffer))throw J(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),B&&J(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),\nError(\"bad memory\");m();sa=e.buffer.byteLength;var ta=[],ua=[],va=[],M=0,wa=null,N=null;function xa(){M--;if(0==M&&(null!==wa&&(clearInterval(wa),wa=null),N)){var a=N;N=null;a()}}function ya(a){a=\"Aborted(\"+a+\")\";J(a);K=!0;L=1;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");x(a);throw a;}var za=a=>a.startsWith(\"data:application/octet-stream;base64,\"),I=a=>a.startsWith(\"file://\"),O;O=\"ort-wasm-threaded.wasm\";za(O)||(O=la(O));\nfunction Aa(a){if(H)return H(a);throw\"both async and sync fetching of the wasm failed\";}function Ba(a){if(ka||A){if(\"function\"==typeof fetch&&!I(a))return fetch(a,{credentials:\"same-origin\"}).then(b=>{if(!b.ok)throw`failed to load wasm binary file at '${a}'`;return b.arrayBuffer()}).catch(()=>Aa(a));if(G)return new Promise((b,c)=>{G(a,d=>b(new Uint8Array(d)),c)})}return Promise.resolve().then(()=>Aa(a))}\nfunction Ca(a,b,c){return Ba(a).then(d=>WebAssembly.instantiate(d,b)).then(c,d=>{J(`failed to asynchronously prepare wasm: ${d}`);ya(d)})}function Da(a,b){var c=O;return\"function\"!=typeof WebAssembly.instantiateStreaming||za(c)||I(c)||B||\"function\"!=typeof fetch?Ca(c,a,b):fetch(c,{credentials:\"same-origin\"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(h){J(`wasm streaming compile failed: ${h}`);J(\"falling back to ArrayBuffer instantiation\");return Ca(c,a,b)}))}\nvar P,Ea={799444:(a,b,c,d)=>{if(\"undefined\"==typeof v||!v.bb)return 1;a=Q(a>>>0);a.startsWith(\"./\")&&(a=a.substring(2));a=v.bb.get(a);if(!a)return 2;b>>>=0;c>>>=0;d>>>=0;if(b+c>a.byteLength)return 3;try{return n().set(a.subarray(b,b+c),d>>>0),0}catch{return 4}}};function R(a){this.name=\"ExitStatus\";this.message=`Program terminated with exit(${a})`;this.status=a}\nvar Fa=a=>{a.terminate();a.onmessage=()=>{}},Ha=a=>{0==S.Oa.length&&(Ga(),S.Xa(S.Oa[0]));var b=S.Oa.pop();if(!b)return 6;S.Pa.push(b);S.La[a.Na]=b;b.Na=a.Na;var c={cmd:\"run\",start_routine:a.gb,arg:a.cb,pthread_ptr:a.Na};B&&b.unref();b.postMessage(c,a.mb);return 0},T=0,Ja=a=>{var b=Ia();a=a();U(b);return a},V=(a,b,...c)=>Ja(()=>{for(var d=c.length,h=Ka(8*d),g=h>>>3,k=0;k>>0]=t}return La(a,0,d,h,b)});\nfunction Ma(a){if(D)return V(0,1,a);L=a;0{L=a;if(D)throw Na(a),\"unwind\";Ma(a)};function Pa(){for(var a=v.numThreads;a--;)Ga();ta.unshift(()=>{M++;Qa(()=>xa())})}function Ga(){var a=la(\"ort-wasm-threaded.worker.js\");a=new Worker(a);S.Oa.push(a)}function Qa(a){D?a():Promise.all(S.Oa.map(S.Xa)).then(a)}\nvar S={Oa:[],Pa:[],ab:[],La:{},Va(){D?(S.receiveObjectTransfer=S.fb,S.threadInitTLS=S.$a,S.setExitStatus=S.Za):Pa()},Za:a=>L=a,pb:[\"$terminateWorker\"],hb:()=>{for(var a of S.Pa)Fa(a);for(a of S.Oa)Fa(a);S.Oa=[];S.Pa=[];S.La=[]},Ya:a=>{var b=a.Na;delete S.La[b];S.Oa.push(a);S.Pa.splice(S.Pa.indexOf(a),1);a.Na=0;Ra(b)},fb(){},$a(){S.ab.forEach(a=>a())},Xa:a=>new Promise(b=>{a.onmessage=g=>{g=g.data;var k=g.cmd;if(g.targetThread&&g.targetThread!=W()){var t=S.La[g.targetThread];t?t.postMessage(g,g.transferList):\nJ(`Internal error! Worker sent a message \"${k}\" to target pthread ${g.targetThread}, but that thread no longer exists!`)}else if(\"checkMailbox\"===k)Sa();else if(\"spawnThread\"===k)Ha(g);else if(\"cleanupThread\"===k)S.Ya(S.La[g.thread]);else if(\"killThread\"===k)g=g.thread,k=S.La[g],delete S.La[g],Fa(k),Ra(g),S.Pa.splice(S.Pa.indexOf(k),1),k.Na=0;else if(\"cancelThread\"===k)S.La[g.thread].postMessage({cmd:\"cancel\"});else if(\"loaded\"===k)a.loaded=!0,B&&!a.Na&&a.unref(),b(a);else if(\"alert\"===k)alert(`Thread ${g.threadId}: ${g.text}`);\nelse if(\"setimmediate\"===g.target)a.postMessage(g);else if(\"callHandler\"===k)v[g.handler](...g.args);else k&&J(`worker sent an unknown command ${k}`)};a.onerror=g=>{J(`${\"worker sent an error!\"} ${g.filename}:${g.lineno}: ${g.message}`);throw g;};B&&(a.on(\"message\",g=>a.onmessage({data:g})),a.on(\"error\",g=>a.onerror(g)));var c=[],d=[\"onExit\"],h;for(h of d)v.hasOwnProperty(h)&&c.push(h);a.postMessage({cmd:\"load\",handlers:c,urlOrBlob:v.mainScriptUrlOrBlob||_scriptDir,wasmMemory:e,wasmModule:ra})})};\nv.PThread=S;var Ta=a=>{for(;0{var a=W(),b=r()[a+52>>>2>>>0];a=r()[a+56>>>2>>>0];Ua(b,b-a);U(b)};function Na(a){if(D)return V(1,0,a);Oa(a)}var Va=[],Wa;v.invokeEntryPoint=(a,b)=>{T=0;var c=Va[a];c||(a>=Va.length&&(Va.length=a+1),Va[a]=c=Wa.get(a));a=c(b);0>>2>>>0]=0;r()[this.Ua+4>>>2>>>0]=a;r()[this.Ua+8>>>2>>>0]=b}}var Za=0,$a=0;\nfunction ab(a,b,c,d){return D?V(2,1,a,b,c,d):bb(a,b,c,d)}function bb(a,b,c,d){a>>>=0;b>>>=0;c>>>=0;d>>>=0;if(\"undefined\"==typeof SharedArrayBuffer)return J(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var h=[];if(D&&0===h.length)return ab(a,b,c,d);a={gb:c,Na:a,cb:d,mb:h};return D?(a.ob=\"spawnThread\",postMessage(a,h),0):Ha(a)}\nvar cb=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0,db=(a,b,c)=>{b>>>=0;var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16h?d+=String.fromCharCode(h):(h-=65536,d+=String.fromCharCode(55296|h>>\n10,56320|h&1023))}}else d+=String.fromCharCode(h)}return d},Q=(a,b)=>(a>>>=0)?db(n(),a,b):\"\";function eb(a,b,c){return D?V(3,1,a,b,c):0}function fb(a,b){if(D)return V(4,1,a,b)}\nvar gb=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},hb=(a,b,c,d)=>{c>>>=0;if(!(0=k){var t=a.charCodeAt(++g);k=65536+((k&1023)<<10)|t&1023}if(127>=k){if(c>=d)break;b[c++>>>0]=k}else{if(2047>=k){if(c+1>=d)break;b[c++>>>0]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++>>>0]=224|k>>12}else{if(c+3>=d)break;b[c++>>>0]=240|k>>\n18;b[c++>>>0]=128|k>>12&63}b[c++>>>0]=128|k>>6&63}b[c++>>>0]=128|k&63}}b[c>>>0]=0;return c-h},X=(a,b,c)=>hb(a,n(),b,c);function ib(a,b){if(D)return V(5,1,a,b)}function jb(a,b,c){if(D)return V(6,1,a,b,c)}function kb(a,b,c){return D?V(7,1,a,b,c):0}function lb(a,b){if(D)return V(8,1,a,b)}function mb(a,b,c){if(D)return V(9,1,a,b,c)}function nb(a,b,c,d){if(D)return V(10,1,a,b,c,d)}function ob(a,b,c,d){if(D)return V(11,1,a,b,c,d)}function pb(a,b,c,d){if(D)return V(12,1,a,b,c,d)}\nfunction qb(a){if(D)return V(13,1,a)}function rb(a,b){if(D)return V(14,1,a,b)}function sb(a,b,c){if(D)return V(15,1,a,b,c)}function tb(a){a>>>=0;\"function\"===typeof Atomics.nb&&(Atomics.nb(p(),a>>>2,a).value.then(Sa),a+=128,Atomics.store(p(),a>>>2,1))}v.__emscripten_thread_mailbox_await=tb;var Sa=()=>{var a=W();if(a&&(tb(a),a=ub,!K))try{if(a(),!(00===a%4&&(0!==a%100||0===a%400),wb=[0,31,60,91,121,152,182,213,244,274,305,335],xb=[0,31,59,90,120,151,181,212,243,273,304,334];function yb(a,b,c,d,h,g,k,t){return D?V(16,1,a,b,c,d,h,g,k,t):-52}function zb(a,b,c,d,h,g,k){if(D)return V(17,1,a,b,c,d,h,g,k)}\nvar Ab=[],Bb={},Db=()=>{if(!Cb){var a={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(\"object\"==typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:ja||\"./this.program\"},b;for(b in Bb)void 0===Bb[b]?delete a[b]:a[b]=Bb[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Cb=c}return Cb},Cb;\nfunction Eb(a,b){if(D)return V(18,1,a,b);a>>>=0;b>>>=0;var c=0;Db().forEach((d,h)=>{var g=b+c;h=r()[a+4*h>>>2>>>0]=g;for(g=0;g>>0]=d.charCodeAt(g);aa()[h>>>0]=0;c+=d.length+1});return 0}function Ib(a,b){if(D)return V(19,1,a,b);a>>>=0;b>>>=0;var c=Db();r()[a>>>2>>>0]=c.length;var d=0;c.forEach(h=>d+=h.length+1);r()[b>>>2>>>0]=d;return 0}function Jb(a){return D?V(20,1,a):52}function Kb(a,b,c,d){return D?V(21,1,a,b,c,d):52}function Lb(a,b,c,d,h){return D?V(22,1,a,b,c,d,h):70}\nvar Mb=[null,[],[]];function Nb(a,b,c,d){if(D)return V(23,1,a,b,c,d);b>>>=0;c>>>=0;d>>>=0;for(var h=0,g=0;g>>2>>>0],t=r()[b+4>>>2>>>0];b+=8;for(var C=0;C>>0],y=Mb[a];0===w||10===w?((1===a?qa:J)(db(y,0)),y.length=0):y.push(w)}h+=t}r()[d>>>2>>>0]=h;return 0}var Ob=[31,29,31,30,31,30,31,31,30,31,30,31],Pb=[31,28,31,30,31,30,31,31,30,31,30,31];function Qb(a){var b=Array(gb(a)+1);hb(a,b,0,b.length);return b}var Rb=(a,b)=>{aa().set(a,b>>>0)};\nfunction Sb(a,b,c,d){function h(f,q,u){for(f=\"number\"==typeof f?f.toString():f||\"\";f.lengthFb?-1:0F-f.getDate())q-=F-f.getDate()+1,f.setDate(1),11>u?f.setMonth(u+1):(f.setMonth(0),f.setFullYear(f.getFullYear()+1));else{f.setDate(f.getDate()+q);break}}u=new Date(f.getFullYear()+1,0,4);q=t(new Date(f.getFullYear(),\n0,4));u=t(u);return 0>=k(q,f)?0>=k(u,f)?f.getFullYear()+1:f.getFullYear():f.getFullYear()-1}a>>>=0;b>>>=0;c>>>=0;d>>>=0;var w=r()[d+40>>>2>>>0];d={kb:p()[d>>>2>>>0],jb:p()[d+4>>>2>>>0],Sa:p()[d+8>>>2>>>0],Wa:p()[d+12>>>2>>>0],Ta:p()[d+16>>>2>>>0],Ra:p()[d+20>>>2>>>0],Ma:p()[d+24>>>2>>>0],Qa:p()[d+28>>>2>>>0],qb:p()[d+32>>>2>>>0],ib:p()[d+36>>>2>>>0],lb:w?Q(w):\"\"};c=Q(c);w={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\n\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var y in w)c=c.replace(new RegExp(y,\"g\"),w[y]);var Gb=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Hb=\"January February March April May June July August September October November December\".split(\" \");w={\"%a\":f=>Gb[f.Ma].substring(0,3),\n\"%A\":f=>Gb[f.Ma],\"%b\":f=>Hb[f.Ta].substring(0,3),\"%B\":f=>Hb[f.Ta],\"%C\":f=>g((f.Ra+1900)/100|0,2),\"%d\":f=>g(f.Wa,2),\"%e\":f=>h(f.Wa,2,\" \"),\"%g\":f=>C(f).toString().substring(2),\"%G\":C,\"%H\":f=>g(f.Sa,2),\"%I\":f=>{f=f.Sa;0==f?f=12:12{for(var q=0,u=0;u<=f.Ta-1;q+=(Y(f.Ra+1900)?Ob:Pb)[u++]);return g(f.Wa+q,3)},\"%m\":f=>g(f.Ta+1,2),\"%M\":f=>g(f.jb,2),\"%n\":()=>\"\\n\",\"%p\":f=>0<=f.Sa&&12>f.Sa?\"AM\":\"PM\",\"%S\":f=>g(f.kb,2),\"%t\":()=>\"\\t\",\"%u\":f=>f.Ma||7,\"%U\":f=>g(Math.floor((f.Qa+\n7-f.Ma)/7),2),\"%V\":f=>{var q=Math.floor((f.Qa+7-(f.Ma+6)%7)/7);2>=(f.Ma+371-f.Qa-2)%7&&q++;if(q)53==q&&(u=(f.Ma+371-f.Qa)%7,4==u||3==u&&Y(f.Ra)||(q=1));else{q=52;var u=(f.Ma+7-f.Qa-1)%7;(4==u||5==u&&Y(f.Ra%400-1))&&q++}return g(q,2)},\"%w\":f=>f.Ma,\"%W\":f=>g(Math.floor((f.Qa+7-(f.Ma+6)%7)/7),2),\"%y\":f=>(f.Ra+1900).toString().substring(2),\"%Y\":f=>f.Ra+1900,\"%z\":f=>{f=f.ib;var q=0<=f;f=Math.abs(f)/60;return(q?\"+\":\"-\")+String(\"0000\"+(f/60*100+f%60)).slice(-4)},\"%Z\":f=>f.lb,\"%%\":()=>\"%\"};c=c.replace(/%%/g,\n\"\\x00\\x00\");for(y in w)c.includes(y)&&(c=c.replace(new RegExp(y,\"g\"),w[y](d)));c=c.replace(/\\0\\0/g,\"%\");y=Qb(c);if(y.length>b)return 0;Rb(y,a);return y.length-1}S.Va();\nvar Tb=[Ma,Na,ab,eb,fb,ib,jb,kb,lb,mb,nb,ob,pb,qb,rb,sb,yb,zb,Eb,Ib,Jb,Kb,Lb,Nb],Wb={b:function(a,b,c){a>>>=0;(new Ya(a)).Va(b>>>0,c>>>0);Za=a;$a++;throw Za;},L:function(a){Ub(a>>>0,!A,1,!ka,131072,!1);S.$a()},j:function(a){a>>>=0;D?postMessage({cmd:\"cleanupThread\",thread:a}):S.Ya(S.La[a])},H:bb,h:eb,S:fb,D:ib,F:jb,T:kb,Q:lb,J:mb,P:nb,n:ob,E:pb,B:qb,R:rb,C:sb,p:()=>1,z:function(a,b){a>>>=0;a==b>>>0?setTimeout(Sa):D?postMessage({targetThread:a,cmd:\"checkMailbox\"}):(a=S.La[a])&&a.postMessage({cmd:\"checkMailbox\"})},\nI:function(a,b,c,d,h){b>>>=0;c>>>=0;vb.length=d;h=h>>>0>>>3;for(var g=0;g>>0];a=b?Ea[b]:Tb[a];S.eb=c;c=a(...vb);S.eb=0;return c},K:tb,o:function(a){B&&S.La[a>>>0].ref()},s:function(a,b,c){a=b+2097152>>>0<4194305-!!a?(a>>>0)+4294967296*b:NaN;c>>>=0;a=new Date(1E3*a);p()[c>>>2>>>0]=a.getUTCSeconds();p()[c+4>>>2>>>0]=a.getUTCMinutes();p()[c+8>>>2>>>0]=a.getUTCHours();p()[c+12>>>2>>>0]=a.getUTCDate();p()[c+16>>>2>>>0]=a.getUTCMonth();p()[c+20>>>2>>>0]=a.getUTCFullYear()-1900;p()[c+\n24>>>2>>>0]=a.getUTCDay();a=(a.getTime()-Date.UTC(a.getUTCFullYear(),0,1,0,0,0,0))/864E5|0;p()[c+28>>>2>>>0]=a},t:function(a,b,c){a=b+2097152>>>0<4194305-!!a?(a>>>0)+4294967296*b:NaN;c>>>=0;a=new Date(1E3*a);p()[c>>>2>>>0]=a.getSeconds();p()[c+4>>>2>>>0]=a.getMinutes();p()[c+8>>>2>>>0]=a.getHours();p()[c+12>>>2>>>0]=a.getDate();p()[c+16>>>2>>>0]=a.getMonth();p()[c+20>>>2>>>0]=a.getFullYear()-1900;p()[c+24>>>2>>>0]=a.getDay();b=(Y(a.getFullYear())?wb:xb)[a.getMonth()]+a.getDate()-1|0;p()[c+28>>>2>>>\n0]=b;p()[c+36>>>2>>>0]=-(60*a.getTimezoneOffset());b=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var d=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();a=(b!=d&&a.getTimezoneOffset()==Math.min(d,b))|0;p()[c+32>>>2>>>0]=a},u:function(a){a>>>=0;var b=new Date(p()[a+20>>>2>>>0]+1900,p()[a+16>>>2>>>0],p()[a+12>>>2>>>0],p()[a+8>>>2>>>0],p()[a+4>>>2>>>0],p()[a>>>2>>>0],0),c=p()[a+32>>>2>>>0],d=b.getTimezoneOffset(),h=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),g=(new Date(b.getFullYear(),\n0,1)).getTimezoneOffset(),k=Math.min(g,h);0>c?p()[a+32>>>2>>>0]=Number(h!=g&&k==d):0>>2>>>0]=b.getDay();c=(Y(b.getFullYear())?wb:xb)[b.getMonth()]+b.getDate()-1|0;p()[a+28>>>2>>>0]=c;p()[a>>>2>>>0]=b.getSeconds();p()[a+4>>>2>>>0]=b.getMinutes();p()[a+8>>>2>>>0]=b.getHours();p()[a+12>>>2>>>0]=b.getDate();p()[a+16>>>2>>>0]=b.getMonth();p()[a+20>>>2>>>0]=b.getYear();a=b.getTime();a=isNaN(a)?-1:a/1E3;Vb((P=a,1<=+Math.abs(P)?\n0>>0:~~+Math.ceil((P-+(~~P>>>0))/4294967296)>>>0:0));return a>>>0},q:yb,r:zb,y:function(a,b,c,d){a>>>=0;b>>>=0;c>>>=0;d>>>=0;var h=(new Date).getFullYear(),g=new Date(h,0,1),k=new Date(h,6,1);h=g.getTimezoneOffset();var t=k.getTimezoneOffset(),C=Math.max(h,t);r()[a>>>2>>>0]=60*C;p()[b>>>2>>>0]=Number(h!=t);a=w=>w.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1];g=a(g);k=a(k);t{ya(\"\")},O:function(a,\nb,c){a>>>=0;b>>>=0;c>>>=0;Ab.length=0;for(var d;d=n()[b++>>>0];){var h=105!=d;h&=112!=d;c+=h&&c%8?4:0;Ab.push(112==d?r()[c>>>2>>>0]:105==d?p()[c>>>2>>>0]:ea()[c>>>3>>>0]);c+=h?8:4}return Ea[a](...Ab)},k:()=>{},i:()=>Date.now(),U:()=>{T+=1;throw\"unwind\";},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>B?require(\"os\").cpus().length:navigator.hardwareConcurrency,x:function(a){a>>>=0;var b=n().length;if(a<=b||4294901760=c;c*=2){var d=b*(1+\n.2/c);d=Math.min(d,a+100663296);var h=Math;d=Math.max(a,d);a:{h=(h.min.call(h,4294901760,d+(65536-d%65536)%65536)-e.buffer.byteLength+65535)/65536;try{e.grow(h);m();var g=1;break a}catch(k){}g=void 0}if(g)return!0}return!1},M:Eb,N:Ib,G:Oa,g:Jb,m:Kb,v:Lb,l:Nb,a:e||v.wasmMemory,w:Sb,d:function(a,b,c,d){return Sb(a>>>0,b>>>0,c>>>0,d>>>0)}},Z=function(){function a(c,d){Z=c.exports;Z=Xb();S.ab.push(Z.ya);Wa=Z.za;ua.unshift(Z.V);ra=d;xa();return Z}var b={a:Wb};M++;if(v.instantiateWasm)try{return v.instantiateWasm(b,\na)}catch(c){J(`Module.instantiateWasm callback failed with error: ${c}`),x(c)}Da(b,function(c){a(c.instance,c.module)}).catch(x);return{}}();v._OrtInit=(a,b)=>(v._OrtInit=Z.W)(a,b);v._OrtGetLastError=(a,b)=>(v._OrtGetLastError=Z.X)(a,b);v._OrtCreateSessionOptions=(a,b,c,d,h,g,k,t,C,w)=>(v._OrtCreateSessionOptions=Z.Y)(a,b,c,d,h,g,k,t,C,w);v._OrtAppendExecutionProvider=(a,b)=>(v._OrtAppendExecutionProvider=Z.Z)(a,b);v._OrtAddFreeDimensionOverride=(a,b,c)=>(v._OrtAddFreeDimensionOverride=Z._)(a,b,c);\nv._OrtAddSessionConfigEntry=(a,b,c)=>(v._OrtAddSessionConfigEntry=Z.$)(a,b,c);v._OrtReleaseSessionOptions=a=>(v._OrtReleaseSessionOptions=Z.aa)(a);v._OrtCreateSession=(a,b,c)=>(v._OrtCreateSession=Z.ba)(a,b,c);v._OrtReleaseSession=a=>(v._OrtReleaseSession=Z.ca)(a);v._OrtGetInputOutputCount=(a,b,c)=>(v._OrtGetInputOutputCount=Z.da)(a,b,c);v._OrtGetInputName=(a,b)=>(v._OrtGetInputName=Z.ea)(a,b);v._OrtGetOutputName=(a,b)=>(v._OrtGetOutputName=Z.fa)(a,b);v._OrtFree=a=>(v._OrtFree=Z.ga)(a);\nv._OrtCreateTensor=(a,b,c,d,h,g)=>(v._OrtCreateTensor=Z.ha)(a,b,c,d,h,g);v._OrtGetTensorData=(a,b,c,d,h)=>(v._OrtGetTensorData=Z.ia)(a,b,c,d,h);v._OrtReleaseTensor=a=>(v._OrtReleaseTensor=Z.ja)(a);v._OrtCreateRunOptions=(a,b,c,d)=>(v._OrtCreateRunOptions=Z.ka)(a,b,c,d);v._OrtAddRunConfigEntry=(a,b,c)=>(v._OrtAddRunConfigEntry=Z.la)(a,b,c);v._OrtReleaseRunOptions=a=>(v._OrtReleaseRunOptions=Z.ma)(a);v._OrtCreateBinding=a=>(v._OrtCreateBinding=Z.na)(a);\nv._OrtBindInput=(a,b,c)=>(v._OrtBindInput=Z.oa)(a,b,c);v._OrtBindOutput=(a,b,c,d)=>(v._OrtBindOutput=Z.pa)(a,b,c,d);v._OrtClearBoundOutputs=a=>(v._OrtClearBoundOutputs=Z.qa)(a);v._OrtReleaseBinding=a=>(v._OrtReleaseBinding=Z.ra)(a);v._OrtRunWithBinding=(a,b,c,d,h)=>(v._OrtRunWithBinding=Z.sa)(a,b,c,d,h);v._OrtRun=(a,b,c,d,h,g,k,t)=>(v._OrtRun=Z.ta)(a,b,c,d,h,g,k,t);v._OrtEndProfiling=a=>(v._OrtEndProfiling=Z.ua)(a);var W=v._pthread_self=()=>(W=v._pthread_self=Z.va)();v._malloc=a=>(v._malloc=Z.wa)(a);\nv._free=a=>(v._free=Z.xa)(a);v.__emscripten_tls_init=()=>(v.__emscripten_tls_init=Z.ya)();var Ub=v.__emscripten_thread_init=(a,b,c,d,h,g)=>(Ub=v.__emscripten_thread_init=Z.Aa)(a,b,c,d,h,g);v.__emscripten_thread_crashed=()=>(v.__emscripten_thread_crashed=Z.Ba)();\nvar La=(a,b,c,d,h)=>(La=Z.Ca)(a,b,c,d,h),Ra=a=>(Ra=Z.Da)(a),Xa=v.__emscripten_thread_exit=a=>(Xa=v.__emscripten_thread_exit=Z.Ea)(a),ub=()=>(ub=Z.Fa)(),Vb=a=>(Vb=Z.Ga)(a),Ua=(a,b)=>(Ua=Z.Ha)(a,b),U=a=>(U=Z.Ia)(a),Ka=a=>(Ka=Z.Ja)(a),Ia=()=>(Ia=Z.Ka)();function Xb(){var a=Z;a=Object.assign({},a);var b=d=>()=>d()>>>0,c=d=>h=>d(h)>>>0;a.va=b(a.va);a.wa=c(a.wa);a.emscripten_main_runtime_thread_id=b(a.emscripten_main_runtime_thread_id);a.Ja=c(a.Ja);a.Ka=b(a.Ka);return a}v.wasmMemory=e;v.stackSave=()=>Ia();\nv.stackRestore=a=>U(a);v.stackAlloc=a=>Ka(a);v.keepRuntimeAlive=()=>0 ortWasmThreaded);\n","\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(...e){var a=e.join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,a+`\n`);return}console.error(a)}function threadAlert(...e){var a=e.join(\" \");postMessage({cmd:\"alert\",text:a,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,a)=>{var r=Module.wasmModule;Module.wasmModule=null;var t=new WebAssembly.Instance(r,e);return a(t)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let r=[];self.onmessage=t=>r.push(t),self.startWorker=t=>{Module=t,postMessage({cmd:\"loaded\"});for(let s of r)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const t of e.data.handlers)Module[t]=(...s)=>{postMessage({cmd:\"callHandler\",handler:t,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var a=URL.createObjectURL(e.data.urlOrBlob);importScripts(a),URL.revokeObjectURL(a)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(r){if(r!=\"unwind\")throw r}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(r){throw Module.__emscripten_thread_crashed?.(),r}}self.onmessage=handleMessage;\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport * as path from 'node:path';\nimport {Env} from 'onnxruntime-common';\n\nimport {OrtWasmModule} from './binding/ort-wasm';\nimport {OrtWasmThreadedModule} from './binding/ort-wasm-threaded';\n\n/* eslint-disable @typescript-eslint/no-require-imports */\nlet ortWasmFactory: EmscriptenModuleFactory;\n\nif (!BUILD_DEFS.DISABLE_TRAINING) {\n ortWasmFactory = require('./binding/ort-training-wasm-simd.js');\n} else {\n ortWasmFactory =\n BUILD_DEFS.DISABLE_WEBGPU ? require('./binding/ort-wasm.js') : require('./binding/ort-wasm-simd.jsep.js');\n}\n\nconst ortWasmFactoryThreaded: EmscriptenModuleFactory = !BUILD_DEFS.DISABLE_WASM_THREAD ?\n (BUILD_DEFS.DISABLE_WEBGPU ? require('./binding/ort-wasm-threaded.js') :\n require('./binding/ort-wasm-simd-threaded.jsep.js')) :\n ortWasmFactory;\n/* eslint-enable @typescript-eslint/no-require-imports */\n\nlet wasm: OrtWasmModule|undefined;\nlet initialized = false;\nlet initializing = false;\nlet aborted = false;\n\nconst isMultiThreadSupported = (numThreads: number): boolean => {\n // WebAssembly threads are set to 1 (single thread).\n if (numThreads === 1) {\n return false;\n }\n\n // If 'SharedArrayBuffer' is not available, WebAssembly threads will not work.\n if (typeof SharedArrayBuffer === 'undefined') {\n if (typeof self !== 'undefined' && !self.crossOriginIsolated) {\n // eslint-disable-next-line no-console\n console.warn(\n 'env.wasm.numThreads is set to ' + numThreads +\n ', but this will not work unless you enable crossOriginIsolated mode. ' +\n 'See https://web.dev/cross-origin-isolation-guide/ for more info.');\n }\n return false;\n }\n\n // onnxruntime-web does not support multi-threads in Node.js.\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // eslint-disable-next-line no-console\n console.warn(\n 'env.wasm.numThreads is set to ' + numThreads +\n ', however, currently onnxruntime-web does not support multi-threads in Node.js. ' +\n 'Please consider using onnxruntime-node for performance critical scenarios.');\n }\n\n try {\n // Test for transferability of SABs (for browsers. needed for Firefox)\n // https://groups.google.com/forum/#!msg/mozilla.dev.platform/IHkBZlHETpA/dwsMNchWEQAJ\n if (typeof MessageChannel !== 'undefined') {\n new MessageChannel().port1.postMessage(new SharedArrayBuffer(1));\n }\n\n // Test for WebAssembly threads capability (for both browsers and Node.js)\n // This typed array is a WebAssembly program containing threaded instructions.\n return WebAssembly.validate(new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 5,\n 4, 1, 3, 1, 1, 10, 11, 1, 9, 0, 65, 0, 254, 16, 2, 0, 26, 11\n ]));\n } catch (e) {\n return false;\n }\n};\n\nconst isSimdSupported = (): boolean => {\n try {\n // Test for WebAssembly SIMD capability (for both browsers and Node.js)\n // This typed array is a WebAssembly program containing SIMD instructions.\n\n // The binary data is generated from the following code by wat2wasm:\n //\n // (module\n // (type $t0 (func))\n // (func $f0 (type $t0)\n // (drop\n // (i32x4.dot_i16x8_s\n // (i8x16.splat\n // (i32.const 0))\n // (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)))))\n\n return WebAssembly.validate(new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 30, 1, 28, 0, 65, 0,\n 253, 15, 253, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 186, 1, 26, 11\n ]));\n } catch (e) {\n return false;\n }\n};\n\nconst getWasmFileName = (useSimd: boolean, useThreads: boolean) => {\n if (useSimd) {\n if (!BUILD_DEFS.DISABLE_TRAINING) {\n return 'ort-training-wasm-simd.wasm';\n }\n return useThreads ? 'ort-wasm-simd-threaded.wasm' : 'ort-wasm-simd.wasm';\n } else {\n return useThreads ? 'ort-wasm-threaded.wasm' : 'ort-wasm.wasm';\n }\n};\n\nexport const initializeWebAssembly = async(flags: Env.WebAssemblyFlags): Promise => {\n if (initialized) {\n return Promise.resolve();\n }\n if (initializing) {\n throw new Error('multiple calls to \\'initializeWebAssembly()\\' detected.');\n }\n if (aborted) {\n throw new Error('previous call to \\'initializeWebAssembly()\\' failed.');\n }\n\n initializing = true;\n\n // wasm flags are already initialized\n const timeout = flags.initTimeout!;\n const numThreads = flags.numThreads!;\n const simd = flags.simd!;\n\n const useThreads = isMultiThreadSupported(numThreads);\n const useSimd = simd && isSimdSupported();\n\n const wasmPaths = flags.wasmPaths;\n const wasmPrefixOverride = typeof wasmPaths === 'string' ? wasmPaths : undefined;\n const wasmFileName = getWasmFileName(useSimd, useThreads);\n const wasmPathOverride = typeof wasmPaths === 'object' ? wasmPaths[wasmFileName] : undefined;\n\n let isTimeout = false;\n\n const tasks: Array> = [];\n\n // promise for timeout\n if (timeout > 0) {\n tasks.push(new Promise((resolve) => {\n setTimeout(() => {\n isTimeout = true;\n resolve();\n }, timeout);\n }));\n }\n\n // promise for module initialization\n tasks.push(new Promise((resolve, reject) => {\n const factory = useThreads ? ortWasmFactoryThreaded : ortWasmFactory;\n const config: Partial = {\n locateFile: (fileName: string, scriptDirectory: string) => {\n if (!BUILD_DEFS.DISABLE_WASM_THREAD && useThreads && fileName.endsWith('.worker.js') &&\n typeof Blob !== 'undefined') {\n return URL.createObjectURL(new Blob(\n [\n // This require() function is handled by esbuild plugin to load file content as string.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('./binding/ort-wasm-threaded.worker.js')\n ],\n {type: 'text/javascript'}));\n }\n\n if (fileName.endsWith('.wasm')) {\n if (wasmPathOverride) {\n return wasmPathOverride;\n }\n\n const prefix = wasmPrefixOverride ?? scriptDirectory;\n\n if (!BUILD_DEFS.DISABLE_WEBGPU) {\n if (wasmFileName === 'ort-wasm-simd.wasm') {\n return prefix + 'ort-wasm-simd.jsep.wasm';\n } else if (wasmFileName === 'ort-wasm-simd-threaded.wasm') {\n return prefix + 'ort-wasm-simd-threaded.jsep.wasm';\n }\n }\n\n return prefix + wasmFileName;\n }\n\n return scriptDirectory + fileName;\n }\n };\n\n if (!BUILD_DEFS.DISABLE_WASM_THREAD && useThreads) {\n config.numThreads = numThreads;\n if (typeof Blob === 'undefined') {\n config.mainScriptUrlOrBlob = path.join(__dirname, 'ort-wasm-threaded.js');\n } else {\n const scriptSourceCode = `var ortWasmThreaded=${factory.toString()};`;\n config.mainScriptUrlOrBlob = new Blob([scriptSourceCode], {type: 'text/javascript'});\n }\n }\n\n factory(config).then(\n // wasm module initialized successfully\n module => {\n initializing = false;\n initialized = true;\n wasm = module;\n resolve();\n },\n // wasm module failed to initialize\n (what) => {\n initializing = false;\n aborted = true;\n reject(what);\n });\n }));\n\n await Promise.race(tasks);\n\n if (isTimeout) {\n throw new Error(`WebAssembly backend initializing failed due to timeout: ${timeout}ms`);\n }\n};\n\nexport const getInstance = (): OrtWasmModule => {\n if (initialized && wasm) {\n return wasm;\n }\n\n throw new Error('WebAssembly is not initialized yet.');\n};\n\nexport const dispose = (): void => {\n if (initialized && !initializing && !aborted) {\n initializing = true;\n\n (wasm as OrtWasmThreadedModule).PThread?.terminateAllThreads();\n wasm = undefined;\n\n initializing = false;\n initialized = false;\n aborted = true;\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {getInstance} from './wasm-factory';\n\nexport const allocWasmString = (data: string, allocs: number[]): number => {\n const wasm = getInstance();\n\n const dataLength = wasm.lengthBytesUTF8(data) + 1;\n const dataOffset = wasm._malloc(dataLength);\n wasm.stringToUTF8(data, dataOffset, dataLength);\n allocs.push(dataOffset);\n\n return dataOffset;\n};\n\ninterface ExtraOptionsHandler {\n (name: string, value: string): void;\n}\n\nexport const iterateExtraOptions =\n (options: Record, prefix: string, seen: WeakSet>,\n handler: ExtraOptionsHandler): void => {\n if (typeof options == 'object' && options !== null) {\n if (seen.has(options)) {\n throw new Error('Circular reference in options');\n } else {\n seen.add(options);\n }\n }\n\n Object.entries(options).forEach(([key, value]) => {\n const name = (prefix) ? prefix + key : key;\n if (typeof value === 'object') {\n iterateExtraOptions(value as Record, name + '.', seen, handler);\n } else if (typeof value === 'string' || typeof value === 'number') {\n handler(name, value.toString());\n } else if (typeof value === 'boolean') {\n handler(name, (value) ? '1' : '0');\n } else {\n throw new Error(`Can't handle extra config type: ${typeof value}`);\n }\n });\n };\n\n/**\n * check web assembly API's last error and throw error if any error occurred.\n * @param message a message used when an error occurred.\n */\nexport const checkLastError = (message: string): void => {\n const wasm = getInstance();\n\n const stack = wasm.stackSave();\n try {\n const paramsOffset = wasm.stackAlloc(8);\n wasm._OrtGetLastError(paramsOffset, paramsOffset + 4);\n const errorCode = wasm.HEAP32[paramsOffset / 4];\n const errorMessagePointer = wasm.HEAPU32[paramsOffset / 4 + 1];\n const errorMessage = errorMessagePointer ? wasm.UTF8ToString(errorMessagePointer) : '';\n throw new Error(`${message} ERROR_CODE: ${errorCode}, ERROR_MESSAGE: ${errorMessage}`);\n } finally {\n wasm.stackRestore(stack);\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession} from 'onnxruntime-common';\n\nimport {getInstance} from './wasm-factory';\nimport {allocWasmString, checkLastError, iterateExtraOptions} from './wasm-utils';\n\nexport const setRunOptions = (options: InferenceSession.RunOptions): [number, number[]] => {\n const wasm = getInstance();\n let runOptionsHandle = 0;\n const allocs: number[] = [];\n\n const runOptions: InferenceSession.RunOptions = options || {};\n\n try {\n if (options?.logSeverityLevel === undefined) {\n runOptions.logSeverityLevel = 2; // Default to warning\n } else if (\n typeof options.logSeverityLevel !== 'number' || !Number.isInteger(options.logSeverityLevel) ||\n options.logSeverityLevel < 0 || options.logSeverityLevel > 4) {\n throw new Error(`log serverity level is not valid: ${options.logSeverityLevel}`);\n }\n\n if (options?.logVerbosityLevel === undefined) {\n runOptions.logVerbosityLevel = 0; // Default to 0\n } else if (typeof options.logVerbosityLevel !== 'number' || !Number.isInteger(options.logVerbosityLevel)) {\n throw new Error(`log verbosity level is not valid: ${options.logVerbosityLevel}`);\n }\n\n if (options?.terminate === undefined) {\n runOptions.terminate = false;\n }\n\n let tagDataOffset = 0;\n if (options?.tag !== undefined) {\n tagDataOffset = allocWasmString(options.tag, allocs);\n }\n\n runOptionsHandle = wasm._OrtCreateRunOptions(\n runOptions.logSeverityLevel!, runOptions.logVerbosityLevel!, !!runOptions.terminate!, tagDataOffset);\n if (runOptionsHandle === 0) {\n checkLastError('Can\\'t create run options.');\n }\n\n if (options?.extra !== undefined) {\n iterateExtraOptions(options.extra, '', new WeakSet>(), (key, value) => {\n const keyDataOffset = allocWasmString(key, allocs);\n const valueDataOffset = allocWasmString(value, allocs);\n\n if (wasm._OrtAddRunConfigEntry(runOptionsHandle, keyDataOffset, valueDataOffset) !== 0) {\n checkLastError(`Can't set a run config entry: ${key} - ${value}.`);\n }\n });\n }\n\n return [runOptionsHandle, allocs];\n } catch (e) {\n if (runOptionsHandle !== 0) {\n wasm._OrtReleaseRunOptions(runOptionsHandle);\n }\n allocs.forEach(alloc => wasm._free(alloc));\n throw e;\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession} from 'onnxruntime-common';\n\nimport {getInstance} from './wasm-factory';\nimport {allocWasmString, checkLastError, iterateExtraOptions} from './wasm-utils';\n\nconst getGraphOptimzationLevel = (graphOptimizationLevel: string|unknown): number => {\n switch (graphOptimizationLevel) {\n case 'disabled':\n return 0;\n case 'basic':\n return 1;\n case 'extended':\n return 2;\n case 'all':\n return 99;\n default:\n throw new Error(`unsupported graph optimization level: ${graphOptimizationLevel}`);\n }\n};\n\nconst getExecutionMode = (executionMode: 'sequential'|'parallel'): number => {\n switch (executionMode) {\n case 'sequential':\n return 0;\n case 'parallel':\n return 1;\n default:\n throw new Error(`unsupported execution mode: ${executionMode}`);\n }\n};\n\nconst appendDefaultOptions = (options: InferenceSession.SessionOptions): void => {\n if (!options.extra) {\n options.extra = {};\n }\n if (!options.extra.session) {\n options.extra.session = {};\n }\n const session = options.extra.session as Record;\n if (!session.use_ort_model_bytes_directly) {\n // eslint-disable-next-line camelcase\n session.use_ort_model_bytes_directly = '1';\n }\n\n // if using JSEP with WebGPU, always disable memory pattern\n if (options.executionProviders &&\n options.executionProviders.some(ep => (typeof ep === 'string' ? ep : ep.name) === 'webgpu')) {\n options.enableMemPattern = false;\n }\n};\n\nconst setExecutionProviders =\n (sessionOptionsHandle: number, executionProviders: readonly InferenceSession.ExecutionProviderConfig[],\n allocs: number[]): void => {\n for (const ep of executionProviders) {\n let epName = typeof ep === 'string' ? ep : ep.name;\n\n // check EP name\n switch (epName) {\n case 'webnn':\n epName = 'WEBNN';\n if (typeof ep !== 'string') {\n const webnnOptions = ep as InferenceSession.WebNNExecutionProviderOption;\n if (webnnOptions?.deviceType) {\n const keyDataOffset = allocWasmString('deviceType', allocs);\n const valueDataOffset = allocWasmString(webnnOptions.deviceType, allocs);\n if (getInstance()._OrtAddSessionConfigEntry(sessionOptionsHandle, keyDataOffset, valueDataOffset) !==\n 0) {\n checkLastError(`Can't set a session config entry: 'deviceType' - ${webnnOptions.deviceType}.`);\n }\n }\n if (webnnOptions?.numThreads) {\n let numThreads = webnnOptions.numThreads;\n // Just ignore invalid webnnOptions.numThreads.\n if (typeof numThreads != 'number' || !Number.isInteger(numThreads) || numThreads < 0) {\n numThreads = 0;\n }\n const keyDataOffset = allocWasmString('numThreads', allocs);\n const valueDataOffset = allocWasmString(numThreads.toString(), allocs);\n if (getInstance()._OrtAddSessionConfigEntry(sessionOptionsHandle, keyDataOffset, valueDataOffset) !==\n 0) {\n checkLastError(`Can't set a session config entry: 'numThreads' - ${webnnOptions.numThreads}.`);\n }\n }\n if (webnnOptions?.powerPreference) {\n const keyDataOffset = allocWasmString('powerPreference', allocs);\n const valueDataOffset = allocWasmString(webnnOptions.powerPreference, allocs);\n if (getInstance()._OrtAddSessionConfigEntry(sessionOptionsHandle, keyDataOffset, valueDataOffset) !==\n 0) {\n checkLastError(\n `Can't set a session config entry: 'powerPreference' - ${webnnOptions.powerPreference}.`);\n }\n }\n }\n break;\n case 'webgpu':\n epName = 'JS';\n if (typeof ep !== 'string') {\n const webgpuOptions = ep as InferenceSession.WebGpuExecutionProviderOption;\n if (webgpuOptions?.preferredLayout) {\n if (webgpuOptions.preferredLayout !== 'NCHW' && webgpuOptions.preferredLayout !== 'NHWC') {\n throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${webgpuOptions.preferredLayout}`);\n }\n const keyDataOffset = allocWasmString('preferredLayout', allocs);\n const valueDataOffset = allocWasmString(webgpuOptions.preferredLayout, allocs);\n if (getInstance()._OrtAddSessionConfigEntry(sessionOptionsHandle, keyDataOffset, valueDataOffset) !==\n 0) {\n checkLastError(\n `Can't set a session config entry: 'preferredLayout' - ${webgpuOptions.preferredLayout}.`);\n }\n }\n }\n break;\n case 'wasm':\n case 'cpu':\n continue;\n default:\n throw new Error(`not supported execution provider: ${epName}`);\n }\n\n const epNameDataOffset = allocWasmString(epName, allocs);\n if (getInstance()._OrtAppendExecutionProvider(sessionOptionsHandle, epNameDataOffset) !== 0) {\n checkLastError(`Can't append execution provider: ${epName}.`);\n }\n }\n };\n\nexport const setSessionOptions = (options?: InferenceSession.SessionOptions): [number, number[]] => {\n const wasm = getInstance();\n let sessionOptionsHandle = 0;\n const allocs: number[] = [];\n\n const sessionOptions: InferenceSession.SessionOptions = options || {};\n appendDefaultOptions(sessionOptions);\n\n try {\n const graphOptimizationLevel = getGraphOptimzationLevel(sessionOptions.graphOptimizationLevel ?? 'all');\n const executionMode = getExecutionMode(sessionOptions.executionMode ?? 'sequential');\n const logIdDataOffset =\n typeof sessionOptions.logId === 'string' ? allocWasmString(sessionOptions.logId, allocs) : 0;\n\n const logSeverityLevel = sessionOptions.logSeverityLevel ?? 2; // Default to 2 - warning\n if (!Number.isInteger(logSeverityLevel) || logSeverityLevel < 0 || logSeverityLevel > 4) {\n throw new Error(`log serverity level is not valid: ${logSeverityLevel}`);\n }\n\n const logVerbosityLevel = sessionOptions.logVerbosityLevel ?? 0; // Default to 0 - verbose\n if (!Number.isInteger(logVerbosityLevel) || logVerbosityLevel < 0 || logVerbosityLevel > 4) {\n throw new Error(`log verbosity level is not valid: ${logVerbosityLevel}`);\n }\n\n const optimizedModelFilePathOffset = typeof sessionOptions.optimizedModelFilePath === 'string' ?\n allocWasmString(sessionOptions.optimizedModelFilePath, allocs) :\n 0;\n\n sessionOptionsHandle = wasm._OrtCreateSessionOptions(\n graphOptimizationLevel, !!sessionOptions.enableCpuMemArena, !!sessionOptions.enableMemPattern, executionMode,\n !!sessionOptions.enableProfiling, 0, logIdDataOffset, logSeverityLevel, logVerbosityLevel,\n optimizedModelFilePathOffset);\n if (sessionOptionsHandle === 0) {\n checkLastError('Can\\'t create session options.');\n }\n\n if (sessionOptions.executionProviders) {\n setExecutionProviders(sessionOptionsHandle, sessionOptions.executionProviders, allocs);\n }\n\n if (sessionOptions.enableGraphCapture !== undefined) {\n if (typeof sessionOptions.enableGraphCapture !== 'boolean') {\n throw new Error(`enableGraphCapture must be a boolean value: ${sessionOptions.enableGraphCapture}`);\n }\n const keyDataOffset = allocWasmString('enableGraphCapture', allocs);\n const valueDataOffset = allocWasmString(sessionOptions.enableGraphCapture.toString(), allocs);\n if (wasm._OrtAddSessionConfigEntry(sessionOptionsHandle, keyDataOffset, valueDataOffset) !== 0) {\n checkLastError(\n `Can't set a session config entry: 'enableGraphCapture' - ${sessionOptions.enableGraphCapture}.`);\n }\n }\n\n if (sessionOptions.freeDimensionOverrides) {\n for (const [name, value] of Object.entries(sessionOptions.freeDimensionOverrides)) {\n if (typeof name !== 'string') {\n throw new Error(`free dimension override name must be a string: ${name}`);\n }\n if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {\n throw new Error(`free dimension override value must be a non-negative integer: ${value}`);\n }\n const nameOffset = allocWasmString(name, allocs);\n if (wasm._OrtAddFreeDimensionOverride(sessionOptionsHandle, nameOffset, value) !== 0) {\n checkLastError(`Can't set a free dimension override: ${name} - ${value}.`);\n }\n }\n }\n\n if (sessionOptions.extra !== undefined) {\n iterateExtraOptions(sessionOptions.extra, '', new WeakSet>(), (key, value) => {\n const keyDataOffset = allocWasmString(key, allocs);\n const valueDataOffset = allocWasmString(value, allocs);\n\n if (wasm._OrtAddSessionConfigEntry(sessionOptionsHandle, keyDataOffset, valueDataOffset) !== 0) {\n checkLastError(`Can't set a session config entry: ${key} - ${value}.`);\n }\n });\n }\n\n return [sessionOptionsHandle, allocs];\n } catch (e) {\n if (sessionOptionsHandle !== 0) {\n wasm._OrtReleaseSessionOptions(sessionOptionsHandle);\n }\n allocs.forEach(alloc => wasm._free(alloc));\n throw e;\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Tensor} from 'onnxruntime-common';\n\n// a dummy type declaration for Float16Array in case any polyfill is available.\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any\n const Float16Array: any;\n}\n\n// This file includes common definitions. They do NOT have dependency on the WebAssembly instance.\n\n/**\n * Copied from ONNX definition. Use this to drop dependency 'onnx_proto' to decrease compiled .js file size.\n */\nexport const enum DataType {\n undefined = 0,\n float = 1,\n uint8 = 2,\n int8 = 3,\n uint16 = 4,\n int16 = 5,\n int32 = 6,\n int64 = 7,\n string = 8,\n bool = 9,\n float16 = 10,\n double = 11,\n uint32 = 12,\n uint64 = 13,\n complex64 = 14,\n complex128 = 15,\n bfloat16 = 16\n}\n\n/**\n * Map string tensor data to enum value\n */\nexport const tensorDataTypeStringToEnum = (type: string): DataType => {\n switch (type) {\n case 'int8':\n return DataType.int8;\n case 'uint8':\n return DataType.uint8;\n case 'bool':\n return DataType.bool;\n case 'int16':\n return DataType.int16;\n case 'uint16':\n return DataType.uint16;\n case 'int32':\n return DataType.int32;\n case 'uint32':\n return DataType.uint32;\n case 'float16':\n return DataType.float16;\n case 'float32':\n return DataType.float;\n case 'float64':\n return DataType.double;\n case 'string':\n return DataType.string;\n case 'int64':\n return DataType.int64;\n case 'uint64':\n return DataType.uint64;\n\n default:\n throw new Error(`unsupported data type: ${type}`);\n }\n};\n\n/**\n * Map enum value to string tensor data\n */\nexport const tensorDataTypeEnumToString = (typeProto: DataType): Tensor.Type => {\n switch (typeProto) {\n case DataType.int8:\n return 'int8';\n case DataType.uint8:\n return 'uint8';\n case DataType.bool:\n return 'bool';\n case DataType.int16:\n return 'int16';\n case DataType.uint16:\n return 'uint16';\n case DataType.int32:\n return 'int32';\n case DataType.uint32:\n return 'uint32';\n case DataType.float16:\n return 'float16';\n case DataType.float:\n return 'float32';\n case DataType.double:\n return 'float64';\n case DataType.string:\n return 'string';\n case DataType.int64:\n return 'int64';\n case DataType.uint64:\n return 'uint64';\n\n default:\n throw new Error(`unsupported data type: ${typeProto}`);\n }\n};\n\n/**\n * get tensor element size in bytes by the given data type\n * @returns size in integer or undefined if the data type is not supported\n */\nexport const getTensorElementSize = (dateType: number): number|\n undefined => [undefined, 4, 1, 1, 2, 2, 4, 8, undefined, 1, 2, 8, 4, 8, undefined, undefined, undefined][dateType];\n\n/**\n * get typed array constructor by the given tensor type\n */\nexport const tensorTypeToTypedArrayConstructor = (type: Tensor.Type): Float32ArrayConstructor|Uint8ArrayConstructor|\n Int8ArrayConstructor|Uint16ArrayConstructor|Int16ArrayConstructor|Int32ArrayConstructor|BigInt64ArrayConstructor|\n Uint8ArrayConstructor|Float64ArrayConstructor|Uint32ArrayConstructor|BigUint64ArrayConstructor => {\n switch (type) {\n case 'float16':\n // allow Float16Array polyfill.\n return typeof Float16Array !== 'undefined' && Float16Array.from ? Float16Array : Uint16Array;\n case 'float32':\n return Float32Array;\n case 'uint8':\n return Uint8Array;\n case 'int8':\n return Int8Array;\n case 'uint16':\n return Uint16Array;\n case 'int16':\n return Int16Array;\n case 'int32':\n return Int32Array;\n case 'bool':\n return Uint8Array;\n case 'float64':\n return Float64Array;\n case 'uint32':\n return Uint32Array;\n case 'int64':\n return BigInt64Array;\n case 'uint64':\n return BigUint64Array;\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n };\n\n/**\n * Map string log level to integer value\n */\nexport const logLevelStringToEnum = (logLevel?: 'verbose'|'info'|'warning'|'error'|'fatal'): number => {\n switch (logLevel) {\n case 'verbose':\n return 0;\n case 'info':\n return 1;\n case 'warning':\n return 2;\n case 'error':\n return 3;\n case 'fatal':\n return 4;\n default:\n throw new Error(`unsupported logging level: ${logLevel}`);\n }\n};\n\n/**\n * Check whether the given tensor type is supported by GPU buffer\n */\nexport const isGpuBufferSupportedType = (type: Tensor.Type): type is Tensor.GpuBufferDataTypes => type === 'float32' ||\n type === 'float16' || type === 'int32' || type === 'int64' || type === 'uint32' || type === 'uint8' ||\n type === 'bool';\n\n/**\n * Map string data location to integer value\n */\nexport const dataLocationStringToEnum = (location: Tensor.DataLocation): number => {\n switch (location) {\n case 'none':\n return 0;\n case 'cpu':\n return 1;\n case 'cpu-pinned':\n return 2;\n case 'texture':\n return 3;\n case 'gpu-buffer':\n return 4;\n default:\n throw new Error(`unsupported data location: ${location}`);\n }\n};\n\n/**\n * Map integer data location to string value\n */\nexport const dataLocationEnumToString = (location: number): Tensor.DataLocation|undefined =>\n (['none', 'cpu', 'cpu-pinned', 'texture', 'gpu-buffer'] as const)[location];\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport * as fs from 'fs';\nimport {readFile} from 'node:fs/promises';\n\n/**\n * Load a file into a Uint8Array.\n *\n * @param file - the file to load. Can be a URL/path, a Blob, an ArrayBuffer, or a Uint8Array.\n * @returns a Uint8Array containing the file data.\n */\nexport const loadFile = async(file: string|Blob|ArrayBufferLike|Uint8Array): Promise => {\n if (typeof file === 'string') {\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // load file into ArrayBuffer in Node.js\n try {\n return new Uint8Array(await readFile(file));\n } catch (e) {\n if (e.code === 'ERR_FS_FILE_TOO_LARGE') {\n // file is too large, use fs.createReadStream instead\n const stream = fs.createReadStream(file);\n const chunks: Uint8Array[] = [];\n for await (const chunk of stream) {\n chunks.push(chunk);\n }\n return new Uint8Array(Buffer.concat(chunks));\n }\n throw e;\n }\n } else {\n // load file into ArrayBuffer in browsers\n const response = await fetch(file);\n if (!response.ok) {\n throw new Error(`failed to load external data file: ${file}`);\n }\n const contentLengthHeader = response.headers.get('Content-Length');\n const fileSize = contentLengthHeader ? parseInt(contentLengthHeader, 10) : 0;\n if (fileSize < 1073741824 /* 1GB */) {\n // when Content-Length header is not set, we cannot determine the file size. We assume it is small enough to\n // load into memory.\n return new Uint8Array(await response.arrayBuffer());\n } else {\n // file is too large, use stream instead\n if (!response.body) {\n throw new Error(`failed to load external data file: ${file}, no response body.`);\n }\n const reader = response.body.getReader();\n\n let buffer;\n try {\n // try to create ArrayBuffer directly\n buffer = new ArrayBuffer(fileSize);\n } catch (e) {\n if (e instanceof RangeError) {\n // use WebAssembly Memory to allocate larger ArrayBuffer\n const pages = Math.ceil(fileSize / 65536);\n buffer = new WebAssembly.Memory({initial: pages, maximum: pages}).buffer;\n } else {\n throw e;\n }\n }\n\n let offset = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n const chunkSize = value.byteLength;\n const chunk = new Uint8Array(buffer, offset, chunkSize);\n chunk.set(value);\n offset += chunkSize;\n }\n return new Uint8Array(buffer, 0, fileSize);\n }\n }\n\n } else if (file instanceof Blob) {\n return new Uint8Array(await file.arrayBuffer());\n } else if (file instanceof Uint8Array) {\n return file;\n } else {\n return new Uint8Array(file);\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {Env, InferenceSession, Tensor} from 'onnxruntime-common';\n\nimport {SerializableInternalBuffer, SerializableSessionMetadata, SerializableTensorMetadata, TensorMetadata} from './proxy-messages';\nimport {setRunOptions} from './run-options';\nimport {setSessionOptions} from './session-options';\nimport {dataLocationStringToEnum, getTensorElementSize, isGpuBufferSupportedType, logLevelStringToEnum, tensorDataTypeEnumToString, tensorDataTypeStringToEnum, tensorTypeToTypedArrayConstructor} from './wasm-common';\nimport {getInstance} from './wasm-factory';\nimport {allocWasmString, checkLastError} from './wasm-utils';\nimport {loadFile} from './wasm-utils-load-file';\n\n// #region Initializations\n\n/**\n * There are 4 different \"initialization\" steps for ORT. They happen in different places and different time.\n *\n * 1. JavaScript initialization for onnxruntime-common and onnxruntime-web.\n * This is the first initialization step. In this step, onnxruntime-web calls onnxruntime-common's registerBackend()\n * function multiple times to register all the available backends. The backend registration is very fast. It only\n * registers the backend name with the uninitialized backend object. No heavy initialization is done in this step.\n * Refer to web/lib/index.ts for the backend registration.\n *\n * 2. WebAssembly artifact initialization.\n * This happens when any registered wasm backend is used for the first time (ie. `ort.InferenceSession.create()` or\n * `ort.TrainingSession.create()` is called). In this step, onnxruntime-web does the followings:\n * - create a proxy worker and make sure the proxy worker is ready to receive messages, if proxy is enabled.\n * - perform feature detection, locate correct WebAssembly artifact path and call the Emscripten generated\n * JavaScript code to initialize the WebAssembly runtime.\n * - if proxy is enabled, this step happens in the proxy worker using message 'init-wasm'.\n * - downloading the 'ort-wasm{...}.wasm' file is done in this step.\n * - if multi-thread is enabled, one or more webworker will be created to initialize the PThread threadpool.\n *\n * 3. ORT environment initialization.\n * This happens after step 2. In this step, onnxruntime-web performs ONNX Runtime environment initialization.\n * Function `_OrtInit()` is called in this step.\n * - if proxy is enabled, this step happens in the proxy worker using message 'init-ort'.\n * - logging level (ort.env.logLevel) and thread number (ort.env.wasm.numThreads) are set in this step.\n *\n * 4. Session initialization.\n * This happens when `ort.InferenceSession.create()` or `ort.TrainingSession.create()` is called. Unlike the first 3\n * steps (they only called once), this step will be done for each session. In this step, onnxruntime-web does the\n * followings:\n * If the parameter is a URL:\n * - download the model data from the URL.\n * - copy the model data to the WASM heap. (proxy: 'copy-from')\n * - dereference the model buffer. This step allows the original ArrayBuffer to be garbage collected.\n * - call `_OrtCreateSession()` to create the session. (proxy: 'create')\n *\n * If the parameter is a Uint8Array object:\n * - copy the model data to the WASM heap. (proxy: 'copy-from')\n * - call `_OrtCreateSession()` to create the session. (proxy: 'create')\n *\n *\n */\n\n/**\n * initialize ORT environment.\n *\n * @param numThreads SetGlobalIntraOpNumThreads(numThreads)\n * @param loggingLevel CreateEnv(static_cast(logging_level))\n */\nconst initOrt = (numThreads: number, loggingLevel: number): void => {\n const errorCode = getInstance()._OrtInit(numThreads, loggingLevel);\n if (errorCode !== 0) {\n checkLastError('Can\\'t initialize onnxruntime.');\n }\n};\n\n/**\n * intialize runtime environment.\n * @param env passed in the environment config object.\n */\nexport const initRuntime = async(env: Env): Promise => {\n // init ORT\n initOrt(env.wasm.numThreads!, logLevelStringToEnum(env.logLevel));\n};\n\n/**\n * perform EP specific initialization.\n *\n * @param env\n * @param epName\n */\nexport const initEp = async(env: Env, epName: string): Promise => {\n if (!BUILD_DEFS.DISABLE_WEBGPU) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires\n const initJsep = require('./jsep/init').init;\n\n if (epName === 'webgpu') {\n // perform WebGPU availability check\n if (typeof navigator === 'undefined' || !navigator.gpu) {\n throw new Error('WebGPU is not supported in current environment');\n }\n\n let adapter = env.webgpu.adapter as GPUAdapter | null;\n if (!adapter) {\n // if adapter is not set, request a new adapter.\n const powerPreference = env.webgpu.powerPreference;\n if (powerPreference !== undefined && powerPreference !== 'low-power' &&\n powerPreference !== 'high-performance') {\n throw new Error(`Invalid powerPreference setting: \"${powerPreference}\"`);\n }\n const forceFallbackAdapter = env.webgpu.forceFallbackAdapter;\n if (forceFallbackAdapter !== undefined && typeof forceFallbackAdapter !== 'boolean') {\n throw new Error(`Invalid forceFallbackAdapter setting: \"${forceFallbackAdapter}\"`);\n }\n adapter = await navigator.gpu.requestAdapter({powerPreference, forceFallbackAdapter});\n if (!adapter) {\n throw new Error(\n 'Failed to get GPU adapter. ' +\n 'You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.');\n }\n } else {\n // if adapter is set, validate it.\n if (typeof adapter.limits !== 'object' || typeof adapter.features !== 'object' ||\n typeof adapter.requestDevice !== 'function') {\n throw new Error('Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.');\n }\n }\n\n if (!env.wasm.simd) {\n throw new Error(\n 'Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP');\n }\n\n await initJsep('webgpu', getInstance(), env, adapter);\n }\n if (epName === 'webnn') {\n // perform WebNN availability check\n if (typeof navigator === 'undefined' || !(navigator as unknown as {ml: unknown}).ml) {\n throw new Error('WebNN is not supported in current environment');\n }\n\n await initJsep('webnn', getInstance(), env);\n }\n }\n};\n\n// #endregion Initializations\n\n/**\n * valid data locations for input/output tensors.\n */\ntype SupportedTensorDataLocationForInputOutput = 'cpu'|'cpu-pinned'|'gpu-buffer';\n\ntype IOBindingState = {\n /**\n * the handle of IO binding.\n */\n readonly handle: number;\n\n /**\n * the preferred location for each output tensor.\n *\n * value is one of 'cpu', 'cpu-pinned', 'gpu-buffer'.\n */\n readonly outputPreferredLocations: readonly SupportedTensorDataLocationForInputOutput[];\n\n /**\n * enum value of the preferred location for each output tensor.\n */\n readonly outputPreferredLocationsEncoded: readonly number[];\n};\n\n/**\n * tuple elements are: InferenceSession ID; inputNamesUTF8Encoded; outputNamesUTF8Encoded; bindingState\n */\ntype SessionMetadata = [\n inferenceSessionId: number, inputNamesUTF8Encoded: number[], outputNamesUTF8Encoded: number[],\n bindingState: IOBindingState|null, enableGraphCapture: boolean, inputOutputBound: boolean\n];\n\nconst activeSessions = new Map();\n\n/**\n * get the input/output count of the session.\n * @param sessionHandle the handle representing the session. should be non-zero.\n * @returns a tuple including 2 numbers, representing the input count and output count.\n */\nconst getSessionInputOutputCount = (sessionHandle: number): [number, number] => {\n const wasm = getInstance();\n const stack = wasm.stackSave();\n try {\n const dataOffset = wasm.stackAlloc(8);\n const errorCode = wasm._OrtGetInputOutputCount(sessionHandle, dataOffset, dataOffset + 4);\n if (errorCode !== 0) {\n checkLastError('Can\\'t get session input/output count.');\n }\n return [wasm.HEAP32[dataOffset / 4], wasm.HEAP32[dataOffset / 4 + 1]];\n } finally {\n wasm.stackRestore(stack);\n }\n};\n\n/**\n * allocate the memory and memcpy the external buffer.\n *\n * @param model - the external buffer containing the model data. Must not be the same buffer as the WASM heap.\n * @returns a 2-elements tuple - the pointer and size of the allocated buffer\n */\nexport const copyFromExternalBuffer = (model: Uint8Array): [number, number] => {\n const wasm = getInstance();\n const modelDataOffset = wasm._malloc(model.byteLength);\n if (modelDataOffset === 0) {\n throw new Error(`Can't create a session. failed to allocate a buffer of size ${model.byteLength}.`);\n }\n wasm.HEAPU8.set(model, modelDataOffset);\n return [modelDataOffset, model.byteLength];\n};\n\n/**\n * create an inference session from a model data buffer.\n *\n * @param modelData - either a Uint8Array object representing the model data, or a 2-elements tuple containing the\n * pointer and size of the model data buffer.\n * @param options an optional session options object.\n * @returns a 3-elements tuple containing [session handle, input names, output names]\n */\nexport const createSession = async(\n modelData: Uint8Array|SerializableInternalBuffer,\n options?: InferenceSession.SessionOptions): Promise => {\n let modelDataOffset: number, modelDataLength: number;\n const wasm = getInstance();\n\n if (Array.isArray(modelData)) {\n // if model data is an array, it must be a 2-elements tuple containing the pointer and size of the model data\n [modelDataOffset, modelDataLength] = modelData;\n } else if (modelData.buffer === wasm.HEAPU8.buffer) {\n // if model data uses the same buffer as the WASM heap, we don't need to copy it.\n [modelDataOffset, modelDataLength] = [modelData.byteOffset, modelData.byteLength];\n } else {\n // otherwise, copy the model data to the WASM heap.\n [modelDataOffset, modelDataLength] = copyFromExternalBuffer(modelData);\n }\n\n let sessionHandle = 0;\n let sessionOptionsHandle = 0;\n let ioBindingHandle = 0;\n let allocs: number[] = [];\n const inputNamesUTF8Encoded = [];\n const outputNamesUTF8Encoded = [];\n\n try {\n [sessionOptionsHandle, allocs] = setSessionOptions(options);\n\n if (options?.externalData && wasm.mountExternalData) {\n const loadingPromises = [];\n for (const file of options.externalData) {\n const path = typeof file === 'string' ? file : file.path;\n loadingPromises.push(loadFile(typeof file === 'string' ? file : file.data).then(data => {\n wasm.mountExternalData!(path, data);\n }));\n }\n\n // wait for all external data files to be loaded\n await Promise.all(loadingPromises);\n }\n\n sessionHandle = await wasm._OrtCreateSession(modelDataOffset, modelDataLength, sessionOptionsHandle);\n if (sessionHandle === 0) {\n checkLastError('Can\\'t create a session.');\n }\n\n const [inputCount, outputCount] = getSessionInputOutputCount(sessionHandle);\n\n const enableGraphCapture = !!options?.enableGraphCapture;\n\n const inputNames = [];\n const outputNames = [];\n const outputPreferredLocations: SupportedTensorDataLocationForInputOutput[] = [];\n for (let i = 0; i < inputCount; i++) {\n const name = wasm._OrtGetInputName(sessionHandle, i);\n if (name === 0) {\n checkLastError('Can\\'t get an input name.');\n }\n inputNamesUTF8Encoded.push(name);\n inputNames.push(wasm.UTF8ToString(name));\n }\n for (let i = 0; i < outputCount; i++) {\n const name = wasm._OrtGetOutputName(sessionHandle, i);\n if (name === 0) {\n checkLastError('Can\\'t get an output name.');\n }\n outputNamesUTF8Encoded.push(name);\n const nameString = wasm.UTF8ToString(name);\n outputNames.push(nameString);\n\n if (!BUILD_DEFS.DISABLE_WEBGPU) {\n if (enableGraphCapture && options?.preferredOutputLocation === undefined) {\n outputPreferredLocations.push('gpu-buffer');\n continue;\n }\n const location = typeof options?.preferredOutputLocation === 'string' ?\n options.preferredOutputLocation :\n options?.preferredOutputLocation?.[nameString] ?? 'cpu';\n if (location !== 'cpu' && location !== 'cpu-pinned' && location !== 'gpu-buffer') {\n throw new Error(`Not supported preferred output location: ${location}.`);\n }\n if (enableGraphCapture && location !== 'gpu-buffer') {\n throw new Error(`Not supported preferred output location: ${\n location}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);\n }\n outputPreferredLocations.push(location);\n }\n }\n\n // use IO binding only when at least one output is preffered to be on GPU.\n let bindingState: IOBindingState|null = null;\n if (!BUILD_DEFS.DISABLE_WEBGPU && outputPreferredLocations.some(l => l === 'gpu-buffer')) {\n ioBindingHandle = wasm._OrtCreateBinding(sessionHandle);\n if (ioBindingHandle === 0) {\n checkLastError('Can\\'t create IO binding.');\n }\n\n bindingState = {\n handle: ioBindingHandle,\n outputPreferredLocations,\n outputPreferredLocationsEncoded: outputPreferredLocations.map(l => dataLocationStringToEnum(l)),\n };\n }\n\n activeSessions.set(\n sessionHandle,\n [sessionHandle, inputNamesUTF8Encoded, outputNamesUTF8Encoded, bindingState, enableGraphCapture, false]);\n return [sessionHandle, inputNames, outputNames];\n } catch (e) {\n inputNamesUTF8Encoded.forEach(buf => wasm._OrtFree(buf));\n outputNamesUTF8Encoded.forEach(buf => wasm._OrtFree(buf));\n\n if (ioBindingHandle !== 0) {\n wasm._OrtReleaseBinding(ioBindingHandle);\n }\n\n if (sessionHandle !== 0) {\n wasm._OrtReleaseSession(sessionHandle);\n }\n throw e;\n } finally {\n wasm._free(modelDataOffset);\n if (sessionOptionsHandle !== 0) {\n wasm._OrtReleaseSessionOptions(sessionOptionsHandle);\n }\n allocs.forEach(alloc => wasm._free(alloc));\n\n // unmount external data if necessary\n wasm.unmountExternalData?.();\n }\n};\n\nexport const releaseSession = (sessionId: number): void => {\n const wasm = getInstance();\n const session = activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`cannot release session. invalid session id: ${sessionId}`);\n }\n const [sessionHandle, inputNamesUTF8Encoded, outputNamesUTF8Encoded, ioBindingState, enableGraphCapture] = session;\n\n if (ioBindingState) {\n if (enableGraphCapture) {\n wasm._OrtClearBoundOutputs(ioBindingState.handle);\n }\n wasm._OrtReleaseBinding(ioBindingState.handle);\n }\n\n wasm.jsepOnReleaseSession?.(sessionId);\n\n inputNamesUTF8Encoded.forEach(buf => wasm._OrtFree(buf));\n outputNamesUTF8Encoded.forEach(buf => wasm._OrtFree(buf));\n wasm._OrtReleaseSession(sessionHandle);\n activeSessions.delete(sessionId);\n};\n\nexport const prepareInputOutputTensor =\n (tensor: TensorMetadata|null, tensorHandles: number[], allocs: number[], sessionId: number, index: number,\n enableGraphCapture = false): void => {\n if (!tensor) {\n tensorHandles.push(0);\n return;\n }\n\n const wasm = getInstance();\n\n const dataType = tensor[0];\n const dims = tensor[1];\n const location = tensor[3];\n\n let rawData: number;\n let dataByteLength: number;\n\n if (dataType === 'string' && location === 'gpu-buffer') {\n throw new Error('String tensor is not supported on GPU.');\n }\n\n if (enableGraphCapture && location !== 'gpu-buffer') {\n throw new Error(\n `External buffer must be provided for input/output index ${index} when enableGraphCapture is true.`);\n }\n\n if (location === 'gpu-buffer') {\n const gpuBuffer = tensor[2].gpuBuffer as GPUBuffer;\n const elementSizeInBytes = getTensorElementSize(tensorDataTypeStringToEnum(dataType))!;\n dataByteLength = dims.reduce((a, b) => a * b, 1) * elementSizeInBytes;\n\n const registerBuffer = wasm.jsepRegisterBuffer;\n if (!registerBuffer) {\n throw new Error('Tensor location \"gpu-buffer\" is not supported without using WebGPU.');\n }\n rawData = registerBuffer(sessionId, index, gpuBuffer, dataByteLength);\n } else {\n const data = tensor[2];\n\n if (Array.isArray(data)) {\n // string tensor\n dataByteLength = 4 * data.length;\n rawData = wasm._malloc(dataByteLength);\n allocs.push(rawData);\n let dataIndex = rawData / 4;\n for (let i = 0; i < data.length; i++) {\n if (typeof data[i] !== 'string') {\n throw new TypeError(`tensor data at index ${i} is not a string`);\n }\n wasm.HEAPU32[dataIndex++] = allocWasmString(data[i], allocs);\n }\n } else {\n dataByteLength = data.byteLength;\n rawData = wasm._malloc(dataByteLength);\n allocs.push(rawData);\n wasm.HEAPU8.set(new Uint8Array(data.buffer, data.byteOffset, dataByteLength), rawData);\n }\n }\n\n const stack = wasm.stackSave();\n const dimsOffset = wasm.stackAlloc(4 * dims.length);\n try {\n let dimIndex = dimsOffset / 4;\n dims.forEach(d => wasm.HEAP32[dimIndex++] = d);\n const tensor = wasm._OrtCreateTensor(\n tensorDataTypeStringToEnum(dataType), rawData, dataByteLength, dimsOffset, dims.length,\n dataLocationStringToEnum(location));\n if (tensor === 0) {\n checkLastError(`Can't create tensor for input/output. session=${sessionId}, index=${index}.`);\n }\n tensorHandles.push(tensor);\n } finally {\n wasm.stackRestore(stack);\n }\n };\n\n/**\n * perform inference run\n */\nexport const run = async(\n sessionId: number, inputIndices: number[], inputTensors: TensorMetadata[], outputIndices: number[],\n outputTensors: Array, options: InferenceSession.RunOptions): Promise => {\n const wasm = getInstance();\n const session = activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`cannot run inference. invalid session id: ${sessionId}`);\n }\n const sessionHandle = session[0];\n const inputNamesUTF8Encoded = session[1];\n const outputNamesUTF8Encoded = session[2];\n const ioBindingState = session[3];\n const enableGraphCapture = session[4];\n const inputOutputBound = session[5];\n\n const inputCount = inputIndices.length;\n const outputCount = outputIndices.length;\n\n let runOptionsHandle = 0;\n let runOptionsAllocs: number[] = [];\n\n const inputTensorHandles: number[] = [];\n const outputTensorHandles: number[] = [];\n const inputOutputAllocs: number[] = [];\n\n const beforeRunStack = wasm.stackSave();\n const inputValuesOffset = wasm.stackAlloc(inputCount * 4);\n const inputNamesOffset = wasm.stackAlloc(inputCount * 4);\n const outputValuesOffset = wasm.stackAlloc(outputCount * 4);\n const outputNamesOffset = wasm.stackAlloc(outputCount * 4);\n\n try {\n [runOptionsHandle, runOptionsAllocs] = setRunOptions(options);\n\n // create input tensors\n for (let i = 0; i < inputCount; i++) {\n prepareInputOutputTensor(\n inputTensors[i], inputTensorHandles, inputOutputAllocs, sessionId, inputIndices[i], enableGraphCapture);\n }\n\n // create output tensors\n for (let i = 0; i < outputCount; i++) {\n prepareInputOutputTensor(\n outputTensors[i], outputTensorHandles, inputOutputAllocs, sessionId, inputCount + outputIndices[i],\n enableGraphCapture);\n }\n\n let inputValuesIndex = inputValuesOffset / 4;\n let inputNamesIndex = inputNamesOffset / 4;\n let outputValuesIndex = outputValuesOffset / 4;\n let outputNamesIndex = outputNamesOffset / 4;\n for (let i = 0; i < inputCount; i++) {\n wasm.HEAPU32[inputValuesIndex++] = inputTensorHandles[i];\n wasm.HEAPU32[inputNamesIndex++] = inputNamesUTF8Encoded[inputIndices[i]];\n }\n for (let i = 0; i < outputCount; i++) {\n wasm.HEAPU32[outputValuesIndex++] = outputTensorHandles[i];\n wasm.HEAPU32[outputNamesIndex++] = outputNamesUTF8Encoded[outputIndices[i]];\n }\n\n if (!BUILD_DEFS.DISABLE_WEBGPU && ioBindingState && !inputOutputBound) {\n const {handle, outputPreferredLocations, outputPreferredLocationsEncoded} = ioBindingState;\n\n if (inputNamesUTF8Encoded.length !== inputCount) {\n throw new Error(`input count from feeds (${\n inputCount}) is expected to be always equal to model's input count (${inputNamesUTF8Encoded.length}).`);\n }\n\n // process inputs\n for (let i = 0; i < inputCount; i++) {\n const index = inputIndices[i];\n const errorCode = await wasm._OrtBindInput(handle, inputNamesUTF8Encoded[index], inputTensorHandles[i]);\n if (errorCode !== 0) {\n checkLastError(`Can't bind input[${i}] for session=${sessionId}.`);\n }\n }\n\n // process pre-allocated outputs\n for (let i = 0; i < outputCount; i++) {\n const index = outputIndices[i];\n const location = outputTensors[i]?.[3]; // undefined means output is not pre-allocated.\n\n if (location) {\n // output is pre-allocated. bind the tensor.\n const errorCode = wasm._OrtBindOutput(handle, outputNamesUTF8Encoded[index], outputTensorHandles[i], 0);\n if (errorCode !== 0) {\n checkLastError(`Can't bind pre-allocated output[${i}] for session=${sessionId}.`);\n }\n } else {\n // output is not pre-allocated. reset preferred location.\n const errorCode =\n wasm._OrtBindOutput(handle, outputNamesUTF8Encoded[index], 0, outputPreferredLocationsEncoded[index]);\n if (errorCode !== 0) {\n checkLastError(`Can't bind output[${i}] to ${outputPreferredLocations[i]} for session=${sessionId}.`);\n }\n }\n }\n activeSessions.set(\n sessionId,\n [sessionHandle, inputNamesUTF8Encoded, outputNamesUTF8Encoded, ioBindingState, enableGraphCapture, true]);\n }\n\n wasm.jsepOnRunStart?.(sessionHandle);\n let errorCode: number;\n if (!BUILD_DEFS.DISABLE_WEBGPU && ioBindingState) {\n errorCode = await wasm._OrtRunWithBinding(\n sessionHandle, ioBindingState.handle, outputCount, outputValuesOffset, runOptionsHandle);\n } else {\n errorCode = await wasm._OrtRun(\n sessionHandle, inputNamesOffset, inputValuesOffset, inputCount, outputNamesOffset, outputCount,\n outputValuesOffset, runOptionsHandle);\n }\n\n if (errorCode !== 0) {\n checkLastError('failed to call OrtRun().');\n }\n\n const output: TensorMetadata[] = [];\n\n for (let i = 0; i < outputCount; i++) {\n const tensor = wasm.HEAPU32[outputValuesOffset / 4 + i];\n if (tensor === outputTensorHandles[i]) {\n // output tensor is pre-allocated. no need to copy data.\n output.push(outputTensors[i]!);\n continue;\n }\n\n const beforeGetTensorDataStack = wasm.stackSave();\n // stack allocate 4 pointer value\n const tensorDataOffset = wasm.stackAlloc(4 * 4);\n\n let keepOutputTensor = false;\n let type: Tensor.Type|undefined, dataOffset = 0;\n try {\n const errorCode = wasm._OrtGetTensorData(\n tensor, tensorDataOffset, tensorDataOffset + 4, tensorDataOffset + 8, tensorDataOffset + 12);\n if (errorCode !== 0) {\n checkLastError(`Can't access output tensor data on index ${i}.`);\n }\n let tensorDataIndex = tensorDataOffset / 4;\n const dataType = wasm.HEAPU32[tensorDataIndex++];\n dataOffset = wasm.HEAPU32[tensorDataIndex++];\n const dimsOffset = wasm.HEAPU32[tensorDataIndex++];\n const dimsLength = wasm.HEAPU32[tensorDataIndex++];\n const dims = [];\n for (let i = 0; i < dimsLength; i++) {\n dims.push(wasm.HEAPU32[dimsOffset / 4 + i]);\n }\n wasm._OrtFree(dimsOffset);\n\n const size = dims.reduce((a, b) => a * b, 1);\n type = tensorDataTypeEnumToString(dataType);\n\n const preferredLocation = ioBindingState?.outputPreferredLocations[outputIndices[i]];\n\n if (type === 'string') {\n if (preferredLocation === 'gpu-buffer') {\n throw new Error('String tensor is not supported on GPU.');\n }\n const stringData: string[] = [];\n let dataIndex = dataOffset / 4;\n for (let i = 0; i < size; i++) {\n const offset = wasm.HEAPU32[dataIndex++];\n const maxBytesToRead = i === size - 1 ? undefined : wasm.HEAPU32[dataIndex] - offset;\n stringData.push(wasm.UTF8ToString(offset, maxBytesToRead));\n }\n output.push([type, dims, stringData, 'cpu']);\n } else {\n // If a certain output's preferred location is GPU but the tensor is empty, we still need to create a CPU\n // tensor for it. There is no mapping GPU buffer for an empty tensor.\n if (preferredLocation === 'gpu-buffer' && size > 0) {\n const getBuffer = wasm.jsepGetBuffer;\n if (!getBuffer) {\n throw new Error('preferredLocation \"gpu-buffer\" is not supported without using WebGPU.');\n }\n const gpuBuffer = getBuffer(dataOffset);\n const elementSize = getTensorElementSize(dataType);\n if (elementSize === undefined || !isGpuBufferSupportedType(type)) {\n throw new Error(`Unsupported data type: ${type}`);\n }\n\n // do not release the tensor right now. it will be released when user calls tensor.dispose().\n keepOutputTensor = true;\n\n output.push([\n type, dims, {\n gpuBuffer,\n download: wasm.jsepCreateDownloader!(gpuBuffer, size * elementSize, type),\n dispose: () => {\n wasm._OrtReleaseTensor(tensor);\n }\n },\n 'gpu-buffer'\n ]);\n } else {\n const typedArrayConstructor = tensorTypeToTypedArrayConstructor(type);\n const data = new typedArrayConstructor(size);\n new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n .set(wasm.HEAPU8.subarray(dataOffset, dataOffset + data.byteLength));\n output.push([type, dims, data, 'cpu']);\n }\n }\n } finally {\n wasm.stackRestore(beforeGetTensorDataStack);\n if (type === 'string' && dataOffset) {\n wasm._free(dataOffset);\n }\n if (!keepOutputTensor) {\n wasm._OrtReleaseTensor(tensor);\n }\n }\n }\n\n if (ioBindingState && !enableGraphCapture) {\n wasm._OrtClearBoundOutputs(ioBindingState.handle);\n activeSessions.set(\n sessionId,\n [sessionHandle, inputNamesUTF8Encoded, outputNamesUTF8Encoded, ioBindingState, enableGraphCapture, false]);\n }\n return output;\n } finally {\n wasm.stackRestore(beforeRunStack);\n\n inputTensorHandles.forEach(v => wasm._OrtReleaseTensor(v));\n outputTensorHandles.forEach(v => wasm._OrtReleaseTensor(v));\n inputOutputAllocs.forEach(p => wasm._free(p));\n\n if (runOptionsHandle !== 0) {\n wasm._OrtReleaseRunOptions(runOptionsHandle);\n }\n runOptionsAllocs.forEach(p => wasm._free(p));\n }\n};\n\n/**\n * end profiling\n */\nexport const endProfiling = (sessionId: number): void => {\n const wasm = getInstance();\n const session = activeSessions.get(sessionId);\n if (!session) {\n throw new Error('invalid session id');\n }\n const sessionHandle = session[0];\n\n // profile file name is not used yet, but it must be freed.\n const profileFileName = wasm._OrtEndProfiling(sessionHandle);\n if (profileFileName === 0) {\n checkLastError('Can\\'t get an profile file name.');\n }\n wasm._OrtFree(profileFileName);\n};\n\nexport const extractTransferableBuffers = (tensors: readonly SerializableTensorMetadata[]): ArrayBufferLike[] => {\n const buffers: ArrayBufferLike[] = [];\n for (const tensor of tensors) {\n const data = tensor[2];\n if (!Array.isArray(data) && 'buffer' in data) {\n buffers.push(data.buffer);\n }\n }\n return buffers;\n};\n","/*!\n * ONNX Runtime Web v1.18.0\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\"use strict\";(()=>{var vt=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Vr=Object.getOwnPropertyNames;var Jr=Object.prototype.hasOwnProperty;var _t=(i,c)=>()=>(i&&(c=i(i=0)),c);var Ke=(i,c)=>()=>(c||i((c={exports:{}}).exports,c),c.exports),Et=(i,c)=>{for(var a in c)vt(i,a,{get:c[a],enumerable:!0})},Xr=(i,c,a,h)=>{if(c&&typeof c==\"object\"||typeof c==\"function\")for(let f of Vr(c))!Jr.call(i,f)&&f!==a&&vt(i,f,{get:()=>c[f],enumerable:!(h=qr(c,f))||h.enumerable});return i};var et=i=>Xr(vt({},\"__esModule\",{value:!0}),i);var St={};Et(St,{createReadStream:()=>lr,readFile:()=>Qr,readFileSync:()=>Zr});var Qr,Zr,lr,At=_t(()=>{Qr=void 0,Zr=void 0,lr=void 0});var Tt={};Et(Tt,{join:()=>Kr});var Kr,Mt=_t(()=>{Kr=void 0});var pr=Ke((dr,Ct)=>{\"use strict\";var cr=(()=>{var i=typeof document<\"u\"?document.currentScript?.src:void 0;return typeof __filename<\"u\"&&(i||=__filename),function(c={}){var a=c,h,f,w=new Promise((t,o)=>{h=t,f=o}),g=Object.assign({},a),s=\"./this.program\",S=typeof window==\"object\",x=typeof importScripts==\"function\",H=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",A=\"\",I,V,R;if(H){var B=(At(),et(St)),D=(Mt(),et(Tt));A=x?D.dirname(A)+\"/\":__dirname+\"/\",I=(t,o)=>(t=ce(t)?new URL(t):D.normalize(t),B.readFileSync(t,o?void 0:\"utf8\")),R=t=>(t=I(t,!0),t.buffer||(t=new Uint8Array(t)),t),V=(t,o,u,m=!0)=>{t=ce(t)?new URL(t):D.normalize(t),B.readFile(t,m?void 0:\"utf8\",(O,E)=>{O?u(O):o(m?E.buffer:E)})},!a.thisProgram&&1{var o=new XMLHttpRequest;return o.open(\"GET\",t,!1),o.send(null),o.responseText},x&&(R=t=>{var o=new XMLHttpRequest;return o.open(\"GET\",t,!1),o.responseType=\"arraybuffer\",o.send(null),new Uint8Array(o.response)}),V=(t,o,u)=>{var m=new XMLHttpRequest;m.open(\"GET\",t,!0),m.responseType=\"arraybuffer\",m.onload=()=>{m.status==200||m.status==0&&m.response?o(m.response):u()},m.onerror=u,m.send(null)});var T=console.log.bind(console),L=console.error.bind(console);Object.assign(a,g),g=null;var W,de=!1,pe,Z,_,J,Pe;function le(){var t=W.buffer;a.HEAP8=pe=new Int8Array(t),a.HEAP16=new Int16Array(t),a.HEAPU8=Z=new Uint8Array(t),a.HEAPU16=new Uint16Array(t),a.HEAP32=_=new Int32Array(t),a.HEAPU32=J=new Uint32Array(t),a.HEAPF32=new Float32Array(t),a.HEAPF64=Pe=new Float64Array(t)}var Ie=[],ne=[],X=[],we=0,me=null,F=null;function ie(t){throw t=\"Aborted(\"+t+\")\",L(t),de=!0,t=new WebAssembly.RuntimeError(t+\". Build with -sASSERTIONS for more info.\"),f(t),t}var xe=t=>t.startsWith(\"data:application/octet-stream;base64,\"),ce=t=>t.startsWith(\"file://\"),be;if(be=\"ort-wasm.wasm\",!xe(be)){var ae=be;be=a.locateFile?a.locateFile(ae,A):A+ae}function K(t){if(R)return R(t);throw\"both async and sync fetching of the wasm failed\"}function je(t){if(S||x){if(typeof fetch==\"function\"&&!ce(t))return fetch(t,{credentials:\"same-origin\"}).then(o=>{if(!o.ok)throw`failed to load wasm binary file at '${t}'`;return o.arrayBuffer()}).catch(()=>K(t));if(V)return new Promise((o,u)=>{V(t,m=>o(new Uint8Array(m)),u)})}return Promise.resolve().then(()=>K(t))}function Oe(t,o,u){return je(t).then(m=>WebAssembly.instantiate(m,o)).then(u,m=>{L(`failed to asynchronously prepare wasm: ${m}`),ie(m)})}function Ue(t,o){var u=be;return typeof WebAssembly.instantiateStreaming!=\"function\"||xe(u)||ce(u)||H||typeof fetch!=\"function\"?Oe(u,t,o):fetch(u,{credentials:\"same-origin\"}).then(m=>WebAssembly.instantiateStreaming(m,t).then(o,function(O){return L(`wasm streaming compile failed: ${O}`),L(\"falling back to ArrayBuffer instantiation\"),Oe(u,t,o)}))}var ve,Ae={798088:(t,o,u,m)=>{if(typeof a>\"u\"||!a.ya)return 1;if(t=ue(t>>>0),t.startsWith(\"./\")&&(t=t.substring(2)),t=a.ya.get(t),!t)return 2;if(o>>>=0,u>>>=0,o+u>t.byteLength)return 3;try{return Z.set(t.subarray(o,o+u),m>>>0>>>0),0}catch{return 4}}};class _e{constructor(o){this.wa=o-24}}var ge=0,Be=0,te=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,re=(t,o,u)=>{o>>>=0;var m=o+u;for(u=o;t[u]&&!(u>=m);)++u;if(16O?m+=String.fromCharCode(O):(O-=65536,m+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else m+=String.fromCharCode(O)}return m},ue=(t,o)=>(t>>>=0)?re(Z,t,o):\"\",Ee=t=>{for(var o=0,u=0;u=m?o++:2047>=m?o+=2:55296<=m&&57343>=m?(o+=4,++u):o+=3}return o},Se=(t,o,u,m)=>{if(u>>>=0,!(0=U){var ee=t.charCodeAt(++E);U=65536+((U&1023)<<10)|ee&1023}if(127>=U){if(u>=m)break;o[u++>>>0]=U}else{if(2047>=U){if(u+1>=m)break;o[u++>>>0]=192|U>>6}else{if(65535>=U){if(u+2>=m)break;o[u++>>>0]=224|U>>12}else{if(u+3>=m)break;o[u++>>>0]=240|U>>18,o[u++>>>0]=128|U>>12&63}o[u++>>>0]=128|U>>6&63}o[u++>>>0]=128|U&63}}return o[u>>>0]=0,u-O},Le=t=>t%4===0&&(t%100!==0||t%400===0),ze=[0,31,60,91,121,152,182,213,244,274,305,335],rt=[0,31,59,90,120,151,181,212,243,273,304,334],Te=[],Ge={},ke=()=>{if(!We){var t={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:s||\"./this.program\"},o;for(o in Ge)Ge[o]===void 0?delete t[o]:t[o]=Ge[o];var u=[];for(o in t)u.push(`${o}=${t[o]}`);We=u}return We},We,nt=[null,[],[]],De=[31,29,31,30,31,30,31,31,30,31,30,31],at=[31,28,31,30,31,30,31,31,30,31,30,31];function G(t){var o=Array(Ee(t)+1);return Se(t,o,0,o.length),o}function qe(t,o,u,m){function O(d,k,$){for(d=typeof d==\"number\"?d.toString():d||\"\";d.lengthZe?-1:0Me-d.getDate())k-=Me-d.getDate()+1,d.setDate(1),11>$?d.setMonth($+1):(d.setMonth(0),d.setFullYear(d.getFullYear()+1));else{d.setDate(d.getDate()+k);break}}return $=new Date(d.getFullYear()+1,0,4),k=ee(new Date(d.getFullYear(),0,4)),$=ee($),0>=U(k,d)?0>=U($,d)?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}t>>>=0,o>>>=0,u>>>=0,m>>>=0;var oe=J[m+40>>>2>>>0];m={Ba:_[m>>>2>>>0],Aa:_[m+4>>>2>>>0],ua:_[m+8>>>2>>>0],xa:_[m+12>>>2>>>0],va:_[m+16>>>2>>>0],ta:_[m+20>>>2>>>0],na:_[m+24>>>2>>>0],sa:_[m+28>>>2>>>0],Da:_[m+32>>>2>>>0],za:_[m+36>>>2>>>0],Ca:oe?ue(oe):\"\"},u=ue(u),oe={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var se in oe)u=u.replace(new RegExp(se,\"g\"),oe[se]);var Qe=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Re=\"January February March April May June July August September October November December\".split(\" \");oe={\"%a\":d=>Qe[d.na].substring(0,3),\"%A\":d=>Qe[d.na],\"%b\":d=>Re[d.va].substring(0,3),\"%B\":d=>Re[d.va],\"%C\":d=>E((d.ta+1900)/100|0,2),\"%d\":d=>E(d.xa,2),\"%e\":d=>O(d.xa,2,\" \"),\"%g\":d=>ye(d).toString().substring(2),\"%G\":ye,\"%H\":d=>E(d.ua,2),\"%I\":d=>(d=d.ua,d==0?d=12:12{for(var k=0,$=0;$<=d.va-1;k+=(Le(d.ta+1900)?De:at)[$++]);return E(d.xa+k,3)},\"%m\":d=>E(d.va+1,2),\"%M\":d=>E(d.Aa,2),\"%n\":()=>`\n`,\"%p\":d=>0<=d.ua&&12>d.ua?\"AM\":\"PM\",\"%S\":d=>E(d.Ba,2),\"%t\":()=>\"\t\",\"%u\":d=>d.na||7,\"%U\":d=>E(Math.floor((d.sa+7-d.na)/7),2),\"%V\":d=>{var k=Math.floor((d.sa+7-(d.na+6)%7)/7);if(2>=(d.na+371-d.sa-2)%7&&k++,k)k==53&&($=(d.na+371-d.sa)%7,$==4||$==3&&Le(d.ta)||(k=1));else{k=52;var $=(d.na+7-d.sa-1)%7;($==4||$==5&&Le(d.ta%400-1))&&k++}return E(k,2)},\"%w\":d=>d.na,\"%W\":d=>E(Math.floor((d.sa+7-(d.na+6)%7)/7),2),\"%y\":d=>(d.ta+1900).toString().substring(2),\"%Y\":d=>d.ta+1900,\"%z\":d=>{d=d.za;var k=0<=d;return d=Math.abs(d)/60,(k?\"+\":\"-\")+(\"0000\"+(d/60*100+d%60)).slice(-4)},\"%Z\":d=>d.Ca,\"%%\":()=>\"%\"},u=u.replace(/%%/g,\"\\0\\0\");for(se in oe)u.includes(se)&&(u=u.replace(new RegExp(se,\"g\"),oe[se](m)));return u=u.replace(/\\0\\0/g,\"%\"),se=G(u),se.length>o?0:(pe.set(se,t>>>0),se.length-1)}var Ve={a:function(t,o,u){t>>>=0;var m=new _e(t);throw J[m.wa+16>>>2>>>0]=0,J[m.wa+4>>>2>>>0]=o>>>0,J[m.wa+8>>>2>>>0]=u>>>0,ge=t,Be++,ge},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,I:function(t,o,u){return o>>>=0,Z.copyWithin(t>>>0>>>0,o>>>0,o+(u>>>0)>>>0)},n:function(t,o,u){t=o+2097152>>>0<4194305-!!t?(t>>>0)+4294967296*o:NaN,u>>>=0,t=new Date(1e3*t),_[u>>>2>>>0]=t.getUTCSeconds(),_[u+4>>>2>>>0]=t.getUTCMinutes(),_[u+8>>>2>>>0]=t.getUTCHours(),_[u+12>>>2>>>0]=t.getUTCDate(),_[u+16>>>2>>>0]=t.getUTCMonth(),_[u+20>>>2>>>0]=t.getUTCFullYear()-1900,_[u+24>>>2>>>0]=t.getUTCDay(),_[u+28>>>2>>>0]=(t.getTime()-Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},o:function(t,o,u){t=o+2097152>>>0<4194305-!!t?(t>>>0)+4294967296*o:NaN,u>>>=0,t=new Date(1e3*t),_[u>>>2>>>0]=t.getSeconds(),_[u+4>>>2>>>0]=t.getMinutes(),_[u+8>>>2>>>0]=t.getHours(),_[u+12>>>2>>>0]=t.getDate(),_[u+16>>>2>>>0]=t.getMonth(),_[u+20>>>2>>>0]=t.getFullYear()-1900,_[u+24>>>2>>>0]=t.getDay(),_[u+28>>>2>>>0]=(Le(t.getFullYear())?ze:rt)[t.getMonth()]+t.getDate()-1|0,_[u+36>>>2>>>0]=-(60*t.getTimezoneOffset()),o=new Date(t.getFullYear(),6,1).getTimezoneOffset();var m=new Date(t.getFullYear(),0,1).getTimezoneOffset();_[u+32>>>2>>>0]=(o!=m&&t.getTimezoneOffset()==Math.min(m,o))|0},p:function(t){t>>>=0;var o=new Date(_[t+20>>>2>>>0]+1900,_[t+16>>>2>>>0],_[t+12>>>2>>>0],_[t+8>>>2>>>0],_[t+4>>>2>>>0],_[t>>>2>>>0],0),u=_[t+32>>>2>>>0],m=o.getTimezoneOffset(),O=new Date(o.getFullYear(),6,1).getTimezoneOffset(),E=new Date(o.getFullYear(),0,1).getTimezoneOffset(),U=Math.min(E,O);return 0>u?_[t+32>>>2>>>0]=+(O!=E&&U==m):0>>2>>>0]=o.getDay(),_[t+28>>>2>>>0]=(Le(o.getFullYear())?ze:rt)[o.getMonth()]+o.getDate()-1|0,_[t>>>2>>>0]=o.getSeconds(),_[t+4>>>2>>>0]=o.getMinutes(),_[t+8>>>2>>>0]=o.getHours(),_[t+12>>>2>>>0]=o.getDate(),_[t+16>>>2>>>0]=o.getMonth(),_[t+20>>>2>>>0]=o.getYear(),t=o.getTime(),t=isNaN(t)?-1:t/1e3,Je((ve=t,1<=+Math.abs(ve)?0>>0:~~+Math.ceil((ve-+(~~ve>>>0))/4294967296)>>>0:0)),t>>>0},l:function(){return-52},m:function(){},t:function(t,o,u,m){u>>>=0,m>>>=0;var O=new Date().getFullYear(),E=new Date(O,0,1),U=new Date(O,6,1);O=E.getTimezoneOffset();var ee=U.getTimezoneOffset();J[t>>>0>>>2>>>0]=60*Math.max(O,ee),_[o>>>0>>>2>>>0]=+(O!=ee),t=ye=>ye.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1],E=t(E),U=t(U),ee{ie(\"\")},B:function(t,o,u){t>>>=0,o>>>=0,u>>>=0,Te.length=0;for(var m;m=Z[o++>>>0];){var O=m!=105;O&=m!=112,u+=O&&u%8?4:0,Te.push(m==112?J[u>>>2>>>0]:m==105?_[u>>>2>>>0]:Pe[u>>>3>>>0]),u+=O?8:4}return Ae[t](...Te)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),s:function(t){t>>>=0;var o=Z.length;if(4294901760=u;u*=2){var m=o*(1+.2/u);m=Math.min(m,t+100663296);var O=Math;m=Math.max(t,m);e:{O=(O.min.call(O,4294901760,m+(65536-m%65536)%65536)-W.buffer.byteLength+65535)/65536;try{W.grow(O),le();var E=1;break e}catch{}E=void 0}if(E)return!0}return!1},C:function(t,o){t>>>=0,o>>>=0;var u=0;return ke().forEach((m,O)=>{var E=o+u;for(O=J[t+4*O>>>2>>>0]=E,E=0;E>>0]=m.charCodeAt(E);pe[O>>>0]=0,u+=m.length+1}),0},D:function(t,o){t>>>=0,o>>>=0;var u=ke();J[t>>>2>>>0]=u.length;var m=0;return u.forEach(O=>m+=O.length+1),J[o>>>2>>>0]=m,0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(t,o,u,m){o>>>=0,u>>>=0,m>>>=0;for(var O=0,E=0;E>>2>>>0],ee=J[o+4>>>2>>>0];o+=8;for(var ye=0;ye>>0],se=nt[t];oe===0||oe===10?((t===1?T:L)(re(se,0)),se.length=0):se.push(oe)}O+=ee}return J[m>>>2>>>0]=O,0},r:qe,c:function(t,o,u,m){return qe(t>>>0,o>>>0,u>>>0,m>>>0)}},P=function(){function t(u){return P=u.exports,P=st(),W=P.K,le(),ne.unshift(P.L),we--,we==0&&(me!==null&&(clearInterval(me),me=null),F&&(u=F,F=null,u())),P}var o={a:Ve};if(we++,a.instantiateWasm)try{return a.instantiateWasm(o,t)}catch(u){L(`Module.instantiateWasm callback failed with error: ${u}`),f(u)}return Ue(o,function(u){t(u.instance)}).catch(f),{}}();a._OrtInit=(t,o)=>(a._OrtInit=P.M)(t,o),a._OrtGetLastError=(t,o)=>(a._OrtGetLastError=P.N)(t,o),a._OrtCreateSessionOptions=(t,o,u,m,O,E,U,ee,ye,oe)=>(a._OrtCreateSessionOptions=P.O)(t,o,u,m,O,E,U,ee,ye,oe),a._OrtAppendExecutionProvider=(t,o)=>(a._OrtAppendExecutionProvider=P.P)(t,o),a._OrtAddFreeDimensionOverride=(t,o,u)=>(a._OrtAddFreeDimensionOverride=P.Q)(t,o,u),a._OrtAddSessionConfigEntry=(t,o,u)=>(a._OrtAddSessionConfigEntry=P.R)(t,o,u),a._OrtReleaseSessionOptions=t=>(a._OrtReleaseSessionOptions=P.S)(t),a._OrtCreateSession=(t,o,u)=>(a._OrtCreateSession=P.T)(t,o,u),a._OrtReleaseSession=t=>(a._OrtReleaseSession=P.U)(t),a._OrtGetInputOutputCount=(t,o,u)=>(a._OrtGetInputOutputCount=P.V)(t,o,u),a._OrtGetInputName=(t,o)=>(a._OrtGetInputName=P.W)(t,o),a._OrtGetOutputName=(t,o)=>(a._OrtGetOutputName=P.X)(t,o),a._OrtFree=t=>(a._OrtFree=P.Y)(t),a._OrtCreateTensor=(t,o,u,m,O,E)=>(a._OrtCreateTensor=P.Z)(t,o,u,m,O,E),a._OrtGetTensorData=(t,o,u,m,O)=>(a._OrtGetTensorData=P._)(t,o,u,m,O),a._OrtReleaseTensor=t=>(a._OrtReleaseTensor=P.$)(t),a._OrtCreateRunOptions=(t,o,u,m)=>(a._OrtCreateRunOptions=P.aa)(t,o,u,m),a._OrtAddRunConfigEntry=(t,o,u)=>(a._OrtAddRunConfigEntry=P.ba)(t,o,u),a._OrtReleaseRunOptions=t=>(a._OrtReleaseRunOptions=P.ca)(t),a._OrtCreateBinding=t=>(a._OrtCreateBinding=P.da)(t),a._OrtBindInput=(t,o,u)=>(a._OrtBindInput=P.ea)(t,o,u),a._OrtBindOutput=(t,o,u,m)=>(a._OrtBindOutput=P.fa)(t,o,u,m),a._OrtClearBoundOutputs=t=>(a._OrtClearBoundOutputs=P.ga)(t),a._OrtReleaseBinding=t=>(a._OrtReleaseBinding=P.ha)(t),a._OrtRunWithBinding=(t,o,u,m,O)=>(a._OrtRunWithBinding=P.ia)(t,o,u,m,O),a._OrtRun=(t,o,u,m,O,E,U,ee)=>(a._OrtRun=P.ja)(t,o,u,m,O,E,U,ee),a._OrtEndProfiling=t=>(a._OrtEndProfiling=P.ka)(t),a._malloc=t=>(a._malloc=P.la)(t),a._free=t=>(a._free=P.ma)(t);var Je=t=>(Je=P.oa)(t),ot=t=>(ot=P.pa)(t),M=t=>(M=P.qa)(t),Ne=()=>(Ne=P.ra)();function st(){var t=P;t=Object.assign({},t);var o=u=>m=>u(m)>>>0;return t.la=o(t.la),t.qa=o(t.qa),t.ra=(u=>()=>u()>>>0)(t.ra),t}a.stackSave=()=>Ne(),a.stackRestore=t=>ot(t),a.stackAlloc=t=>M(t),a.UTF8ToString=ue,a.stringToUTF8=(t,o,u)=>Se(t,Z,o,u),a.lengthBytesUTF8=Ee;var Fe;F=function t(){Fe||Xe(),Fe||(F=t)};function Xe(){if(!(0cr)});var mr=Ke(()=>{});var gr=Ke(()=>{});var hr={};Et(hr,{cpus:()=>en});var en,br=_t(()=>{en=void 0});var Or=Ke((wr,Dt)=>{\"use strict\";var yr=(()=>{var i=typeof document<\"u\"?document.currentScript?.src:void 0;return typeof __filename<\"u\"&&(i||=__filename),function(c={}){function a(){return X.buffer!=ie.buffer&&K(),ie}function h(){return X.buffer!=ie.buffer&&K(),xe}function f(){return X.buffer!=ie.buffer&&K(),ce}function w(){return X.buffer!=ie.buffer&&K(),be}function g(){return X.buffer!=ie.buffer&&K(),ae}var s=c,S,x,H=new Promise((e,r)=>{S=e,x=r}),A=Object.assign({},s),I=\"./this.program\",V=(e,r)=>{throw r},R=typeof window==\"object\",B=typeof importScripts==\"function\",D=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",T=s.ENVIRONMENT_IS_PTHREAD||!1,L=\"\";function W(e){return s.locateFile?s.locateFile(e,L):L+e}var de,pe,Z;if(D){var _=(At(),et(St)),J=(Mt(),et(Tt));L=B?J.dirname(L)+\"/\":__dirname+\"/\",de=(e,r)=>(e=ue(e)?new URL(e):J.normalize(e),_.readFileSync(e,r?void 0:\"utf8\")),Z=e=>(e=de(e,!0),e.buffer||(e=new Uint8Array(e)),e),pe=(e,r,n,l=!0)=>{e=ue(e)?new URL(e):J.normalize(e),_.readFile(e,l?void 0:\"utf8\",(y,b)=>{y?n(y):r(l?b.buffer:b)})},!s.thisProgram&&1{throw process.exitCode=e,r},global.Worker=mr().Worker}else(R||B)&&(B?L=self.location.href:typeof document<\"u\"&&document.currentScript&&(L=document.currentScript.src),typeof i<\"u\"&&i&&(L=i),L.startsWith(\"blob:\")?L=\"\":L=L.substr(0,L.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),D||(de=e=>{var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},B&&(Z=e=>{var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),pe=(e,r,n)=>{var l=new XMLHttpRequest;l.open(\"GET\",e,!0),l.responseType=\"arraybuffer\",l.onload=()=>{l.status==200||l.status==0&&l.response?r(l.response):n()},l.onerror=n,l.send(null)}));D&&typeof performance>\"u\"&&(global.performance=gr().performance);var Pe=console.log.bind(console),le=console.error.bind(console);D&&(Pe=(...e)=>_.writeSync(1,e.join(\" \")+`\n`),le=(...e)=>_.writeSync(2,e.join(\" \")+`\n`));var Ie=Pe,ne=le;Object.assign(s,A),A=null;var X,we,me=!1,F,ie,xe,ce,be,ae;function K(){var e=X.buffer;s.HEAP8=ie=new Int8Array(e),s.HEAP16=new Int16Array(e),s.HEAPU8=xe=new Uint8Array(e),s.HEAPU16=new Uint16Array(e),s.HEAP32=ce=new Int32Array(e),s.HEAPU32=be=new Uint32Array(e),s.HEAPF32=new Float32Array(e),s.HEAPF64=ae=new Float64Array(e)}var je=16777216;if(T)X=s.wasmMemory;else if(s.wasmMemory)X=s.wasmMemory;else if(X=new WebAssembly.Memory({initial:je/65536,maximum:65536,shared:!0}),!(X.buffer instanceof SharedArrayBuffer))throw ne(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),D&&ne(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");K(),je=X.buffer.byteLength;var Oe=[],Ue=[],ve=[],Ae=0,_e=null,ge=null;function Be(){if(Ae--,Ae==0&&(_e!==null&&(clearInterval(_e),_e=null),ge)){var e=ge;ge=null,e()}}function te(e){throw e=\"Aborted(\"+e+\")\",ne(e),me=!0,F=1,e=new WebAssembly.RuntimeError(e+\". Build with -sASSERTIONS for more info.\"),x(e),e}var re=e=>e.startsWith(\"data:application/octet-stream;base64,\"),ue=e=>e.startsWith(\"file://\"),Ee;Ee=\"ort-wasm-threaded.wasm\",re(Ee)||(Ee=W(Ee));function Se(e){if(Z)return Z(e);throw\"both async and sync fetching of the wasm failed\"}function Le(e){if(R||B){if(typeof fetch==\"function\"&&!ue(e))return fetch(e,{credentials:\"same-origin\"}).then(r=>{if(!r.ok)throw`failed to load wasm binary file at '${e}'`;return r.arrayBuffer()}).catch(()=>Se(e));if(pe)return new Promise((r,n)=>{pe(e,l=>r(new Uint8Array(l)),n)})}return Promise.resolve().then(()=>Se(e))}function ze(e,r,n){return Le(e).then(l=>WebAssembly.instantiate(l,r)).then(n,l=>{ne(`failed to asynchronously prepare wasm: ${l}`),te(l)})}function rt(e,r){var n=Ee;return typeof WebAssembly.instantiateStreaming!=\"function\"||re(n)||ue(n)||D||typeof fetch!=\"function\"?ze(n,e,r):fetch(n,{credentials:\"same-origin\"}).then(l=>WebAssembly.instantiateStreaming(l,e).then(r,function(y){return ne(`wasm streaming compile failed: ${y}`),ne(\"falling back to ArrayBuffer instantiation\"),ze(n,e,r)}))}var Te,Ge={799444:(e,r,n,l)=>{if(typeof s>\"u\"||!s.bb)return 1;if(e=ee(e>>>0),e.startsWith(\"./\")&&(e=e.substring(2)),e=s.bb.get(e),!e)return 2;if(r>>>=0,n>>>=0,l>>>=0,r+n>e.byteLength)return 3;try{return h().set(e.subarray(r,r+n),l>>>0),0}catch{return 4}}};function ke(e){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${e})`,this.status=e}var We=e=>{e.terminate(),e.onmessage=()=>{}},nt=e=>{M.Oa.length==0&&(Je(),M.Xa(M.Oa[0]));var r=M.Oa.pop();if(!r)return 6;M.Pa.push(r),M.La[e.Na]=r,r.Na=e.Na;var n={cmd:\"run\",start_routine:e.gb,arg:e.cb,pthread_ptr:e.Na};return D&&r.unref(),r.postMessage(n,e.mb),0},De=0,at=e=>{var r=Ot();return e=e(),ft(r),e},G=(e,r,...n)=>at(()=>{for(var l=n.length,y=wt(8*l),b=y>>>3,v=0;v>>0]=z}return rr(e,0,l,y,r)});function qe(e){if(T)return G(0,1,e);F=e,0{if(F=e,T)throw st(e),\"unwind\";qe(e)};function P(){for(var e=s.numThreads;e--;)Je();Oe.unshift(()=>{Ae++,ot(()=>Be())})}function Je(){var e=W(\"ort-wasm-threaded.worker.js\");e=new Worker(e),M.Oa.push(e)}function ot(e){T?e():Promise.all(M.Oa.map(M.Xa)).then(e)}var M={Oa:[],Pa:[],ab:[],La:{},Va(){T?(M.receiveObjectTransfer=M.fb,M.threadInitTLS=M.$a,M.setExitStatus=M.Za):P()},Za:e=>F=e,pb:[\"$terminateWorker\"],hb:()=>{for(var e of M.Pa)We(e);for(e of M.Oa)We(e);M.Oa=[],M.Pa=[],M.La=[]},Ya:e=>{var r=e.Na;delete M.La[r],M.Oa.push(e),M.Pa.splice(M.Pa.indexOf(e),1),e.Na=0,bt(r)},fb(){},$a(){M.ab.forEach(e=>e())},Xa:e=>new Promise(r=>{e.onmessage=b=>{b=b.data;var v=b.cmd;if(b.targetThread&&b.targetThread!=ut()){var z=M.La[b.targetThread];z?z.postMessage(b,b.transferList):ne(`Internal error! Worker sent a message \"${v}\" to target pthread ${b.targetThread}, but that thread no longer exists!`)}else v===\"checkMailbox\"?it():v===\"spawnThread\"?nt(b):v===\"cleanupThread\"?M.Ya(M.La[b.thread]):v===\"killThread\"?(b=b.thread,v=M.La[b],delete M.La[b],We(v),bt(b),M.Pa.splice(M.Pa.indexOf(v),1),v.Na=0):v===\"cancelThread\"?M.La[b.thread].postMessage({cmd:\"cancel\"}):v===\"loaded\"?(e.loaded=!0,D&&!e.Na&&e.unref(),r(e)):v===\"alert\"?alert(`Thread ${b.threadId}: ${b.text}`):b.target===\"setimmediate\"?e.postMessage(b):v===\"callHandler\"?s[b.handler](...b.args):v&&ne(`worker sent an unknown command ${v}`)},e.onerror=b=>{throw ne(`worker sent an error! ${b.filename}:${b.lineno}: ${b.message}`),b},D&&(e.on(\"message\",b=>e.onmessage({data:b})),e.on(\"error\",b=>e.onerror(b)));var n=[],l=[\"onExit\"],y;for(y of l)s.hasOwnProperty(y)&&n.push(y);e.postMessage({cmd:\"load\",handlers:n,urlOrBlob:s.mainScriptUrlOrBlob||i,wasmMemory:X,wasmModule:we})})};s.PThread=M;var Ne=e=>{for(;0{var e=ut(),r=w()[e+52>>>2>>>0];e=w()[e+56>>>2>>>0],or(r,r-e),ft(r)};function st(e){if(T)return G(1,0,e);Ve(e)}var Fe=[],Xe;s.invokeEntryPoint=(e,r)=>{De=0;var n=Fe[e];n||(e>=Fe.length&&(Fe.length=e+1),Fe[e]=n=Xe.get(e)),e=n(r),0>>2>>>0]=0,w()[this.Ua+4>>>2>>>0]=r,w()[this.Ua+8>>>2>>>0]=n}}var o=0,u=0;function m(e,r,n,l){return T?G(2,1,e,r,n,l):O(e,r,n,l)}function O(e,r,n,l){if(e>>>=0,r>>>=0,n>>>=0,l>>>=0,typeof SharedArrayBuffer>\"u\")return ne(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var y=[];return T&&y.length===0?m(e,r,n,l):(e={gb:n,Na:e,cb:l,mb:y},T?(e.ob=\"spawnThread\",postMessage(e,y),0):nt(e))}var E=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,U=(e,r,n)=>{r>>>=0;var l=r+n;for(n=r;e[n]&&!(n>=l);)++n;if(16y?l+=String.fromCharCode(y):(y-=65536,l+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else l+=String.fromCharCode(y)}return l},ee=(e,r)=>(e>>>=0)?U(h(),e,r):\"\";function ye(e,r,n){return T?G(3,1,e,r,n):0}function oe(e,r){if(T)return G(4,1,e,r)}var se=e=>{for(var r=0,n=0;n=l?r++:2047>=l?r+=2:55296<=l&&57343>=l?(r+=4,++n):r+=3}return r},Qe=(e,r,n,l)=>{if(n>>>=0,!(0=v){var z=e.charCodeAt(++b);v=65536+((v&1023)<<10)|z&1023}if(127>=v){if(n>=l)break;r[n++>>>0]=v}else{if(2047>=v){if(n+1>=l)break;r[n++>>>0]=192|v>>6}else{if(65535>=v){if(n+2>=l)break;r[n++>>>0]=224|v>>12}else{if(n+3>=l)break;r[n++>>>0]=240|v>>18,r[n++>>>0]=128|v>>12&63}r[n++>>>0]=128|v>>6&63}r[n++>>>0]=128|v&63}}return r[n>>>0]=0,n-y},Re=(e,r,n)=>Qe(e,h(),r,n);function d(e,r){if(T)return G(5,1,e,r)}function k(e,r,n){if(T)return G(6,1,e,r,n)}function $(e,r,n){return T?G(7,1,e,r,n):0}function Me(e,r){if(T)return G(8,1,e,r)}function Ze(e,r,n){if(T)return G(9,1,e,r,n)}function Rt(e,r,n,l){if(T)return G(10,1,e,r,n,l)}function It(e,r,n,l){if(T)return G(11,1,e,r,n,l)}function Bt(e,r,n,l){if(T)return G(12,1,e,r,n,l)}function kt(e){if(T)return G(13,1,e)}function Wt(e,r){if(T)return G(14,1,e,r)}function Nt(e,r,n){if(T)return G(15,1,e,r,n)}function dt(e){e>>>=0,typeof Atomics.nb==\"function\"&&(Atomics.nb(f(),e>>>2,e).value.then(it),e+=128,Atomics.store(f(),e>>>2,1))}s.__emscripten_thread_mailbox_await=dt;var it=()=>{var e=ut();if(e&&(dt(e),e=nr,!me))try{if(e(),!(0e%4===0&&(e%100!==0||e%400===0),Ht=[0,31,60,91,121,152,182,213,244,274,305,335],Gt=[0,31,59,90,120,151,181,212,243,273,304,334];function $t(e,r,n,l,y,b,v,z){return T?G(16,1,e,r,n,l,y,b,v,z):-52}function Yt(e,r,n,l,y,b,v){if(T)return G(17,1,e,r,n,l,y,b,v)}var mt=[],gt={},jt=()=>{if(!ht){var e={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:I||\"./this.program\"},r;for(r in gt)gt[r]===void 0?delete e[r]:e[r]=gt[r];var n=[];for(r in e)n.push(`${r}=${e[r]}`);ht=n}return ht},ht;function zt(e,r){if(T)return G(18,1,e,r);e>>>=0,r>>>=0;var n=0;return jt().forEach((l,y)=>{var b=r+n;for(y=w()[e+4*y>>>2>>>0]=b,b=0;b>>0]=l.charCodeAt(b);a()[y>>>0]=0,n+=l.length+1}),0}function qt(e,r){if(T)return G(19,1,e,r);e>>>=0,r>>>=0;var n=jt();w()[e>>>2>>>0]=n.length;var l=0;return n.forEach(y=>l+=y.length+1),w()[r>>>2>>>0]=l,0}function Vt(e){return T?G(20,1,e):52}function Jt(e,r,n,l){return T?G(21,1,e,r,n,l):52}function Xt(e,r,n,l,y){return T?G(22,1,e,r,n,l,y):70}var Hr=[null,[],[]];function Qt(e,r,n,l){if(T)return G(23,1,e,r,n,l);r>>>=0,n>>>=0,l>>>=0;for(var y=0,b=0;b>>2>>>0],z=w()[r+4>>>2>>>0];r+=8;for(var Ce=0;Ce>>0],he=Hr[e];fe===0||fe===10?((e===1?Ie:ne)(U(he,0)),he.length=0):he.push(fe)}y+=z}return w()[l>>>2>>>0]=y,0}var Zt=[31,29,31,30,31,30,31,31,30,31,30,31],Kt=[31,28,31,30,31,30,31,31,30,31,30,31];function Gr(e){var r=Array(se(e)+1);return Qe(e,r,0,r.length),r}var $r=(e,r)=>{a().set(e,r>>>0)};function er(e,r,n,l){function y(p,N,q){for(p=typeof p==\"number\"?p.toString():p||\"\";p.lengthfr?-1:0He-p.getDate())N-=He-p.getDate()+1,p.setDate(1),11>q?p.setMonth(q+1):(p.setMonth(0),p.setFullYear(p.getFullYear()+1));else{p.setDate(p.getDate()+N);break}}return q=new Date(p.getFullYear()+1,0,4),N=z(new Date(p.getFullYear(),0,4)),q=z(q),0>=v(N,p)?0>=v(q,p)?p.getFullYear()+1:p.getFullYear():p.getFullYear()-1}e>>>=0,r>>>=0,n>>>=0,l>>>=0;var fe=w()[l+40>>>2>>>0];l={kb:f()[l>>>2>>>0],jb:f()[l+4>>>2>>>0],Sa:f()[l+8>>>2>>>0],Wa:f()[l+12>>>2>>>0],Ta:f()[l+16>>>2>>>0],Ra:f()[l+20>>>2>>>0],Ma:f()[l+24>>>2>>>0],Qa:f()[l+28>>>2>>>0],qb:f()[l+32>>>2>>>0],ib:f()[l+36>>>2>>>0],lb:fe?ee(fe):\"\"},n=ee(n),fe={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var he in fe)n=n.replace(new RegExp(he,\"g\"),fe[he]);var ir=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),ur=\"January February March April May June July August September October November December\".split(\" \");fe={\"%a\":p=>ir[p.Ma].substring(0,3),\"%A\":p=>ir[p.Ma],\"%b\":p=>ur[p.Ta].substring(0,3),\"%B\":p=>ur[p.Ta],\"%C\":p=>b((p.Ra+1900)/100|0,2),\"%d\":p=>b(p.Wa,2),\"%e\":p=>y(p.Wa,2,\" \"),\"%g\":p=>Ce(p).toString().substring(2),\"%G\":Ce,\"%H\":p=>b(p.Sa,2),\"%I\":p=>(p=p.Sa,p==0?p=12:12{for(var N=0,q=0;q<=p.Ta-1;N+=($e(p.Ra+1900)?Zt:Kt)[q++]);return b(p.Wa+N,3)},\"%m\":p=>b(p.Ta+1,2),\"%M\":p=>b(p.jb,2),\"%n\":()=>`\n`,\"%p\":p=>0<=p.Sa&&12>p.Sa?\"AM\":\"PM\",\"%S\":p=>b(p.kb,2),\"%t\":()=>\"\t\",\"%u\":p=>p.Ma||7,\"%U\":p=>b(Math.floor((p.Qa+7-p.Ma)/7),2),\"%V\":p=>{var N=Math.floor((p.Qa+7-(p.Ma+6)%7)/7);if(2>=(p.Ma+371-p.Qa-2)%7&&N++,N)N==53&&(q=(p.Ma+371-p.Qa)%7,q==4||q==3&&$e(p.Ra)||(N=1));else{N=52;var q=(p.Ma+7-p.Qa-1)%7;(q==4||q==5&&$e(p.Ra%400-1))&&N++}return b(N,2)},\"%w\":p=>p.Ma,\"%W\":p=>b(Math.floor((p.Qa+7-(p.Ma+6)%7)/7),2),\"%y\":p=>(p.Ra+1900).toString().substring(2),\"%Y\":p=>p.Ra+1900,\"%z\":p=>{p=p.ib;var N=0<=p;return p=Math.abs(p)/60,(N?\"+\":\"-\")+(\"0000\"+(p/60*100+p%60)).slice(-4)},\"%Z\":p=>p.lb,\"%%\":()=>\"%\"},n=n.replace(/%%/g,\"\\0\\0\");for(he in fe)n.includes(he)&&(n=n.replace(new RegExp(he,\"g\"),fe[he](l)));return n=n.replace(/\\0\\0/g,\"%\"),he=Gr(n),he.length>r?0:($r(he,e),he.length-1)}M.Va();var Yr=[qe,st,m,ye,oe,d,k,$,Me,Ze,Rt,It,Bt,kt,Wt,Nt,$t,Yt,zt,qt,Vt,Jt,Xt,Qt],jr={b:function(e,r,n){throw e>>>=0,new t(e).Va(r>>>0,n>>>0),o=e,u++,o},L:function(e){tr(e>>>0,!B,1,!R,131072,!1),M.$a()},j:function(e){e>>>=0,T?postMessage({cmd:\"cleanupThread\",thread:e}):M.Ya(M.La[e])},H:O,h:ye,S:oe,D:d,F:k,T:$,Q:Me,J:Ze,P:Rt,n:It,E:Bt,B:kt,R:Wt,C:Nt,p:()=>1,z:function(e,r){e>>>=0,e==r>>>0?setTimeout(it):T?postMessage({targetThread:e,cmd:\"checkMailbox\"}):(e=M.La[e])&&e.postMessage({cmd:\"checkMailbox\"})},I:function(e,r,n,l,y){r>>>=0,n>>>=0,pt.length=l,y=y>>>0>>>3;for(var b=0;b>>0];return e=r?Ge[r]:Yr[e],M.eb=n,n=e(...pt),M.eb=0,n},K:dt,o:function(e){D&&M.La[e>>>0].ref()},s:function(e,r,n){e=r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN,n>>>=0,e=new Date(1e3*e),f()[n>>>2>>>0]=e.getUTCSeconds(),f()[n+4>>>2>>>0]=e.getUTCMinutes(),f()[n+8>>>2>>>0]=e.getUTCHours(),f()[n+12>>>2>>>0]=e.getUTCDate(),f()[n+16>>>2>>>0]=e.getUTCMonth(),f()[n+20>>>2>>>0]=e.getUTCFullYear()-1900,f()[n+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,f()[n+28>>>2>>>0]=e},t:function(e,r,n){e=r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN,n>>>=0,e=new Date(1e3*e),f()[n>>>2>>>0]=e.getSeconds(),f()[n+4>>>2>>>0]=e.getMinutes(),f()[n+8>>>2>>>0]=e.getHours(),f()[n+12>>>2>>>0]=e.getDate(),f()[n+16>>>2>>>0]=e.getMonth(),f()[n+20>>>2>>>0]=e.getFullYear()-1900,f()[n+24>>>2>>>0]=e.getDay(),r=($e(e.getFullYear())?Ht:Gt)[e.getMonth()]+e.getDate()-1|0,f()[n+28>>>2>>>0]=r,f()[n+36>>>2>>>0]=-(60*e.getTimezoneOffset()),r=new Date(e.getFullYear(),6,1).getTimezoneOffset();var l=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=(r!=l&&e.getTimezoneOffset()==Math.min(l,r))|0,f()[n+32>>>2>>>0]=e},u:function(e){e>>>=0;var r=new Date(f()[e+20>>>2>>>0]+1900,f()[e+16>>>2>>>0],f()[e+12>>>2>>>0],f()[e+8>>>2>>>0],f()[e+4>>>2>>>0],f()[e>>>2>>>0],0),n=f()[e+32>>>2>>>0],l=r.getTimezoneOffset(),y=new Date(r.getFullYear(),6,1).getTimezoneOffset(),b=new Date(r.getFullYear(),0,1).getTimezoneOffset(),v=Math.min(b,y);return 0>n?f()[e+32>>>2>>>0]=+(y!=b&&v==l):0>>2>>>0]=r.getDay(),n=($e(r.getFullYear())?Ht:Gt)[r.getMonth()]+r.getDate()-1|0,f()[e+28>>>2>>>0]=n,f()[e>>>2>>>0]=r.getSeconds(),f()[e+4>>>2>>>0]=r.getMinutes(),f()[e+8>>>2>>>0]=r.getHours(),f()[e+12>>>2>>>0]=r.getDate(),f()[e+16>>>2>>>0]=r.getMonth(),f()[e+20>>>2>>>0]=r.getYear(),e=r.getTime(),e=isNaN(e)?-1:e/1e3,ar((Te=e,1<=+Math.abs(Te)?0>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)),e>>>0},q:$t,r:Yt,y:function(e,r,n,l){e>>>=0,r>>>=0,n>>>=0,l>>>=0;var y=new Date().getFullYear(),b=new Date(y,0,1),v=new Date(y,6,1);y=b.getTimezoneOffset();var z=v.getTimezoneOffset(),Ce=Math.max(y,z);w()[e>>>2>>>0]=60*Ce,f()[r>>>2>>>0]=+(y!=z),e=fe=>fe.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1],b=e(b),v=e(v),z{te(\"\")},O:function(e,r,n){e>>>=0,r>>>=0,n>>>=0,mt.length=0;for(var l;l=h()[r++>>>0];){var y=l!=105;y&=l!=112,n+=y&&n%8?4:0,mt.push(l==112?w()[n>>>2>>>0]:l==105?f()[n>>>2>>>0]:g()[n>>>3>>>0]),n+=y?8:4}return Ge[e](...mt)},k:()=>{},i:()=>Date.now(),U:()=>{throw De+=1,\"unwind\"},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>D?(br(),et(hr)).cpus().length:navigator.hardwareConcurrency,x:function(e){e>>>=0;var r=h().length;if(e<=r||4294901760=n;n*=2){var l=r*(1+.2/n);l=Math.min(l,e+100663296);var y=Math;l=Math.max(e,l);e:{y=(y.min.call(y,4294901760,l+(65536-l%65536)%65536)-X.buffer.byteLength+65535)/65536;try{X.grow(y),K();var b=1;break e}catch{}b=void 0}if(b)return!0}return!1},M:zt,N:qt,G:Ve,g:Vt,m:Jt,v:Xt,l:Qt,a:X||s.wasmMemory,w:er,d:function(e,r,n,l){return er(e>>>0,r>>>0,n>>>0,l>>>0)}},C=function(){function e(n,l){return C=n.exports,C=zr(),M.ab.push(C.ya),Xe=C.za,Ue.unshift(C.V),we=l,Be(),C}var r={a:jr};if(Ae++,s.instantiateWasm)try{return s.instantiateWasm(r,e)}catch(n){ne(`Module.instantiateWasm callback failed with error: ${n}`),x(n)}return rt(r,function(n){e(n.instance,n.module)}).catch(x),{}}();s._OrtInit=(e,r)=>(s._OrtInit=C.W)(e,r),s._OrtGetLastError=(e,r)=>(s._OrtGetLastError=C.X)(e,r),s._OrtCreateSessionOptions=(e,r,n,l,y,b,v,z,Ce,fe)=>(s._OrtCreateSessionOptions=C.Y)(e,r,n,l,y,b,v,z,Ce,fe),s._OrtAppendExecutionProvider=(e,r)=>(s._OrtAppendExecutionProvider=C.Z)(e,r),s._OrtAddFreeDimensionOverride=(e,r,n)=>(s._OrtAddFreeDimensionOverride=C._)(e,r,n),s._OrtAddSessionConfigEntry=(e,r,n)=>(s._OrtAddSessionConfigEntry=C.$)(e,r,n),s._OrtReleaseSessionOptions=e=>(s._OrtReleaseSessionOptions=C.aa)(e),s._OrtCreateSession=(e,r,n)=>(s._OrtCreateSession=C.ba)(e,r,n),s._OrtReleaseSession=e=>(s._OrtReleaseSession=C.ca)(e),s._OrtGetInputOutputCount=(e,r,n)=>(s._OrtGetInputOutputCount=C.da)(e,r,n),s._OrtGetInputName=(e,r)=>(s._OrtGetInputName=C.ea)(e,r),s._OrtGetOutputName=(e,r)=>(s._OrtGetOutputName=C.fa)(e,r),s._OrtFree=e=>(s._OrtFree=C.ga)(e),s._OrtCreateTensor=(e,r,n,l,y,b)=>(s._OrtCreateTensor=C.ha)(e,r,n,l,y,b),s._OrtGetTensorData=(e,r,n,l,y)=>(s._OrtGetTensorData=C.ia)(e,r,n,l,y),s._OrtReleaseTensor=e=>(s._OrtReleaseTensor=C.ja)(e),s._OrtCreateRunOptions=(e,r,n,l)=>(s._OrtCreateRunOptions=C.ka)(e,r,n,l),s._OrtAddRunConfigEntry=(e,r,n)=>(s._OrtAddRunConfigEntry=C.la)(e,r,n),s._OrtReleaseRunOptions=e=>(s._OrtReleaseRunOptions=C.ma)(e),s._OrtCreateBinding=e=>(s._OrtCreateBinding=C.na)(e),s._OrtBindInput=(e,r,n)=>(s._OrtBindInput=C.oa)(e,r,n),s._OrtBindOutput=(e,r,n,l)=>(s._OrtBindOutput=C.pa)(e,r,n,l),s._OrtClearBoundOutputs=e=>(s._OrtClearBoundOutputs=C.qa)(e),s._OrtReleaseBinding=e=>(s._OrtReleaseBinding=C.ra)(e),s._OrtRunWithBinding=(e,r,n,l,y)=>(s._OrtRunWithBinding=C.sa)(e,r,n,l,y),s._OrtRun=(e,r,n,l,y,b,v,z)=>(s._OrtRun=C.ta)(e,r,n,l,y,b,v,z),s._OrtEndProfiling=e=>(s._OrtEndProfiling=C.ua)(e);var ut=s._pthread_self=()=>(ut=s._pthread_self=C.va)();s._malloc=e=>(s._malloc=C.wa)(e),s._free=e=>(s._free=C.xa)(e),s.__emscripten_tls_init=()=>(s.__emscripten_tls_init=C.ya)();var tr=s.__emscripten_thread_init=(e,r,n,l,y,b)=>(tr=s.__emscripten_thread_init=C.Aa)(e,r,n,l,y,b);s.__emscripten_thread_crashed=()=>(s.__emscripten_thread_crashed=C.Ba)();var rr=(e,r,n,l,y)=>(rr=C.Ca)(e,r,n,l,y),bt=e=>(bt=C.Da)(e),yt=s.__emscripten_thread_exit=e=>(yt=s.__emscripten_thread_exit=C.Ea)(e),nr=()=>(nr=C.Fa)(),ar=e=>(ar=C.Ga)(e),or=(e,r)=>(or=C.Ha)(e,r),ft=e=>(ft=C.Ia)(e),wt=e=>(wt=C.Ja)(e),Ot=()=>(Ot=C.Ka)();function zr(){var e=C;e=Object.assign({},e);var r=l=>()=>l()>>>0,n=l=>y=>l(y)>>>0;return e.va=r(e.va),e.wa=n(e.wa),e.emscripten_main_runtime_thread_id=r(e.emscripten_main_runtime_thread_id),e.Ja=n(e.Ja),e.Ka=r(e.Ka),e}s.wasmMemory=X,s.stackSave=()=>Ot(),s.stackRestore=e=>ft(e),s.stackAlloc=e=>wt(e),s.keepRuntimeAlive=()=>0yr)});var vr=Ke((yn,tn)=>{tn.exports='\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(...e){var a=e.join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,a+`\\n`);return}console.error(a)}function threadAlert(...e){var a=e.join(\" \");postMessage({cmd:\"alert\",text:a,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,a)=>{var r=Module.wasmModule;Module.wasmModule=null;var t=new WebAssembly.Instance(r,e);return a(t)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let r=[];self.onmessage=t=>r.push(t),self.startWorker=t=>{Module=t,postMessage({cmd:\"loaded\"});for(let s of r)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const t of e.data.handlers)Module[t]=(...s)=>{postMessage({cmd:\"callHandler\",handler:t,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var a=URL.createObjectURL(e.data.urlOrBlob);importScripts(a),URL.revokeObjectURL(a)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(r){if(r!=\"unwind\")throw r}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(r){throw Module.__emscripten_thread_crashed?.(),r}}self.onmessage=handleMessage;\\n'});var Er;Er=pr();var rn=Or(),Ft,Pt=!1,ct=!1,_r=!1,nn=i=>{if(i===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+i+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+i+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},an=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},on=(i,c)=>i?c?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":c?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",Sr=async i=>{if(Pt)return Promise.resolve();if(ct)throw new Error(\"multiple calls to 'initializeWebAssembly()' detected.\");if(_r)throw new Error(\"previous call to 'initializeWebAssembly()' failed.\");ct=!0;let c=i.initTimeout,a=i.numThreads,h=i.simd,f=nn(a),w=h&&an(),g=i.wasmPaths,s=typeof g==\"string\"?g:void 0,S=on(w,f),x=typeof g==\"object\"?g[S]:void 0,H=!1,A=[];if(c>0&&A.push(new Promise(I=>{setTimeout(()=>{H=!0,I()},c)})),A.push(new Promise((I,V)=>{let R=f?rn:Er,B={locateFile:(D,T)=>f&&D.endsWith(\".worker.js\")&&typeof Blob<\"u\"?URL.createObjectURL(new Blob([vr()],{type:\"text/javascript\"})):D.endsWith(\".wasm\")?x||(s??T)+S:T+D};if(f)if(B.numThreads=a,typeof Blob>\"u\")B.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let D=`var ortWasmThreaded=${R.toString()};`;B.mainScriptUrlOrBlob=new Blob([D],{type:\"text/javascript\"})}R(B).then(D=>{ct=!1,Pt=!0,Ft=D,I()},D=>{ct=!1,_r=!0,V(D)})})),await Promise.race(A),H)throw new Error(`WebAssembly backend initializing failed due to timeout: ${c}ms`)},Q=()=>{if(Pt&&Ft)return Ft;throw new Error(\"WebAssembly is not initialized yet.\")};var Y=(i,c)=>{let a=Q(),h=a.lengthBytesUTF8(i)+1,f=a._malloc(h);return a.stringToUTF8(i,f,h),c.push(f),f},tt=(i,c,a,h)=>{if(typeof i==\"object\"&&i!==null){if(a.has(i))throw new Error(\"Circular reference in options\");a.add(i)}Object.entries(i).forEach(([f,w])=>{let g=c?c+f:f;if(typeof w==\"object\")tt(w,g+\".\",a,h);else if(typeof w==\"string\"||typeof w==\"number\")h(g,w.toString());else if(typeof w==\"boolean\")h(g,w?\"1\":\"0\");else throw new Error(`Can't handle extra config type: ${typeof w}`)})},j=i=>{let c=Q(),a=c.stackSave();try{let h=c.stackAlloc(8);c._OrtGetLastError(h,h+4);let f=c.HEAP32[h/4],w=c.HEAPU32[h/4+1],g=w?c.UTF8ToString(w):\"\";throw new Error(`${i} ERROR_CODE: ${f}, ERROR_MESSAGE: ${g}`)}finally{c.stackRestore(a)}};var Ar=i=>{let c=Q(),a=0,h=[],f=i||{};try{if(i?.logSeverityLevel===void 0)f.logSeverityLevel=2;else if(typeof i.logSeverityLevel!=\"number\"||!Number.isInteger(i.logSeverityLevel)||i.logSeverityLevel<0||i.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${i.logSeverityLevel}`);if(i?.logVerbosityLevel===void 0)f.logVerbosityLevel=0;else if(typeof i.logVerbosityLevel!=\"number\"||!Number.isInteger(i.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${i.logVerbosityLevel}`);i?.terminate===void 0&&(f.terminate=!1);let w=0;return i?.tag!==void 0&&(w=Y(i.tag,h)),a=c._OrtCreateRunOptions(f.logSeverityLevel,f.logVerbosityLevel,!!f.terminate,w),a===0&&j(\"Can't create run options.\"),i?.extra!==void 0&&tt(i.extra,\"\",new WeakSet,(g,s)=>{let S=Y(g,h),x=Y(s,h);c._OrtAddRunConfigEntry(a,S,x)!==0&&j(`Can't set a run config entry: ${g} - ${s}.`)}),[a,h]}catch(w){throw a!==0&&c._OrtReleaseRunOptions(a),h.forEach(g=>c._free(g)),w}};var sn=i=>{switch(i){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${i}`)}},un=i=>{switch(i){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${i}`)}},fn=i=>{i.extra||(i.extra={}),i.extra.session||(i.extra.session={});let c=i.extra.session;c.use_ort_model_bytes_directly||(c.use_ort_model_bytes_directly=\"1\"),i.executionProviders&&i.executionProviders.some(a=>(typeof a==\"string\"?a:a.name)===\"webgpu\")&&(i.enableMemPattern=!1)},ln=(i,c,a)=>{for(let h of c){let f=typeof h==\"string\"?h:h.name;switch(f){case\"webnn\":if(f=\"WEBNN\",typeof h!=\"string\"){let g=h;if(g?.deviceType){let s=Y(\"deviceType\",a),S=Y(g.deviceType,a);Q()._OrtAddSessionConfigEntry(i,s,S)!==0&&j(`Can't set a session config entry: 'deviceType' - ${g.deviceType}.`)}if(g?.numThreads){let s=g.numThreads;(typeof s!=\"number\"||!Number.isInteger(s)||s<0)&&(s=0);let S=Y(\"numThreads\",a),x=Y(s.toString(),a);Q()._OrtAddSessionConfigEntry(i,S,x)!==0&&j(`Can't set a session config entry: 'numThreads' - ${g.numThreads}.`)}if(g?.powerPreference){let s=Y(\"powerPreference\",a),S=Y(g.powerPreference,a);Q()._OrtAddSessionConfigEntry(i,s,S)!==0&&j(`Can't set a session config entry: 'powerPreference' - ${g.powerPreference}.`)}}break;case\"webgpu\":if(f=\"JS\",typeof h!=\"string\"){let g=h;if(g?.preferredLayout){if(g.preferredLayout!==\"NCHW\"&&g.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${g.preferredLayout}`);let s=Y(\"preferredLayout\",a),S=Y(g.preferredLayout,a);Q()._OrtAddSessionConfigEntry(i,s,S)!==0&&j(`Can't set a session config entry: 'preferredLayout' - ${g.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${f}`)}let w=Y(f,a);Q()._OrtAppendExecutionProvider(i,w)!==0&&j(`Can't append execution provider: ${f}.`)}},Tr=i=>{let c=Q(),a=0,h=[],f=i||{};fn(f);try{let w=sn(f.graphOptimizationLevel??\"all\"),g=un(f.executionMode??\"sequential\"),s=typeof f.logId==\"string\"?Y(f.logId,h):0,S=f.logSeverityLevel??2;if(!Number.isInteger(S)||S<0||S>4)throw new Error(`log serverity level is not valid: ${S}`);let x=f.logVerbosityLevel??0;if(!Number.isInteger(x)||x<0||x>4)throw new Error(`log verbosity level is not valid: ${x}`);let H=typeof f.optimizedModelFilePath==\"string\"?Y(f.optimizedModelFilePath,h):0;if(a=c._OrtCreateSessionOptions(w,!!f.enableCpuMemArena,!!f.enableMemPattern,g,!!f.enableProfiling,0,s,S,x,H),a===0&&j(\"Can't create session options.\"),f.executionProviders&&ln(a,f.executionProviders,h),f.enableGraphCapture!==void 0){if(typeof f.enableGraphCapture!=\"boolean\")throw new Error(`enableGraphCapture must be a boolean value: ${f.enableGraphCapture}`);let A=Y(\"enableGraphCapture\",h),I=Y(f.enableGraphCapture.toString(),h);c._OrtAddSessionConfigEntry(a,A,I)!==0&&j(`Can't set a session config entry: 'enableGraphCapture' - ${f.enableGraphCapture}.`)}if(f.freeDimensionOverrides)for(let[A,I]of Object.entries(f.freeDimensionOverrides)){if(typeof A!=\"string\")throw new Error(`free dimension override name must be a string: ${A}`);if(typeof I!=\"number\"||!Number.isInteger(I)||I<0)throw new Error(`free dimension override value must be a non-negative integer: ${I}`);let V=Y(A,h);c._OrtAddFreeDimensionOverride(a,V,I)!==0&&j(`Can't set a free dimension override: ${A} - ${I}.`)}return f.extra!==void 0&&tt(f.extra,\"\",new WeakSet,(A,I)=>{let V=Y(A,h),R=Y(I,h);c._OrtAddSessionConfigEntry(a,V,R)!==0&&j(`Can't set a session config entry: ${A} - ${I}.`)}),[a,h]}catch(w){throw a!==0&&c._OrtReleaseSessionOptions(a),h.forEach(g=>c._free(g)),w}};var xt=i=>{switch(i){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${i}`)}},Mr=i=>{switch(i){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${i}`)}},Ut=i=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][i],Cr=i=>{switch(i){case\"float16\":return typeof Float16Array<\"u\"&&Float16Array.from?Float16Array:Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${i}`)}},Dr=i=>{switch(i){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${i}`)}},Fr=i=>i===\"float32\"||i===\"float16\"||i===\"int32\"||i===\"int64\"||i===\"uint32\"||i===\"uint8\"||i===\"bool\",Pr=i=>{switch(i){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${i}`)}};var xr=async i=>{if(typeof i==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(i))}catch(c){if(c.code===\"ERR_FS_FILE_TOO_LARGE\"){let a=(void 0)(i),h=[];for await(let f of a)h.push(f);return new Uint8Array(Buffer.concat(h))}throw c}else{let c=await fetch(i);if(!c.ok)throw new Error(`failed to load external data file: ${i}`);let a=c.headers.get(\"Content-Length\"),h=a?parseInt(a,10):0;if(h<1073741824)return new Uint8Array(await c.arrayBuffer());{if(!c.body)throw new Error(`failed to load external data file: ${i}, no response body.`);let f=c.body.getReader(),w;try{w=new ArrayBuffer(h)}catch(s){if(s instanceof RangeError){let S=Math.ceil(h/65536);w=new WebAssembly.Memory({initial:S,maximum:S}).buffer}else throw s}let g=0;for(;;){let{done:s,value:S}=await f.read();if(s)break;let x=S.byteLength;new Uint8Array(w,g,x).set(S),g+=x}return new Uint8Array(w,0,h)}}else return i instanceof Blob?new Uint8Array(await i.arrayBuffer()):i instanceof Uint8Array?i:new Uint8Array(i)};var cn=(i,c)=>{Q()._OrtInit(i,c)!==0&&j(\"Can't initialize onnxruntime.\")},Lr=async i=>{cn(i.wasm.numThreads,Dr(i.logLevel))},Rr=async(i,c)=>{},Ye=new Map,dn=i=>{let c=Q(),a=c.stackSave();try{let h=c.stackAlloc(8);return c._OrtGetInputOutputCount(i,h,h+4)!==0&&j(\"Can't get session input/output count.\"),[c.HEAP32[h/4],c.HEAP32[h/4+1]]}finally{c.stackRestore(a)}},Lt=i=>{let c=Q(),a=c._malloc(i.byteLength);if(a===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${i.byteLength}.`);return c.HEAPU8.set(i,a),[a,i.byteLength]},Ir=async(i,c)=>{let a,h,f=Q();Array.isArray(i)?[a,h]=i:i.buffer===f.HEAPU8.buffer?[a,h]=[i.byteOffset,i.byteLength]:[a,h]=Lt(i);let w=0,g=0,s=0,S=[],x=[],H=[];try{if([g,S]=Tr(c),c?.externalData&&f.mountExternalData){let L=[];for(let W of c.externalData){let de=typeof W==\"string\"?W:W.path;L.push(xr(typeof W==\"string\"?W:W.data).then(pe=>{f.mountExternalData(de,pe)}))}await Promise.all(L)}w=await f._OrtCreateSession(a,h,g),w===0&&j(\"Can't create a session.\");let[A,I]=dn(w),V=!!c?.enableGraphCapture,R=[],B=[],D=[];for(let L=0;Lf._OrtFree(I)),H.forEach(I=>f._OrtFree(I)),s!==0&&f._OrtReleaseBinding(s),w!==0&&f._OrtReleaseSession(w),A}finally{f._free(a),g!==0&&f._OrtReleaseSessionOptions(g),S.forEach(A=>f._free(A)),f.unmountExternalData?.()}},Br=i=>{let c=Q(),a=Ye.get(i);if(!a)throw new Error(`cannot release session. invalid session id: ${i}`);let[h,f,w,g,s]=a;g&&(s&&c._OrtClearBoundOutputs(g.handle),c._OrtReleaseBinding(g.handle)),c.jsepOnReleaseSession?.(i),f.forEach(S=>c._OrtFree(S)),w.forEach(S=>c._OrtFree(S)),c._OrtReleaseSession(h),Ye.delete(i)},Ur=(i,c,a,h,f,w=!1)=>{if(!i){c.push(0);return}let g=Q(),s=i[0],S=i[1],x=i[3],H,A;if(s===\"string\"&&x===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(w&&x!==\"gpu-buffer\")throw new Error(`External buffer must be provided for input/output index ${f} when enableGraphCapture is true.`);if(x===\"gpu-buffer\"){let R=i[2].gpuBuffer,B=Ut(xt(s));A=S.reduce((T,L)=>T*L,1)*B;let D=g.jsepRegisterBuffer;if(!D)throw new Error('Tensor location \"gpu-buffer\" is not supported without using WebGPU.');H=D(h,f,R,A)}else{let R=i[2];if(Array.isArray(R)){A=4*R.length,H=g._malloc(A),a.push(H);let B=H/4;for(let D=0;Dg.HEAP32[R++]=D);let B=g._OrtCreateTensor(xt(s),H,A,V,S.length,Pr(x));B===0&&j(`Can't create tensor for input/output. session=${h}, index=${f}.`),c.push(B)}finally{g.stackRestore(I)}},kr=async(i,c,a,h,f,w)=>{let g=Q(),s=Ye.get(i);if(!s)throw new Error(`cannot run inference. invalid session id: ${i}`);let S=s[0],x=s[1],H=s[2],A=s[3],I=s[4],V=s[5],R=c.length,B=h.length,D=0,T=[],L=[],W=[],de=[],pe=g.stackSave(),Z=g.stackAlloc(R*4),_=g.stackAlloc(R*4),J=g.stackAlloc(B*4),Pe=g.stackAlloc(B*4);try{[D,T]=Ar(w);for(let F=0;Fte*re,1);ae=Mr(Ue);let Be=A?.outputPreferredLocations[h[F]];if(ae===\"string\"){if(Be===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let te=[],re=K/4;for(let ue=0;ue0){let te=g.jsepGetBuffer;if(!te)throw new Error('preferredLocation \"gpu-buffer\" is not supported without using WebGPU.');let re=te(K),ue=Ut(Ue);if(ue===void 0||!Fr(ae))throw new Error(`Unsupported data type: ${ae}`);be=!0,me.push([ae,_e,{gpuBuffer:re,download:g.jsepCreateDownloader(re,ge*ue,ae),dispose:()=>{g._OrtReleaseTensor(ie)}},\"gpu-buffer\"])}else{let te=Cr(ae),re=new te(ge);new Uint8Array(re.buffer,re.byteOffset,re.byteLength).set(g.HEAPU8.subarray(K,K+re.byteLength)),me.push([ae,_e,re,\"cpu\"])}}finally{g.stackRestore(xe),ae===\"string\"&&K&&g._free(K),be||g._OrtReleaseTensor(ie)}}return A&&!I&&(g._OrtClearBoundOutputs(A.handle),Ye.set(i,[S,x,H,A,I,!1])),me}finally{g.stackRestore(pe),L.forEach(le=>g._OrtReleaseTensor(le)),W.forEach(le=>g._OrtReleaseTensor(le)),de.forEach(le=>g._free(le)),D!==0&&g._OrtReleaseRunOptions(D),T.forEach(le=>g._free(le))}},Wr=i=>{let c=Q(),a=Ye.get(i);if(!a)throw new Error(\"invalid session id\");let h=a[0],f=c._OrtEndProfiling(h);f===0&&j(\"Can't get an profile file name.\"),c._OrtFree(f)},Nr=i=>{let c=[];for(let a of i){let h=a[2];!Array.isArray(h)&&\"buffer\"in h&&c.push(h.buffer)}return c};self.onmessage=i=>{let{type:c,in:a}=i.data;try{switch(c){case\"init-wasm\":Sr(a.wasm).then(()=>{Lr(a).then(()=>{postMessage({type:c})},h=>{postMessage({type:c,err:h})})},h=>{postMessage({type:c,err:h})});break;case\"init-ep\":{let{epName:h,env:f}=a;Rr(f,h).then(()=>{postMessage({type:c})},w=>{postMessage({type:c,err:w})});break}case\"copy-from\":{let{buffer:h}=a,f=Lt(h);postMessage({type:c,out:f});break}case\"create\":{let{model:h,options:f}=a;Ir(h,f).then(w=>{postMessage({type:c,out:w})},w=>{postMessage({type:c,err:w})});break}case\"release\":Br(a),postMessage({type:c});break;case\"run\":{let{sessionId:h,inputIndices:f,inputs:w,outputIndices:g,options:s}=a;kr(h,f,w,g,new Array(g.length).fill(null),s).then(S=>{S.some(x=>x[3]!==\"cpu\")?postMessage({type:c,err:\"Proxy does not support non-cpu tensor location.\"}):postMessage({type:c,out:S},Nr([...w,...S]))},S=>{postMessage({type:c,err:S})});break}case\"end-profiling\":Wr(a),postMessage({type:c});break;default:}}catch(h){postMessage({type:c,err:h})}};})();\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {env, InferenceSession} from 'onnxruntime-common';\n\nimport {OrtWasmMessage, SerializableInternalBuffer, SerializableSessionMetadata, SerializableTensorMetadata, TensorMetadata} from './proxy-messages';\nimport * as core from './wasm-core-impl';\nimport {initializeWebAssembly} from './wasm-factory';\n\nconst isProxy = (): boolean => !!env.wasm.proxy && typeof document !== 'undefined';\nlet proxyWorker: Worker|undefined;\nlet initializing = false;\nlet initialized = false;\nlet aborted = false;\n\ntype PromiseCallbacks = [resolve: (result: T) => void, reject: (reason: unknown) => void];\nlet initWasmCallbacks: PromiseCallbacks;\nconst queuedCallbacks: Map>> = new Map();\n\nconst enqueueCallbacks = (type: OrtWasmMessage['type'], callbacks: PromiseCallbacks): void => {\n const queue = queuedCallbacks.get(type);\n if (queue) {\n queue.push(callbacks);\n } else {\n queuedCallbacks.set(type, [callbacks]);\n }\n};\n\nconst ensureWorker = (): void => {\n if (initializing || !initialized || aborted || !proxyWorker) {\n throw new Error('worker not ready');\n }\n};\n\nconst onProxyWorkerMessage = (ev: MessageEvent): void => {\n switch (ev.data.type) {\n case 'init-wasm':\n initializing = false;\n if (ev.data.err) {\n aborted = true;\n initWasmCallbacks[1](ev.data.err);\n } else {\n initialized = true;\n initWasmCallbacks[0]();\n }\n break;\n case 'init-ep':\n case 'copy-from':\n case 'create':\n case 'release':\n case 'run':\n case 'end-profiling': {\n const callbacks = queuedCallbacks.get(ev.data.type)!;\n if (ev.data.err) {\n callbacks.shift()![1](ev.data.err);\n } else {\n callbacks.shift()![0](ev.data.out!);\n }\n break;\n }\n default:\n }\n};\n\nconst scriptSrc = typeof document !== 'undefined' ? (document?.currentScript as HTMLScriptElement)?.src : undefined;\n\nexport const initializeWebAssemblyAndOrtRuntime = async(): Promise => {\n if (initialized) {\n return;\n }\n if (initializing) {\n throw new Error('multiple calls to \\'initWasm()\\' detected.');\n }\n if (aborted) {\n throw new Error('previous call to \\'initWasm()\\' failed.');\n }\n\n initializing = true;\n\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n // overwrite wasm filepaths\n if (env.wasm.wasmPaths === undefined) {\n if (scriptSrc && scriptSrc.indexOf('blob:') !== 0) {\n env.wasm.wasmPaths = scriptSrc.substr(0, +(scriptSrc).lastIndexOf('/') + 1);\n }\n }\n\n return new Promise((resolve, reject) => {\n proxyWorker?.terminate();\n\n const workerUrl = URL.createObjectURL(new Blob(\n [\n // This require() function is handled by esbuild plugin to load file content as string.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n require('./proxy-worker/main')\n ],\n {type: 'text/javascript'}));\n proxyWorker = new Worker(workerUrl, {name: 'ort-wasm-proxy-worker'});\n proxyWorker.onerror = (ev: ErrorEvent) => reject(ev);\n proxyWorker.onmessage = onProxyWorkerMessage;\n URL.revokeObjectURL(workerUrl);\n initWasmCallbacks = [resolve, reject];\n const message: OrtWasmMessage = {type: 'init-wasm', in : env};\n proxyWorker.postMessage(message);\n });\n\n } else {\n try {\n await initializeWebAssembly(env.wasm);\n await core.initRuntime(env);\n initialized = true;\n } catch (e) {\n aborted = true;\n throw e;\n } finally {\n initializing = false;\n }\n }\n};\n\nexport const initializeOrtEp = async(epName: string): Promise => {\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n ensureWorker();\n return new Promise((resolve, reject) => {\n enqueueCallbacks('init-ep', [resolve, reject]);\n const message: OrtWasmMessage = {type: 'init-ep', in : {epName, env}};\n proxyWorker!.postMessage(message);\n });\n } else {\n await core.initEp(env, epName);\n }\n};\n\nexport const copyFromExternalBuffer = async(buffer: Uint8Array): Promise => {\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n ensureWorker();\n return new Promise((resolve, reject) => {\n enqueueCallbacks('copy-from', [resolve, reject]);\n const message: OrtWasmMessage = {type: 'copy-from', in : {buffer}};\n proxyWorker!.postMessage(message, [buffer.buffer]);\n });\n } else {\n return core.copyFromExternalBuffer(buffer);\n }\n};\n\nexport const createSession =\n async(model: SerializableInternalBuffer|Uint8Array, options?: InferenceSession.SessionOptions):\n Promise => {\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n // check unsupported options\n if (options?.preferredOutputLocation) {\n throw new Error('session option \"preferredOutputLocation\" is not supported for proxy.');\n }\n ensureWorker();\n return new Promise((resolve, reject) => {\n enqueueCallbacks('create', [resolve, reject]);\n const message: OrtWasmMessage = {type: 'create', in : {model, options: {...options}}};\n const transferable: Transferable[] = [];\n if (model instanceof Uint8Array) {\n transferable.push(model.buffer);\n }\n proxyWorker!.postMessage(message, transferable);\n });\n } else {\n return core.createSession(model, options);\n }\n };\n\nexport const releaseSession = async(sessionId: number): Promise => {\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n ensureWorker();\n return new Promise((resolve, reject) => {\n enqueueCallbacks('release', [resolve, reject]);\n const message: OrtWasmMessage = {type: 'release', in : sessionId};\n proxyWorker!.postMessage(message);\n });\n } else {\n core.releaseSession(sessionId);\n }\n};\n\nexport const run = async(\n sessionId: number, inputIndices: number[], inputs: TensorMetadata[], outputIndices: number[],\n outputs: Array, options: InferenceSession.RunOptions): Promise => {\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n // check inputs location\n if (inputs.some(t => t[3] !== 'cpu')) {\n throw new Error('input tensor on GPU is not supported for proxy.');\n }\n // check outputs location\n if (outputs.some(t => t)) {\n throw new Error('pre-allocated output tensor is not supported for proxy.');\n }\n ensureWorker();\n return new Promise((resolve, reject) => {\n enqueueCallbacks('run', [resolve, reject]);\n const serializableInputs = inputs as SerializableTensorMetadata[]; // every input is on CPU.\n const message: OrtWasmMessage =\n {type: 'run', in : {sessionId, inputIndices, inputs: serializableInputs, outputIndices, options}};\n proxyWorker!.postMessage(message, core.extractTransferableBuffers(serializableInputs));\n });\n } else {\n return core.run(sessionId, inputIndices, inputs, outputIndices, outputs, options);\n }\n};\n\nexport const endProfiling = async(sessionId: number): Promise => {\n if (!BUILD_DEFS.DISABLE_WASM_PROXY && isProxy()) {\n ensureWorker();\n return new Promise((resolve, reject) => {\n enqueueCallbacks('end-profiling', [resolve, reject]);\n const message: OrtWasmMessage = {type: 'end-profiling', in : sessionId};\n proxyWorker!.postMessage(message);\n });\n } else {\n core.endProfiling(sessionId);\n }\n};\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {InferenceSession, InferenceSessionHandler, SessionHandler, Tensor, TRACE_FUNC_BEGIN, TRACE_FUNC_END} from 'onnxruntime-common';\n\nimport {SerializableInternalBuffer, TensorMetadata} from './proxy-messages';\nimport {copyFromExternalBuffer, createSession, endProfiling, releaseSession, run} from './proxy-wrapper';\nimport {isGpuBufferSupportedType} from './wasm-common';\nimport {loadFile} from './wasm-utils-load-file';\n\nexport const encodeTensorMetadata = (tensor: Tensor, getName: () => string): TensorMetadata => {\n switch (tensor.location) {\n case 'cpu':\n return [tensor.type, tensor.dims, tensor.data, 'cpu'];\n case 'gpu-buffer':\n return [tensor.type, tensor.dims, {gpuBuffer: tensor.gpuBuffer}, 'gpu-buffer'];\n default:\n throw new Error(`invalid data location: ${tensor.location} for ${getName()}`);\n }\n};\n\nexport const decodeTensorMetadata = (tensor: TensorMetadata): Tensor => {\n switch (tensor[3]) {\n case 'cpu':\n return new Tensor(tensor[0], tensor[2], tensor[1]);\n case 'gpu-buffer': {\n const dataType = tensor[0];\n if (!isGpuBufferSupportedType(dataType)) {\n throw new Error(`not supported data type: ${dataType} for deserializing GPU tensor`);\n }\n const {gpuBuffer, download, dispose} = tensor[2];\n return Tensor.fromGpuBuffer(gpuBuffer, {dataType, dims: tensor[1], download, dispose});\n }\n default:\n throw new Error(`invalid data location: ${tensor[3]}`);\n }\n};\n\nexport class OnnxruntimeWebAssemblySessionHandler implements InferenceSessionHandler {\n private sessionId: number;\n\n inputNames: string[];\n outputNames: string[];\n\n async fetchModelAndCopyToWasmMemory(path: string): Promise {\n // fetch model from url and move to wasm heap.\n return copyFromExternalBuffer(await loadFile(path));\n }\n\n async loadModel(pathOrBuffer: string|Uint8Array, options?: InferenceSession.SessionOptions): Promise {\n TRACE_FUNC_BEGIN();\n let model: Parameters[0];\n\n if (typeof pathOrBuffer === 'string') {\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // node\n model = await loadFile(pathOrBuffer);\n } else {\n // browser\n // fetch model and copy to wasm heap.\n model = await this.fetchModelAndCopyToWasmMemory(pathOrBuffer);\n }\n } else {\n model = pathOrBuffer;\n }\n\n [this.sessionId, this.inputNames, this.outputNames] = await createSession(model, options);\n TRACE_FUNC_END();\n }\n\n async dispose(): Promise {\n return releaseSession(this.sessionId);\n }\n\n async run(feeds: SessionHandler.FeedsType, fetches: SessionHandler.FetchesType, options: InferenceSession.RunOptions):\n Promise {\n TRACE_FUNC_BEGIN();\n const inputArray: Tensor[] = [];\n const inputIndices: number[] = [];\n Object.entries(feeds).forEach(kvp => {\n const name = kvp[0];\n const tensor = kvp[1];\n const index = this.inputNames.indexOf(name);\n if (index === -1) {\n throw new Error(`invalid input '${name}'`);\n }\n inputArray.push(tensor);\n inputIndices.push(index);\n });\n\n const outputArray: Array = [];\n const outputIndices: number[] = [];\n Object.entries(fetches).forEach(kvp => {\n const name = kvp[0];\n const tensor = kvp[1];\n const index = this.outputNames.indexOf(name);\n if (index === -1) {\n throw new Error(`invalid output '${name}'`);\n }\n outputArray.push(tensor);\n outputIndices.push(index);\n });\n\n const inputs =\n inputArray.map((t, i) => encodeTensorMetadata(t, () => `input \"${this.inputNames[inputIndices[i]]}\"`));\n const outputs = outputArray.map(\n (t, i) => t ? encodeTensorMetadata(t, () => `output \"${this.outputNames[outputIndices[i]]}\"`) : null);\n\n const results = await run(this.sessionId, inputIndices, inputs, outputIndices, outputs, options);\n\n const resultMap: SessionHandler.ReturnType = {};\n for (let i = 0; i < results.length; i++) {\n resultMap[this.outputNames[outputIndices[i]]] = outputArray[i] ?? decodeTensorMetadata(results[i]);\n }\n TRACE_FUNC_END();\n return resultMap;\n }\n\n startProfiling(): void {\n // TODO: implement profiling\n }\n\n endProfiling(): void {\n void endProfiling(this.sessionId);\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {cpus} from 'node:os';\nimport {Backend, env, InferenceSession, InferenceSessionHandler} from 'onnxruntime-common';\n\nimport {initializeOrtEp, initializeWebAssemblyAndOrtRuntime} from './wasm/proxy-wrapper';\nimport {OnnxruntimeWebAssemblySessionHandler} from './wasm/session-handler-inference';\n\n/**\n * This function initializes all flags for WebAssembly.\n *\n * Those flags are accessible from `ort.env.wasm`. Users are allow to set those flags before the first inference session\n * being created, to override default value.\n */\nexport const initializeFlags = (): void => {\n if (typeof env.wasm.initTimeout !== 'number' || env.wasm.initTimeout < 0) {\n env.wasm.initTimeout = 0;\n }\n\n if (typeof env.wasm.simd !== 'boolean') {\n env.wasm.simd = true;\n }\n\n if (typeof env.wasm.proxy !== 'boolean') {\n env.wasm.proxy = false;\n }\n\n if (typeof env.wasm.trace !== 'boolean') {\n env.wasm.trace = false;\n }\n\n if (typeof env.wasm.numThreads !== 'number' || !Number.isInteger(env.wasm.numThreads) || env.wasm.numThreads <= 0) {\n // Web: when crossOriginIsolated is false, SharedArrayBuffer is not available so WebAssembly threads will not work.\n // Node.js: onnxruntime-web does not support multi-threads in Node.js.\n if ((typeof self !== 'undefined' && !self.crossOriginIsolated) ||\n (typeof process !== 'undefined' && process.versions && process.versions.node)) {\n env.wasm.numThreads = 1;\n }\n const numCpuLogicalCores = typeof navigator === 'undefined' ? cpus().length : navigator.hardwareConcurrency;\n env.wasm.numThreads = Math.min(4, Math.ceil((numCpuLogicalCores || 1) / 2));\n }\n};\n\nexport class OnnxruntimeWebAssemblyBackend implements Backend {\n /**\n * This function initializes the WebAssembly backend.\n *\n * This function will be called only once for each backend name. It will be called the first time when\n * `ort.InferenceSession.create()` is called with a registered backend name.\n *\n * @param backendName - the registered backend name.\n */\n async init(backendName: string): Promise {\n // populate wasm flags\n initializeFlags();\n\n // init wasm\n await initializeWebAssemblyAndOrtRuntime();\n\n // performe EP specific initialization\n await initializeOrtEp(backendName);\n }\n createInferenceSessionHandler(path: string, options?: InferenceSession.SessionOptions):\n Promise;\n createInferenceSessionHandler(buffer: Uint8Array, options?: InferenceSession.SessionOptions):\n Promise;\n async createInferenceSessionHandler(pathOrBuffer: string|Uint8Array, options?: InferenceSession.SessionOptions):\n Promise {\n const handler = new OnnxruntimeWebAssemblySessionHandler();\n await handler.loadModel(pathOrBuffer, options);\n return Promise.resolve(handler);\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nimport {OnnxruntimeWebAssemblyBackend} from './backend-wasm';\nexport const wasmBackend = new OnnxruntimeWebAssemblyBackend();\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports */\n// We use \"require\" instead of \"import\" here because import statement must be put in top level. Our current code does\n// not allow bundler to tree-shaking code as expected because some codes are treated as having side effects.\n// So we import code inside the if-clause to allow bundler remove the code safely.\n\nexport * from 'onnxruntime-common';\nimport * as ort from 'onnxruntime-common';\nexport default ort;\n\nimport {registerBackend, env} from 'onnxruntime-common';\nimport {version} from './version';\n\nif (!BUILD_DEFS.DISABLE_WEBGL) {\n const onnxjsBackend = require('./backend-onnxjs').onnxjsBackend;\n registerBackend('webgl', onnxjsBackend, -10);\n}\n\nif (!BUILD_DEFS.DISABLE_WASM) {\n const wasmBackend = BUILD_DEFS.DISABLE_TRAINING ? require('./backend-wasm-inference').wasmBackend :\n require('./backend-wasm-training').wasmBackend;\n if (!BUILD_DEFS.DISABLE_WEBGPU) {\n registerBackend('webgpu', wasmBackend, 5);\n registerBackend('webnn', wasmBackend, 5);\n }\n registerBackend('cpu', wasmBackend, 10);\n registerBackend('wasm', wasmBackend, 10);\n}\n\nObject.defineProperty(env.versions, 'web', {value: version, enumerable: true});\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n// This file is generated by /js/scripts/update-version.ts\n// Do not modify file content manually.\n\nexport const version = '1.18.0';\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// extracted by mini-css-extract-plugin\nexport default {};","// extracted by mini-css-extract-plugin\nexport default {};","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) => {\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props,\n }),\n );\n\n Component.displayName = `${iconName}`;\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('X', [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n]);\n\nexport default X;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Mic\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMmEzIDMgMCAwIDAtMyAzdjdhMyAzIDAgMCAwIDYgMFY1YTMgMyAwIDAgMC0zLTNaIiAvPgogIDxwYXRoIGQ9Ik0xOSAxMHYyYTcgNyAwIDAgMS0xNCAwdi0yIiAvPgogIDxsaW5lIHgxPSIxMiIgeDI9IjEyIiB5MT0iMTkiIHkyPSIyMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/mic\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Mic = createLucideIcon('Mic', [\n ['path', { d: 'M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z', key: '131961' }],\n ['path', { d: 'M19 10v2a7 7 0 0 1-14 0v-2', key: '1vc78b' }],\n ['line', { x1: '12', x2: '12', y1: '19', y2: '22', key: 'x3vr5v' }],\n]);\n\nexport default Mic;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Send\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNTM2IDIxLjY4NmEuNS41IDAgMCAwIC45MzctLjAyNGw2LjUtMTlhLjQ5Ni40OTYgMCAwIDAtLjYzNS0uNjM1bC0xOSA2LjVhLjUuNSAwIDAgMC0uMDI0LjkzN2w3LjkzIDMuMThhMiAyIDAgMCAxIDEuMTEyIDEuMTF6IiAvPgogIDxwYXRoIGQ9Im0yMS44NTQgMi4xNDctMTAuOTQgMTAuOTM5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/send\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Send = createLucideIcon('Send', [\n [\n 'path',\n {\n d: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z',\n key: '1ffxy3',\n },\n ],\n ['path', { d: 'm21.854 2.147-10.94 10.939', key: '12cjpa' }],\n]);\n\nexport default Send;\n","import React, { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { Mic, X, Send } from 'lucide-react';\n\ninterface RobotAssistantProps {\n isListening: boolean;\n onStartListening: () => void;\n onStopListening: () => void;\n inputText: string;\n setInputText: (text: string) => void;\n onTextSubmit: (text: string) => void;\n wsResponses: string[];\n turnoUsuario: boolean;\n}\n\ntype AnimationType = 'arrancar' | 'idle' | 'andar' | 'rodar' | 'reiniciar';\n\nconst RobotAssistant: React.FC = ({\n isListening,\n onStartListening,\n onStopListening,\n inputText,\n setInputText,\n onTextSubmit,\n wsResponses,\n turnoUsuario\n}: RobotAssistantProps) => {\n const [currentAnimation, setCurrentAnimation] = useState('arrancar');\n const [isInitialized, setIsInitialized] = useState(false);\n const [videosLoaded, setVideosLoaded] = useState(false);\n const [shouldPlayAudio, setShouldPlayAudio] = useState(false);\n \n const videoRef = useRef(null);\n const audioRef = useRef(null);\n const responseRef = useRef(null);\n const timeoutRef = useRef | null>(null);\n const videoSourcesRef = useRef>({} as Record);\n \n const animations: Record = {\n arrancar: '/arrancando.mp4',\n idle: '/idle.mp4',\n andar: '/andar.mp4',\n rodar: '/rodar.mp4',\n reiniciar: '/reiniciar.mp4'\n };\n\n const randomAnimations: AnimationType[] = ['andar', 'rodar', 'reiniciar'];\n\n // Preload all videos\n useEffect(() => {\n const loadVideos = async () => {\n const loadPromises = Object.entries(animations).map(async ([key, url]) => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const objectUrl = URL.createObjectURL(blob);\n videoSourcesRef.current[key as AnimationType] = objectUrl;\n } catch (error: unknown) {\n console.error(`Error loading video ${key}:`, error instanceof Error ? error.message : 'Unknown error');\n }\n });\n\n await Promise.all(loadPromises);\n setVideosLoaded(true);\n };\n\n loadVideos();\n\n return () => {\n Object.values(videoSourcesRef.current).forEach(url => {\n URL.revokeObjectURL(url);\n });\n };\n }, []);\n\n // Auto-scroll to latest response\n useEffect(() => {\n if (responseRef.current) {\n responseRef.current.scrollTop = responseRef.current.scrollHeight;\n }\n }, [wsResponses]);\n\n const getRandomAnimation = (): AnimationType => {\n const index = Math.floor(Math.random() * randomAnimations.length);\n return randomAnimations[index];\n };\n\n const handleVideoEnd = () => {\n if (!isInitialized && currentAnimation === 'arrancar') {\n setIsInitialized(true);\n setShouldPlayAudio(true);\n setCurrentAnimation('idle');\n return;\n }\n\n // Si es turno del usuario, mantener la animación idle\n if (turnoUsuario) {\n if (currentAnimation !== 'idle') {\n setCurrentAnimation('idle');\n } else if (videoRef.current) {\n videoRef.current.currentTime = 0;\n videoRef.current.play().catch((error: Error) => {\n console.error('Error playing video:', error.message);\n });\n }\n return;\n }\n\n // Si no es turno del usuario (está respondiendo), alternar entre animación aleatoria e idle\n if (currentAnimation === 'idle') {\n setCurrentAnimation(getRandomAnimation());\n } else {\n setCurrentAnimation('idle');\n }\n };\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && inputText.trim() && turnoUsuario) {\n onTextSubmit(inputText);\n }\n };\n\n // Handle video playback\n useEffect(() => {\n const playVideo = async () => {\n if (videoRef.current) {\n try {\n await videoRef.current.load();\n await videoRef.current.play();\n } catch (error: unknown) {\n console.error('Error playing video:', error instanceof Error ? error.message : 'Unknown error');\n }\n }\n };\n\n playVideo();\n }, [currentAnimation]);\n\n // Handle audio playback and settings\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = 0.3;\n audioRef.current.playbackRate = 0.4;\n\n if (isListening || !shouldPlayAudio) {\n audioRef.current.pause();\n } else {\n audioRef.current.play().catch((error: Error) => {\n console.error('Error playing audio:', error.message);\n });\n }\n }\n }, [isListening, shouldPlayAudio]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n if (audioRef.current) {\n audioRef.current.pause();\n audioRef.current.currentTime = 0;\n }\n };\n }, []);\n\n if (!videosLoaded) {\n return
Cargando animaciones...
;\n }\n\n return (\n
\n {/* Main content */}\n
\n {/* Media container with overlapped video and image */}\n
\n \"Robot\n \n\n {/* Response bubble overlayed */}\n {isListening && wsResponses.length > 0 && (\n
\n
\n {wsResponses.map((response: string, index: number) => (\n

\n {response}\n

\n ))}\n
\n
\n )}\n\n {/* Close button - stays overlapped */}\n {isListening && (\n \n \n \n )}\n\n {/* Microphone button overlayed */}\n {!isListening && (\n \n \n \n )}\n
\n\n {/* Input section below video */}\n {isListening && (\n
\n
\n ) => turnoUsuario && setInputText(e.target.value)}\n onKeyPress={handleKeyPress}\n placeholder={turnoUsuario ? \"Escribe o pregunta con tu voz a Lenny\" : \"Espera tu turno...\"}\n className={`flex-1 p-2 rounded-lg ${turnoUsuario ? 'bg-blue-800' : 'bg-blue-950 cursor-not-allowed'} text-white placeholder-blue-300 focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm`}\n disabled={!turnoUsuario}\n />\n turnoUsuario && onTextSubmit(inputText)}\n className={`p-2 rounded-lg text-white ${\n turnoUsuario && inputText.trim() \n ? 'bg-blue-700 hover:bg-blue-600' \n : 'bg-blue-950 cursor-not-allowed'\n }`}\n disabled={!turnoUsuario || !inputText.trim()}\n >\n \n \n
\n
\n )}\n
\n\n \n
\n );\n};\n\nexport default RobotAssistant;\n","import React from 'react';\n\ninterface WelcomeDialogProps {\n onAccept: () => void;\n onDecline: () => void;\n}\n\nconst WelcomeDialog: React.FC = ({ onAccept, onDecline }) => {\n return (\n
\n
\n

¿Quieres conocer a Lenny?

\n
\n \n Sí\n \n \n No\n \n
\n
\n
\n );\n};\n\nexport default WelcomeDialog;\n","import React, { useEffect, useRef, useState } from 'react';\nimport './App.css';\nimport { useMicVAD, utils as vadUtils } from \"@ricky0123/vad-react\";\nimport RobotAssistant from './components/RobotAssistant';\nimport WelcomeDialog from './components/WelcomeDialog';\n\nconst volumeThreshold = 0.20;\n\nenum Estado {\n Cargando,\n Reproduciendo,\n Parado\n}\n\nconst calculatePeakLevel = (audioBuffer: Float32Array) => {\n let maxVal = 0.0;\n for (let i = 0; i < audioBuffer.length; i++) {\n const absVal = Math.abs(audioBuffer[i]);\n if (absVal > maxVal) {\n maxVal = absVal;\n }\n }\n return maxVal;\n}\n\ninterface AudioResponse {\n chunks: Uint8Array[];\n isComplete: boolean;\n}\n\nfunction App(): JSX.Element {\n const [showWelcome, setShowWelcome] = useState(true);\n const [showStaticImage, setShowStaticImage] = useState(false);\n const [userSpeaking, setUserSpeaking] = useState(false);\n const [estado, setEstado] = useState(Estado.Parado);\n const [turnoUsuario, setTurnoUsuario] = useState(false);\n const [inputText, setInputText] = useState('');\n const [wsResponses, setWsResponses] = useState([]);\n \n const wsRef = useRef(null);\n const audioContextRef = useRef(null);\n const audioQueue = useRef([]);\n const isPlayingRef = useRef(false);\n const waitingForEndMarker = useRef(false);\n\n const vad = useMicVAD({\n startOnLoad: false,\n onSpeechStart: () => {\n setUserSpeaking(true);\n },\n onVADMisfire: () => {\n setUserSpeaking(false);\n },\n onSpeechEnd: (audio: Float32Array) => {\n setUserSpeaking(false);\n const volume = calculatePeakLevel(audio);\n console.log(\"Volumen:\", volume);\n\n if (volume > volumeThreshold) {\n setTurnoUsuario(false);\n console.log('User stopped talking');\n \n const wavBuffer = vadUtils.encodeWAV(audio);\n const audioBlob = new Blob([wavBuffer], { type: 'audio/wav' });\n \n if (wsRef.current?.readyState === WebSocket.OPEN) {\n wsRef.current.send(audioBlob);\n }\n }\n },\n positiveSpeechThreshold: 0.90,\n negativeSpeechThreshold: 0.1,\n redemptionFrames: 8,\n minSpeechFrames: 4\n });\n\n const playNextAudio = async () => {\n if (isPlayingRef.current || audioQueue.current.length === 0) return;\n \n isPlayingRef.current = true;\n const audioData = audioQueue.current.shift()!;\n \n try {\n const audioBlob = new Blob([audioData], { type: 'audio/mp3' });\n const audioUrl = URL.createObjectURL(audioBlob);\n const audio = new Audio(audioUrl);\n\n audio.onended = () => {\n URL.revokeObjectURL(audioUrl);\n isPlayingRef.current = false;\n \n if (audioQueue.current.length > 0) {\n playNextAudio();\n } else if (!waitingForEndMarker.current) {\n setTurnoUsuario(true);\n }\n };\n\n audio.onerror = (error) => {\n console.error('Error playing audio:', error);\n URL.revokeObjectURL(audioUrl);\n isPlayingRef.current = false;\n \n if (audioQueue.current.length > 0) {\n playNextAudio();\n } else if (!waitingForEndMarker.current) {\n setTurnoUsuario(true);\n }\n };\n\n await audio.play();\n } catch (error) {\n console.error('Error in playNextAudio:', error);\n isPlayingRef.current = false;\n \n if (audioQueue.current.length > 0) {\n playNextAudio();\n } else if (!waitingForEndMarker.current) {\n setTurnoUsuario(true);\n }\n }\n };\n\n const processAudioChunk = async (chunk: Uint8Array) => {\n const decoder = new TextDecoder();\n try {\n const chunkStr = decoder.decode(chunk);\n \n if (chunkStr === 'START_AUDIO_STREAM') {\n audioQueue.current = [];\n waitingForEndMarker.current = true;\n return;\n }\n \n if (chunkStr === 'END_AUDIO_STREAM') {\n waitingForEndMarker.current = false;\n if (audioQueue.current.length === 0) {\n setTurnoUsuario(true);\n }\n return;\n }\n \n // Add audio to queue and start playing if not already playing\n audioQueue.current.push(chunk);\n if (!isPlayingRef.current) {\n playNextAudio();\n }\n } catch (error) {\n console.error('Error processing audio chunk:', error);\n }\n };\n\n const initializeWebSocket = () => {\n const protocol = window.location.hostname === 'localhost' ? 'ws://' : 'wss://';\n const ws = new WebSocket(`${protocol}${window.location.host}/ws`);\n\n ws.onopen = () => {\n console.log('WebSocket Connected');\n setEstado(Estado.Reproduciendo);\n setTurnoUsuario(true);\n };\n\n ws.onmessage = async (event: MessageEvent) => {\n if (event.data instanceof Blob) {\n const arrayBuffer = await event.data.arrayBuffer();\n await processAudioChunk(new Uint8Array(arrayBuffer));\n } else {\n try {\n const data = JSON.parse(event.data);\n if (data.type === 'text') {\n const text = data.content;\n console.log('Received text:', text);\n \n setWsResponses(prev => {\n if (prev[prev.length - 1] !== text) {\n return [...prev, text];\n }\n return prev;\n });\n }\n } catch (e) {\n console.error('Error parsing websocket message:', e);\n }\n }\n };\n\n ws.onclose = () => {\n console.log('WebSocket Disconnected');\n setEstado(Estado.Parado);\n setTurnoUsuario(false);\n audioQueue.current = [];\n waitingForEndMarker.current = false;\n isPlayingRef.current = false;\n };\n\n ws.onerror = (error: Event) => {\n console.error('WebSocket Error:', error);\n setEstado(Estado.Parado);\n setTurnoUsuario(false);\n audioQueue.current = [];\n waitingForEndMarker.current = false;\n isPlayingRef.current = false;\n };\n\n wsRef.current = ws;\n };\n\n const handleStartListening = () => {\n initializeWebSocket();\n vad.start();\n };\n\n const handleStopListening = () => {\n if (wsRef.current) {\n wsRef.current.close();\n }\n if (audioContextRef.current) {\n audioContextRef.current.close();\n audioContextRef.current = null;\n }\n audioQueue.current = [];\n waitingForEndMarker.current = false;\n isPlayingRef.current = false;\n vad.pause();\n setUserSpeaking(false);\n setWsResponses([]);\n };\n\n const handleTextSubmit = (text: string) => {\n if (wsRef.current?.readyState === WebSocket.OPEN && text.trim()) {\n setTurnoUsuario(false);\n wsRef.current.send(text);\n setInputText('');\n }\n };\n\n const handleAcceptWelcome = () => {\n setShowWelcome(false);\n setShowStaticImage(false);\n };\n\n const handleDeclineWelcome = () => {\n setShowWelcome(false);\n setShowStaticImage(true);\n };\n\n useEffect(() => {\n return () => {\n handleStopListening();\n };\n }, []);\n\n useEffect(() => {\n if (turnoUsuario) {\n vad.start();\n } else {\n vad.pause();\n setUserSpeaking(false);\n }\n }, [turnoUsuario]);\n\n return (\n
\n
\n {showWelcome && (\n \n )}\n {!showWelcome && showStaticImage && (\n
\n \"EOI\n
\n )}\n {!showWelcome && !showStaticImage && (\n \n )}\n
\n
\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\n\nconst root = ReactDOM.createRoot(\n document.getElementById('root') as HTMLElement\n);\nroot.render(\n \n \n \n);"],"names":["vad_web_1","require","react_1","__importStar","vad_web_2","Object","enumerable","get","utils","defaultReactOptions","startOnLoad","userSpeakingThreshold","exports","defaultRealTimeVADOptions","reactOptionKeys","keys","vadOptionKeys","_filter","obj","reduce","acc","key","useEventCallback","fn","ref","default","useRef","useIsomorphicLayoutEffect","current","useCallback","_len","arguments","length","args","Array","_key","apply","options","reactOptions","vadOptions","defaultReactRealTimeVADOptions","useOptions","userSpeaking","updateUserSpeaking","useReducer","state","isSpeechProbability","loading","setLoading","useState","errored","setErrored","listening","setListening","vad","setVAD","onFrameProcessed","probs","isSpeech","onSpeechEnd","onSpeechStart","onVADMisfire","_onSpeechEnd","_onSpeechStart","_onVADMisfire","useEffect","myvad","canceled","MicVAD","new","destroy","e","Error","message","_myvad","start","setup","catch","console","log","_myvad2","pause","toggle","window","document","createElement","useLayoutEffect","messages_1","logging_1","RECOMMENDED_FRAME_SAMPLES","positiveSpeechThreshold","negativeSpeechThreshold","preSpeechPadFrames","redemptionFrames","frameSamples","minSpeechFrames","submitUserSpeechOnPause","includes","warn","error","concatArrays","arrays","sizes","out","next","push","at","outArray","Float32Array","forEach","arr","index","place","set","constructor","modelProcessFunc","modelResetFunc","speaking","redemptionCounter","active","reset","audioBuffer","endSegment","resume","speechFrameCount","item","audio","map","frame","msg","Message","SpeechEnd","VADMisfire","process","SpeechStart","shift","_utils","minFramesForTargetMS","arrayBufferToBase64","encodeWAV","__exportStar","_log","level","LOG_PREFIX","getLog","Silero","ort","modelFetcher","init","debug","modelArrayBuffer","_session","InferenceSession","create","_sr","Tensor","reset_state","zeroes","fill","_h","_c","inputs","input","audioFrame","h","c","sr","run","hn","cn","output","data","notSpeech","model","_a","frame_processor_1","models_1","resampler_1","defaultFrameProcessorOptions","ortConfig","undefined","_new","fullOptions","defaultNonRealTimeVADOptions","frameProcessor","FrameProcessor","inputAudio","sampleRate","resamplerOptions","nativeSampleRate","targetSampleRate","targetFrameSize","resampler","Resampler","end","frameIndex","stream","validateOptions","outputFrames","fillInputBuffer","hasEnoughDataForFrame","outputFrame","generateOutputFrame","inputBuffer","sample","outputIndex","inputIndex","sum","num","Math","min","value","slice","writeString","view","offset","string","i","setUint8","charCodeAt","targetDuration","ceil","buffer","binary","bytes","Uint8Array","len","byteLength","String","fromCharCode","btoa","samples","format","numChannels","bitDepth","bytesPerSample","blockAlign","ArrayBuffer","DataView","setUint32","setUint16","s","max","setInt16","floatTo16BitPCM","setFloat32","writeFloat32","currentScript","basePath","src","replace","file","path","fetch","then","arrayBuffer","_common_1","utils_1","default_model_fetcher_1","asset_path_1","modelURL","assetPath","defaultModelFetcher","NonRealTimeVAD","PlatformAgnosticNonRealTimeVAD","audioFileToArray","real_time_vad_1","AudioNodeVAD","ortInstance","probabilities","workletURL","navigator","mediaDevices","getUserMedia","additionalAudioConstraints","channelCount","echoCancellation","autoGainControl","noiseSuppression","audioContext","AudioContext","sourceNode","MediaStreamAudioSourceNode","mediaStream","audioNodeVAD","receive","getTracks","track","stop","disconnect","close","ctx","audioWorklet","addModule","concat","vadNode","AudioWorkletNode","processorOptions","port","onmessage","_ev$data","ev","AudioFrame","processFrame","entryNode","handleFrameProcessorEvent","node","connect","postMessage","SpeechStop","audioFileData","OfflineAudioContext","reader","FileReader","Promise","res","addEventListener","audioData","result","decodeAudioData","startRendering","renderedBuffer","err","readAsArrayBuffer","_audioBuffer","j","numberOfChannels","getChannelData","aa","ca","p","a","b","encodeURIComponent","da","Set","ea","fa","ha","add","ia","ja","prototype","hasOwnProperty","ka","la","ma","v","d","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","toLowerCase","ra","sa","toUpperCase","ta","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","Reflect","construct","l","k","displayName","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","configurable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","isArray","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","source","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Jf","queueMicrotask","resolve","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","join","Ng","Og","Pg","Qg","props","Rg","implementation","Sg","Tg","q","r","y","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useContext","useImperativeHandle","useInsertionEffect","useMemo","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","defaultProps","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Ki","Li","Mi","WeakMap","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","module","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","count","toArray","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","En","fr","cr","Ed","Dn","Ln","registerBackend","o","createInferenceSessionHandler","TypeError","backend","async","initialized","aborted","initPromise","executionProviders","filter","Proxy","ut","Vo","wasm","webgl","webgpu","versions","common","logLevel","tensorToDataURL","OffscreenCanvas","dims","getContext","tensorLayout","norm","mean","bias","fillStyle","fillRect","toDataURL","tensorToImageData","createImageData","Wo","es","ts","rs","ns","Cn","bufferToTensor","_t$norm","_r$mean$","_r$bias$","tensorFormat","HTMLImageElement","ImageData","ImageBitmap","createCanvas","HTMLCanvasElement","resizedHeight","resizedWidth","drawImage","getImageData","Image","crossOrigin","onload","putImageData","tensorFromTexture","download","dispose","texture","tensorFromGpuBuffer","dataType","gpuBuffer","tensorFromPinnedBuffer","pr","Qr","os","as","Int8Array","Uint16Array","Int16Array","Int32Array","Float64Array","Uint32Array","checkTypedArray","BigInt64Array","from","BigUint64Array","Float16Array","ss","us","ls","Number","isSafeInteger","RangeError","tensorReshape","dataLocation","cpuData","gpuTextureData","downloader","disposer","gpuBufferData","BigInt","fromImage","fromTexture","fromGpuBuffer","fromPinnedBuffer","toImageData","ensureValid","getData","isDownloading","reshape","Fn","Ho","fs","Kt","Jt","qo","TRACE","trace","TRACE_FUNC","_Error$stack","$n","cs","handler","outputNames","getOwnPropertyNames","inputNames","release","SharedArrayBuffer","startProfiling","endProfiling","ps","ds","hs","ms","bs","gs","kn","ys","hasOptimizerModel","hasEvalModel","trainingInputNames","trainingOutputNames","evalInputNames","evalOutputNames","evalModel","optimizerModel","createTrainingSessionHandler","checkpointState","trainModel","typeNarrowingForRunStep","convertHandlerReturnTypeToMapOfTensors","lazyResetGrad","runTrainStep","runOptimizerStep","runEvalStep","getParametersSize","loadParametersBuffer","getContiguousParameters","Ts","xs","jo","lr","TRACE_FUNC_BEGIN","TRACE_FUNC_END","TrainingSession","env","Ot","Zt","Cd","Bn","verbose","info","warning","fatal","en","vs","minimalSeverity","logDateTime","toISOString","logSourceLocation","provider","Yo","Xo","_s","Rn","Mn","Gn","Nn","lt","none","setWithEnv","category","endCallback","timer","checkTimer","endTimer","waitForQueryAndGetTime","endTime","_started","_flushPointer","_maxNumberEvents","_flushBatchSize","_flushIntervalInMilliseconds","maxNumberEvents","flushBatchSize","flushIntervalInMilliseconds","_timingEvents","_flushTime","logOneEvent","begin","flush","endSync","beginTimer","toFixed","started","Os","opType","domain","opImpl","opInit","endsWith","parseInt","Is","Ss","Ko","__esModule","EMPTY","isGuid","validator","gen","createEmpty","parse","raw","equals","isEmpty","toJSON","RegExp","Guid","low","high","unsigned","__isLong__","As","dr","Es","Ps","ct","zt","It","Fs","Bs","Ls","nt","ks","neg","Dr","Zo","Un","mul","St","ft","Ds","Cs","Er","$s","Jo","Vt","Qo","WebAssembly","Instance","Module","isLong","fromInt","fromNumber","fromBits","pow","fromString","fromValue","ZERO","UZERO","ONE","UONE","NEG_ONE","MAX_VALUE","MAX_UNSIGNED_VALUE","MIN_VALUE","toInt","toNumber","isZero","isNegative","eq","div","sub","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","notEquals","neq","lessThan","comp","lessThanOrEqual","lte","greaterThan","gt","greaterThanOrEqual","gte","negate","not","subtract","multiply","get_high","divide","div_u","div_s","toUnsigned","shru","shr","shl","modulo","rem_u","rem_s","mod","rem","countLeadingZeros","clz","countTrailingZeros","ctz","and","or","xor","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","rotateLeft","rotl","rotateRight","rotr","toSigned","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","_","zn","Table","SIZEOF_SHORT","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","SIZE_PREFIX_LENGTH","Encoding","UTF8_BYTES","UTF16_STRING","int32","float32","float64","isLittleEndian","Long","toFloat64","Builder","ByteBuffer","allocate","space","minalign","vtable","vtable_in_use","isNested","object_start","vtables","vector_num_elems","force_defaults","clear","capacity","forceDefaults","dataBuffer","asUint8Array","subarray","position","prep","growByteBuffer","pad","writeInt8","writeInt16","writeInt32","writeInt64","writeFloat64","addInt8","addInt16","addInt32","addInt64","addFloat32","addFloat64","addFieldInt8","slot","addFieldInt16","addFieldInt32","addFieldInt64","addFieldFloat32","addFieldFloat64","addFieldOffset","addOffset","addFieldStruct","nested","notNested","setPosition","startObject","endObject","readInt16","finish","finishSizePrefixed","requiredField","readInt32","startVector","endVector","createString","createLong","bytes_","position_","readInt8","readUint8","readUint16","readUint32","readInt64","readUint64","readFloat32","readFloat64","writeUint8","writeUint16","writeUint32","writeUint64","getBufferIdentifier","__offset","__union","bb_pos","__string","__indirect","__vector","__vector_len","__has_identifier","tn","AttributeType","UNDEFINED","FLOAT","INT","STRING","TENSOR","GRAPH","FLOATS","INTS","STRINGS","TENSORS","GRAPHS","SPARSE_TENSOR","SPARSE_TENSORS","fbs","experimental","DimensionValueType","UNKNOWN","VALUE","PARAM","TensorDataType","UINT8","INT8","UINT16","INT16","INT32","INT64","BOOL","FLOAT16","DOUBLE","UINT32","UINT64","COMPLEX64","COMPLEX128","BFLOAT16","FLOAT8E4M3FN","FLOAT8E4M3FNUZ","FLOAT8E5M2","FLOAT8E5M2FNUZ","NodeType","Primitive","Fused","TypeInfoValue","NONE","tensor_type","sequence_type","map_type","__init","getRootAsShape","getSizePrefixedRootAsShape","dim","Dimension","dimLength","startShape","addDim","createDimVector","startDimVector","endShape","createShape","Shape","getRootAsDimension","getSizePrefixedRootAsDimension","DimensionValue","denotation","startDimension","addValue","addDenotation","endDimension","createDimension","getRootAsDimensionValue","getSizePrefixedRootAsDimensionValue","dimType","dimValue","dimParam","startDimensionValue","addDimType","addDimValue","addDimParam","endDimensionValue","createDimensionValue","getRootAsTensorTypeAndShape","getSizePrefixedRootAsTensorTypeAndShape","elemType","shape","startTensorTypeAndShape","addElemType","addShape","endTensorTypeAndShape","createTensorTypeAndShape","TensorTypeAndShape","getRootAsMapType","getSizePrefixedRootAsMapType","keyType","valueType","TypeInfo","startMapType","addKeyType","addValueType","endMapType","createMapType","MapType","getRootAsSequenceType","getSizePrefixedRootAsSequenceType","startSequenceType","endSequenceType","createSequenceType","SequenceType","EdgeEnd","nodeIndex","srcArgIndex","dstArgIndex","createEdgeEnd","getRootAsNodeEdge","getSizePrefixedRootAsNodeEdge","inputEdges","inputEdgesLength","outputEdges","outputEdgesLength","startNodeEdge","addNodeIndex","addInputEdges","startInputEdgesVector","addOutputEdges","startOutputEdgesVector","endNodeEdge","createNodeEdge","NodeEdge","getRootAsNode","getSizePrefixedRootAsNode","docString","sinceVersion","executionProviderType","inputsLength","outputs","outputsLength","attributes","Attribute","attributesLength","inputArgCounts","inputArgCountsLength","inputArgCountsArray","byteOffset","implicitInputs","implicitInputsLength","startNode","addName","addDocString","addDomain","addSinceVersion","addIndex","addOpType","addType","addExecutionProviderType","addInputs","createInputsVector","startInputsVector","addOutputs","createOutputsVector","startOutputsVector","addAttributes","createAttributesVector","startAttributesVector","addInputArgCounts","createInputArgCountsVector","startInputArgCountsVector","addImplicitInputs","createImplicitInputsVector","startImplicitInputsVector","endNode","createNode","Node","getRootAsValueInfo","getSizePrefixedRootAsValueInfo","startValueInfo","endValueInfo","createValueInfo","ValueInfo","getRootAsTypeInfo","getSizePrefixedRootAsTypeInfo","startTypeInfo","endTypeInfo","createTypeInfo","getRootAsOperatorSetId","getSizePrefixedRootAsOperatorSetId","startOperatorSetId","addVersion","endOperatorSetId","createOperatorSetId","OperatorSetId","getRootAsTensor","getSizePrefixedRootAsTensor","dimsLength","rawData","rawDataLength","rawDataArray","stringData","stringDataLength","startTensor","addDims","createDimsVector","startDimsVector","addDataType","addRawData","createRawDataVector","startRawDataVector","addStringData","createStringDataVector","startStringDataVector","endTensor","createTensor","getRootAsSparseTensor","getSizePrefixedRootAsSparseTensor","values","indices","startSparseTensor","addValues","addIndices","endSparseTensor","createSparseTensor","SparseTensor","getRootAsAttribute","getSizePrefixedRootAsAttribute","Graph","floats","floatsLength","floatsArray","ints","intsLength","strings","stringsLength","tensors","tensorsLength","graphs","graphsLength","startAttribute","addF","addI","addS","addT","addG","addFloats","createFloatsVector","startFloatsVector","addInts","createIntsVector","startIntsVector","addStrings","createStringsVector","startStringsVector","addTensors","createTensorsVector","startTensorsVector","addGraphs","createGraphsVector","startGraphsVector","endAttribute","createAttribute","getRootAsGraph","getSizePrefixedRootAsGraph","initializers","initializersLength","nodeArgs","nodeArgsLength","nodes","nodesLength","maxNodeIndex","nodeEdges","nodeEdgesLength","sparseInitializers","sparseInitializersLength","startGraph","addInitializers","createInitializersVector","startInitializersVector","addNodeArgs","createNodeArgsVector","startNodeArgsVector","addNodes","createNodesVector","startNodesVector","addMaxNodeIndex","addNodeEdges","createNodeEdgesVector","startNodeEdgesVector","addSparseInitializers","createSparseInitializersVector","startSparseInitializersVector","endGraph","createGraph","getRootAsModel","getSizePrefixedRootAsModel","irVersion","opsetImport","opsetImportLength","producerName","producerVersion","modelVersion","graph","graphDocString","startModel","addIrVersion","addOpsetImport","createOpsetImportVector","startOpsetImportVector","addProducerName","addProducerVersion","addModelVersion","addGraph","addGraphDocString","endModel","createModel","Model","getRootAsKernelCreateInfos","getSizePrefixedRootAsKernelCreateInfos","nodeIndices","nodeIndicesLength","nodeIndicesArray","kernelDefHashes","kernelDefHashesLength","startKernelCreateInfos","addNodeIndices","createNodeIndicesVector","startNodeIndicesVector","addKernelDefHashes","createKernelDefHashesVector","startKernelDefHashesVector","endKernelCreateInfos","createKernelCreateInfos","KernelCreateInfos","getRootAsSubGraphSessionState","getSizePrefixedRootAsSubGraphSessionState","graphId","sessionState","SessionState","startSubGraphSessionState","addGraphId","addSessionState","endSubGraphSessionState","createSubGraphSessionState","SubGraphSessionState","getRootAsSessionState","getSizePrefixedRootAsSessionState","kernels","subGraphSessionStates","subGraphSessionStatesLength","startSessionState","addKernels","addSubGraphSessionStates","createSubGraphSessionStatesVector","startSubGraphSessionStatesVector","endSessionState","createSessionState","getRootAsInferenceSession","getSizePrefixedRootAsInferenceSession","bufferHasIdentifier","ortVersion","startInferenceSession","addOrtVersion","addModel","endInferenceSession","finishInferenceSessionBuffer","finishSizePrefixedInferenceSessionBuffer","createInferenceSession","Rs","Oy","Ns","zs","Us","Vn","At","Lr","Gs","encode","Ms","decode","Ws","Sy","Vs","Wn","_listeners","on","off","emit","Js","Ay","Ks","Hs","writeFloatLE","writeFloatBE","readFloatLE","readFloatBE","round","NaN","qs","js","Ys","Xs","writeDoubleLE","writeDoubleBE","readDoubleLE","readDoubleBE","Zs","inquire","moduleName","eval","eu","Qs","read","write","ru","Ey","tu","ou","Dy","nu","Ge","rn","er","lo","zero","zzEncode","zzDecode","zeroHash","isString","toLong","Qt","fromHash","toHash","iu","au","captureStackTrace","writable","asPromise","base64","EventEmitter","float","utf8","pool","LongBits","isNode","global","self","emptyArray","freeze","emptyObject","isInteger","isFinite","isObject","isset","isSet","Buffer","utf8Write","_Buffer_from","_Buffer_allocUnsafe","newBuffer","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","merge","lcFirst","newError","ProtocolError","oneOfGetter","oneOfSetter","toJSONOptions","longs","enums","json","_configure","allocUnsafe","Cy","fu","pt","Hn","su","uu","nn","val","head","states","lu","alloc","_push","uint32","sint32","uint64","int64","sint64","bool","fixed32","sfixed32","fixed64","sfixed64","double","Ud","fork","ldelim","du","Fy","pu","kt","cu","tr","writeBytesBuffer","copy","$y","yu","Pt","bu","Et","pos","buf","hu","gu","isBuffer","qn","mu","_slice","skip","skipType","vu","ky","wu","mr","xu","Tu","utf8Slice","Ou","By","_u","rpcImpl","requestDelimited","responseDelimited","rpcCall","Su","Iu","Service","Pu","Ry","Au","Lu","Du","ot","Eu","util","Writer","BufferWriter","Reader","BufferReader","build","rpc","roots","configure","Fu","Gy","Cu","Cr","Uy","$u","onnx","Version","AttributeProto","sparseTensors","typeProtos","refAttrName","sparseTensor","tp","TensorProto","GraphProto","TypeProto","SparseTensorProto","encodeDelimited","decodeDelimited","verify","fromObject","toObject","defaults","getTypeUrl","ValueInfoProto","NodeProto","attribute","TrainingInfoProto","initializationBinding","updateBinding","initialization","algorithm","StringStringEntryProto","ModelProto","metadataProps","trainingInfo","functions","OperatorSetIdProto","FunctionProto","TensorAnnotation","quantParameterTensorNames","tensorName","initializer","sparseInitializer","valueInfo","quantizationAnnotation","floatData","int32Data","int64Data","externalData","doubleData","uint64Data","segment","Segment","DataLocation","DataType","TensorShapeProto","oneofs","tensorType","sequenceType","mapType","optionalType","sparseTensorType","Sequence","Optional","OperatorStatus","attributeProto","Fr","sn","TextDecoder","jn","it","an","gr","yr","Tr","Pr","xr","arraysEqual","preprocessInputShapes","postprocessOutputShape","calcMatMulShape","calcShape","fillIndex","calc","areEqual","isValidBroadcast","getBroadcastDims","getShapeOfGemmResult","tensorDataTypeFromProto","tensorDataTypeStringToEnum","tensorDimsFromProto","tensorValueTypeFromProto","tensorDimsFromORTFormat","longToNumber","tensorAttributesFromORTFormat","getSizeFromDimensionRange","sizeFromDimension","sizeToDimension","computeStrides","transpose","reverse","indicesToOffset","offsetToIndices","normalizeAxis","normalizeAxes","incrementIndex","calculateReshapedDims","sortBasedOnPerm","padShape","every","validateDimsAndCalcSize","flattenShape","squeezeShape","unsqueezeShape","splitShape","determineSplit","adjustPoolAttributes","adjustPadsBasedOnAutoPad","adjustPadAndReturnShape","computePoolOutputShape","computeShapeHelper","computeConvOutputShape","ku","Ru","Bu","getUint8","getInt8","getUint16","getInt16","getFloat32","getInt32","getUint32","getFloat64","Nu","dataProvider","asyncDataProvider","dataId","integerData","numberData","strides","_strides","fromProto","fromData","fromOrtTensor","Mu","varyingVertex","Gu","varyingFrag","outputDeclaration","Uu","texture2D","tryFn","Yn","zu","$r","kr","Dt","Bt","Br","Nt","wr","Vu","Kd","Wu","Hu","inputTypes","createPackProgramInfo","session","glContext","hasMain","textureType","shaderSource","createPackProgramInfoLoader","ju","qu","Yu","cacheHint","createPackedReshape3DProgramInfo","createPackedReshape3DProgramInfoLoader","Xu","encodeAsUint8","tensor","executeProgram","Ku","Ju","Zu","createUnpackProgramInfo","createUnpackProgramInfoLoader","Xn","un","Kn","ln","internalFormat","R32F","RED","channelSize","RGBA32F","RGBA","ALPHA","UNSIGNED_BYTE","Qu","createTextureLayoutFromTextureType","isPacked","reverseWH","breakAxis","calculateTextureWidthAndHeight","computeTextureWH","channels","unpackedShape","reversedWH","Jn","getProgramInfoUniqueKey","packedTextureDataCache","unpackedTextureDataCache","layoutStrategy","getOrCreateTextureData","programManager","getArtifact","programInfo","createTextureData","setArtifact","runProgram","getTextureData","pack","unpack","createTextureDataFromLayoutBindTensor","textureManager","createTextureFromLayout","createTextureDataFromTexture","reshapeUnpacked","reshapePacked","cast","readTexture","readTextureAsync","setTextureData","isInitializer","isTextureLayoutCached","clearActiveTextures","releaseTexture","isFloat32DownloadSupported","readUint8TextureAsFloat","cacheKey","sort","batchNormalization","getFloat","getInt","epsilon","momentum","spatial","createBatchNormalizationProgramInfo","Zn","dt","Qn","Wt","inputTextureLayouts","outputTextureLayout","routineBody","addDependency","returnOrderedNodes","createOrderedNodes","dfsTraverse","ht","yl","Tl","equal","greater","less","pRelu","xl","wl","_l","eo","Ol","createPackedConcatProgramMetadata","createPackedConcatProgramInfo","createPackedConcatProgramInfoLoader","axis","getShiftedChannelsSnippet","Il","Sl","Al","Pl","createUnpackedConcatProgramMetadata","createUnpackedConcatProgramInfo","createUnpackedConcatProgramInfoLoader","getFetchDataFromCorrectTextureMethod","mt","_i","em","El","Dl","Ll","Cl","Fl","$l","tm","Bl","Nl","Rl","Ml","Gl","Ul","zl","Vl","Wl","Hl","jl","Yl","Xl","Kl","Jl","createElementwiseProgramInfo","createElementwiseProgramInfoLoader","abs","acos","asin","atan","clip","clipV11","generateClipAttributesFromInputs","cos","elu","alpha","exp","identity","leakyRelu","relu","sigmoid","sin","sqrt","tan","tanh","Rt","activation","clipMin","clipMax","activationFunction","applyActivation","Nr","vr","getString","getFloats","activationCacheKey","nm","om","Zl","Ql","to","createUnpackedGroupedConvProgramMetadata","createUnpackedGroupedConvProgramInfo","group","autoPad","dilations","kernelShape","pads","Rr","createUnpackedGroupedConvProgramInfoLoader","im","am","createPackedIm2ColProgramInfo","createPackedIm2ColProgramInfoLoader","um","sm","lm","ro","matMul","no","createMatmulProgramMetadata","pm","dm","hm","fm","cm","createPackedMatmulProgramMetadata","createPackedMatmulProgramInfo","createPackedMatmulProgramInfoLoader","conv2DPacked","mm","bm","createIm2ColProgramInfo","createIm2ColProgramInfoLoader","gm","ym","createDotProductProgramMetadata","createDotProductProgramInfo","createDotProductProgramInfoLoader","Tm","xm","wm","vm","_m","calculateOutputShape","conv","conv2d","conv2DUnpackedPointwise","conv2DUnpacked","getAdjustedConvAttributes","getInts","validateInputs","Om","Im","Sm","Am","Pm","Em","Dm","Lm","Cm","Fm","computeTotalPad","distributePadding","calculateOutputShapeAndPads","convTranspose","convTranspose2d","createConvTransposeProgramMetadata","createUnpackedConvTransposeProgramInfo","outputShape","createUnpackedConvTransposeProgramInfoLoader","convTranspose2DUnpacked","getAdjustedConvTransposeAttributes","outputPadding","_r","$m","km","Bm","Nm","oo","perm","createTransposeProgramInfo","getAdjustedPerm","getOutputShape","getPermFunctionBody","Rm","depthToSpace","blocksize","Mm","flatten","rr","pn","_f","Gm","Um","zm","Vm","gather","createGatherProgramInfo","createGatherProgramInfoLoader","Wm","Hm","qm","gemm","parseGemmAttributes","transA","transB","beta","isOptionalC","createGemmProgramInfoLoader","createGemmProgramInfo","variables","jm","Ym","Xm","Km","Jm","imageScaler","scale","createImageScalerProgramInfo","arrayLength","createImageScalerProgramInfoLoader","Zm","Qm","kf","instanceNormalization","createMeanAndVarianceProgramInfo","createComputeOutputProgramInfo","createComputeOutputProgramInfoLoader","lrn","padV2","padV11","generatePadAttributesFromInputs","createPadProgramInfo","getPadFunction","getPadConstant","getPadReflect","getPadEdge","jf","ao","io","averagePool","ceilMode","countIncludePad","createAveragePoolProgramInfo","globalAveragePool","maxPool","storageOrder","createMaxPoolProgramInfo","getAdjustedPoolAttributesAndOutputShape","globalMaxPool","generatePoolingCode","copyArray","Or","nr","nc","axes","keepDims","createReduceProgramInfo","reduceSum","reduceMean","reduceMax","reduceMin","reduceProd","reduceLogSum","reduceLogSumSquare","dn","so","upsample","parseUpsampleAttributes","opset","isResize","scales","extrapolationValue","coordinateTransformMode","useExtrapolation","needRoiInput","nearestMode","cubicCoefficientA","excludeOutside","useNearest2xOptimization","roiInputIdx","scalesInputIdx","sizesInputIdx","createUpsampleProgramInfo","scalesValidation","_b","resize","createPackedResizeProgramInfo","prepareInputs","parseScalesData","parseScalesDataFromOutputSize","starts","ends","createSliceProgramInfo","sliceV10","generateSliceAttributesFromInputs","some","softmax","softmaxV13","computeSoftmax","createComputeMaxProgramInfo","createComputScaleProgramInfo","createSoftMaxProgramInfo","numOutputs","getProgramCount","createSplitProgramInfo","squeeze","squeezeV13","createSumProgramInfo","tile","createTileProgramInfo","unsqueeze","unsqueezeV13","exec","params","ep","Mr","newShape","keptDims","uo","maxTextureSize","computeTexture","rp","super","getFunctions","offsetToCoords","coordsToOffset","toVec","valueFrom","getCommonUtilFuncs","getInputsSamplingSnippets","getOutputSamplingSnippet","getCustomTypes","getPackedOutputSamplingSnippet","getUnpackedOutputSamplingSnippet","getOutputScalarCoords","getOutputPacked1DCoords","getOutputPacked2DCoords","getOutputPacked3DCoords","getOutputPackedNDCoords","getOutputUnpacked1DCoords","getOutputUnpacked2DCoords","getOutputUnpacked3DCoords","getOutputUnpacked4DCoords","getOutputUnpacked5DCoords","getOutputUnpacked6DCoords","getPackedSamplerFromInput","getUnpackedSamplerFromInput","getPackedSamplerAtOutputCoords","getUnpackedSamplerAtOutputCoords","getPackedSamplerScalar","getPackedSampler1D","getPackedSampler2D","getPackedSampler3D","getPackedSamplerND","getUnpackedSamplerScalar","getUnpackedSampler1D","getUnpackedSampler2D","getUnpackedSampler3D","getUnpackedSampler4D","getUnpackedSampler5D","getUnpackedSampler6D","getValueFromSingle","getPackedValueFrom","fo","np","encodeFloat32","decodeFloat32","encodeUint8","decodeUint8","co","op","setFragColor","getColorAsFloat","po","ip","bcastIndex","bcastMatmulIndex","incrementIndices","indexToOffsetSingle","offsetToIndicesSingle","ho","ap","binaryVecFunctions","copyVec","setVecItem","getVecItem","sp","encoding","fragcolor","vec","shapeUtils","coordinates","mo","up","libs","glslLibRoutineDependencyGraph","preprocess","getUniforms","getImports","selectGlslLibRoutinesToBeIncluded","bo","lp","profiler","textureLayoutStrategy","repo","attributesBound","_t$programInfo$name","program","useProgram","_t$programInfo$variab","bindOutput","bindAttributes","attribLocations","bindUniforms","uniformLocations","draw","vertexShader","deleteShader","deleteProgram","compile","getUniformLocations","getAttribLocations","compileShader","VERTEX_SHADER","FRAGMENT_SHADER","createProgram","attachFramebuffer","textureCoord","setVertexAttributes","_o$find","find","bindTexture","uniform1fv","uniform1f","uniform1iv","uniform1i","bindTextureToUniform","getAttribLocation","getUniformLocation","go","fp","config","pendingRead","reuseTextures","inUseTextures","idleTextures","textureLookup","toEncoderType","getEncoder","updateTexture","toTextureData","allocateTexture","toTensorData","createAndWaitForFence","deleteTexture","yo","cp","textureCacheMode","pack2unpackMap","unpack2packMap","createInferenceHandler","onGraphInitialized","getValues","addInitializer","impl","pp","frameBufferBound","itemsToPoll","getExtensions","vertexbuffer","createVertexbuffer","framebuffer","createFramebuffer","queryVitalParameters","createTexture","TEXTURE_2D","texParameteri","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","texImage2D","checkError","texSubImage2D","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","viewport","scissor","readPixels","isFramebufferReady","getActiveTexture","getParameter","ACTIVE_TEXTURE","TEXTURE0","getTextureBinding","TEXTURE_BINDING_2D","getFramebufferBinding","FRAMEBUFFER_BINDING","vertexAttribPointer","enableVertexAttribArray","attachShader","linkProgram","createShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","activeTexture","drawArrays","TRIANGLE_STRIP","getError","NO_ERROR","INVALID_ENUM","INVALID_VALUE","INVALID_OPERATION","INVALID_FRAMEBUFFER_OPERATION","OUT_OF_MEMORY","CONTEXT_LOST_WEBGL","isRenderFloat32Supported","textureHalfFloatExtension","HALF_FLOAT_OES","maxTextureImageUnits","disposed","deleteFramebuffer","bindBuffer","ARRAY_BUFFER","deleteBuffer","ELEMENT_ARRAY_BUFFER","createDefaultGeometry","createBuffer","bufferData","STATIC_DRAW","isFloatTextureAttachableToFrameBuffer","checkFloatTextureAttachableToFrameBuffer","checkRenderFloat32","checkFloat32Download","isBlendSupported","checkFloat32Blend","MAX_TEXTURE_SIZE","MAX_TEXTURE_IMAGE_UNITS","colorBufferFloatExtension","getExtension","disjointTimerQueryWebgl2Extension","textureFloatExtension","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","enable","BLEND","POINTS","disable","createQuery","beginQuery","TIME_ELAPSED_EXT","endQuery","isTimerResultAvailable","getQueryParameter","QUERY_RESULT_AVAILABLE","GPU_DISJOINT_EXT","getTimerResult","QUERY_RESULT","deleteQuery","createFence","pollFence","fenceSync","SYNC_GPU_COMMANDS_COMPLETE","isFencePassed","clientWaitSync","ALREADY_SIGNALED","CONDITION_SATISFIED","query","addItemToPoll","pollItems","isDoneFn","resolveFn","Gr","webgl2","dp","isContextLost","DEPTH_TEST","STENCIL_TEST","DITHER","POLYGON_OFFSET_FILL","SAMPLE_COVERAGE","SCISSOR_TEST","CULL_FACE","cullFace","BACK","depth","antialias","stencil","preserveDrawingBuffer","premultipliedAlpha","failIfMajorPerformanceCaveat","hp","To","mp","contextId","matmulMaxBatchSize","initialize","createSessionHandler","bp","gp","xo","yp","getNodes","_ops","_starter","_values","getInputIndices","execute","getOutputIndices","bt","mn","Tp","_attributes","getType","getTensor","getStrings","getTensors","getValueNoCheck","getValueNoCheckFromOnnxFormat","getValueNoCheckFromOrtFormat","wo","Mt","vo","xp","_from","_to","executeNode","buildGraph","transformGraph","checkIsAcyclic","_allInputIndices","getInputNames","_allInputNames","_allOutputIndices","getOutputNames","_allOutputNames","_allData","_nodes","buildGraphFromOnnxFormat","buildGraphFromOrtFormat","_t$nodeArgs","_t$nodeArgs2","removeAllIdentityNodes","removeAllDropoutNodes","fuseConvActivationNodes","finalizeGraph","deleteNode","isActivation","wp","_o","vp","load","loadFromOnnxFormat","loadFromOrtFormat","_opsets","_graph","opsets","Oo","_p","_initialized","backendHint","graphInputTypes","graphInputDims","_model","loadModel","sessionHandler","isView","initializeOps","_executionPlan","normalizeAndValidateInputs","createOutput","validateInputTensorDims","validateInputTensorTypes","compareTensorDims","Io","Op","Ip","onnxjsBackend","Sp","createReadStream","Ap","readFile","readFileSync","Dp","Ep","Pp","_document$currentScri","__filename","importScripts","Xt","dirname","__dirname","URL","normalize","thisProgram","argv","startsWith","substr","lastIndexOf","XMLHttpRequest","open","send","responseText","responseType","response","status","onerror","HEAP8","HEAP16","HEAPU8","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","yt","et","RuntimeError","Ht","locateFile","Tt","credentials","Hr","instantiate","xt","Lt","wt","ar","vt","_t","jt","qr","Tn","Ct","Sr","ir","USER","LOGNAME","PATH","PWD","HOME","LANG","languages","xn","Gt","wn","jr","Zr","Ft","getFullYear","getMonth","getDate","getDay","st","getTime","setDate","setMonth","setFullYear","Jr","Yt","%n","%t","%%","Yr","copyWithin","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","getSeconds","getMinutes","getHours","getTimezoneOffset","setTime","getYear","Xr","toLocaleTimeString","hour12","timeZoneName","grow","_n","clearInterval","instantiateWasm","instantiateStreaming","qt","_OrtInit","_OrtGetLastError","_OrtCreateSessionOptions","_OrtAppendExecutionProvider","_OrtAddFreeDimensionOverride","_OrtAddSessionConfigEntry","_OrtReleaseSessionOptions","_OrtCreateSession","_OrtReleaseSession","_OrtGetInputOutputCount","_OrtGetInputName","_OrtGetOutputName","_OrtFree","_OrtCreateTensor","_OrtGetTensorData","_OrtReleaseTensor","$","_OrtCreateRunOptions","_OrtAddRunConfigEntry","_OrtReleaseRunOptions","_OrtCreateBinding","_OrtBindInput","_OrtBindOutput","_OrtClearBoundOutputs","ga","_OrtReleaseBinding","_OrtRunWithBinding","_OrtRun","_OrtEndProfiling","_malloc","_free","Ut","vn","Kr","preRun","calledRun","stackSave","stackRestore","stackAlloc","UTF8ToString","stringToUTF8","lengthBytesUTF8","define","Lp","Cp","Fp","cpus","$p","Np","Bp","kp","_document$currentScri2","ENVIRONMENT_IS_PTHREAD","exitCode","Worker","writeSync","_len2","_key2","wasmMemory","Memory","initial","maximum","tt","terminate","cmd","start_routine","arg","pthread_ptr","unref","_len3","_key3","zo","Sn","Uo","_i$onExit","onExit","numThreads","all","receiveObjectTransfer","threadInitTLS","setExitStatus","Mo","targetThread","In","transferList","On","thread","loaded","alert","threadId","filename","lineno","handlers","urlOrBlob","mainScriptUrlOrBlob","wasmModule","PThread","establishStackSpace","invokeEntryPoint","Go","$o","Atomics","store","__emscripten_thread_mailbox_await","checkMailbox","ko","Ar","Ro","Bo","No","$t","rt","ur","timeOrigin","hardwareConcurrency","emscripten_main_runtime_thread_id","_d","_pthread_self","__emscripten_tls_init","__emscripten_thread_init","__emscripten_thread_crashed","An","__emscripten_thread_exit","startWorker","keepRuntimeAlive","ExitStatus","Rp","uO","Gp","So","Mp","Ur","crossOriginIsolated","validate","isSimdSupported","getWasmFileName","initTimeout","simd","wasmPaths","Blob","createObjectURL","race","getInstance","bn","_e","Ao","allocWasmString","iterateExtraOptions","entries","_ref","zp","Vp","logSeverityLevel","logVerbosityLevel","extra","Wp","Hp","use_ort_model_bytes_directly","enableMemPattern","setExecutionProviders","deviceType","powerPreference","preferredLayout","_r$graphOptimizationL","_r$executionMode","_r$logSeverityLevel","_r$logVerbosityLevel","graphOptimizationLevel","executionMode","logId","optimizedModelFilePath","enableCpuMemArena","enableProfiling","enableGraphCapture","freeDimensionOverrides","qp","jp","Yp","Po","Xp","gn","headers","getReader","Jp","Zp","zr","Qp","Kp","initOrt","mountExternalData","_r$unmountExternalDat","unmountExternalData","_t$jsepOnReleaseSessi","handle","jsepOnReleaseSession","jsepRegisterBuffer","_s$jsepOnRunStart","jsepOnRunStart","outputPreferredLocations","jsepGetBuffer","jsepCreateDownloader","AO","Ir","yn","Do","Lo","Vr","Wr","Eo","_document","isProxy","proxy","enqueueCallbacks","ensureWorker","_gt","revokeObjectURL","in","epName","preferredOutputLocation","sessionId","inputIndices","outputIndices","Co","encodeTensorMetadata","fetchModelAndCopyToWasmMemory","_s$d","Fo","initializeFlags","wasmBackend","_g","ws","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis","Function","toKebabCase","mergeClasses","classes","className","array","Boolean","defaultAttributes","xmlns","viewBox","stroke","strokeLinecap","strokeLinejoin","Icon","absoluteStrokeWidth","iconNode","rest","_ref2","attrs","createLucideIcon","iconName","Mic","x1","x2","y1","y2","Send","RobotAssistant","isListening","onStartListening","onStopListening","inputText","setInputText","onTextSubmit","wsResponses","turnoUsuario","currentAnimation","setCurrentAnimation","isInitialized","setIsInitialized","videosLoaded","setVideosLoaded","shouldPlayAudio","setShouldPlayAudio","videoRef","audioRef","responseRef","timeoutRef","videoSourcesRef","animations","arrancar","idle","andar","rodar","reiniciar","randomAnimations","loadPromises","blob","objectUrl","loadVideos","scrollHeight","play","playVideo","volume","playbackRate","currentTime","_jsxs","_jsx","alt","autoPlay","playsInline","preload","controlsList","disablePictureInPicture","onEnded","handleVideoEnd","getRandomAnimation","backgroundColor","onChange","onKeyPress","placeholder","loop","WelcomeDialog","onAccept","onDecline","volumeThreshold","Estado","calculatePeakLevel","maxVal","absVal","App","showWelcome","setShowWelcome","showStaticImage","setShowStaticImage","setUserSpeaking","estado","setEstado","Parado","setTurnoUsuario","setWsResponses","wsRef","audioContextRef","audioQueue","isPlayingRef","waitingForEndMarker","useMicVAD","_wsRef$current","wavBuffer","vadUtils","audioBlob","readyState","WebSocket","OPEN","playNextAudio","audioUrl","Audio","onended","initializeWebSocket","protocol","hostname","host","onopen","Reproduciendo","decoder","chunkStr","chunk","processAudioChunk","content","prev","onclose","handleStopListening","handleAcceptWelcome","handleDeclineWelcome","handleStartListening","_wsRef$current2","root","ReactDOM","getElementById","React"],"sourceRoot":""}