diff --git a/bindings/javascript/libwhisper.worker.js b/bindings/javascript/libwhisper.worker.js index ec4811ee..db2083ad 100644 --- a/bindings/javascript/libwhisper.worker.js +++ b/bindings/javascript/libwhisper.worker.js @@ -1 +1 @@ -"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module["wasmModule"],info);receiveInstance(instance);Module["wasmModule"]=null;return instance.exports};self.onunhandledrejection=e=>{throw e.reason??e};self.onmessage=e=>{try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:"callHandler",handler:handler,args:[...arguments]})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}whisper_factory(Module).then(function(instance){Module=instance})}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();pendingNotifiedProxyingQueues.forEach(queue=>{Module["executeNotifiedProxyingQueue"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["keepRuntimeAlive"]()){}else{Module["__emscripten_thread_exit"](ex.status)}}else{throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processProxyingQueue"){if(initializedJS){Module["executeNotifiedProxyingQueue"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else if(e.data.cmd){err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}; +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}whisper_factory(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();if(!initializedJS){Module["__embind_initialize_bindings"]();initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err(`worker.js received unknown command ${e.data.cmd}`);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/bindings/javascript/whisper.js b/bindings/javascript/whisper.js index 0a9bb720..60ca4db9 100644 --- a/bindings/javascript/whisper.js +++ b/bindings/javascript/whisper.js @@ -3,19 +3,17 @@ var whisper_factory = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; return ( -function(whisper_factory) { - whisper_factory = whisper_factory || {}; +function(moduleArg = {}) { -function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof whisper_factory!="undefined"?whisper_factory:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"};let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.warn.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=str=>fs.writeSync(1,str+"\n");defaultPrintErr=str=>fs.writeSync(2,str+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var POINTER_SIZE=4;var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("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");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABhwVTYAF/AGABfwF/YAJ/fwBgA39/fwF/YAJ/fwF/YAN/f38AYAR/f39/AX9gBH9/f38AYAZ/f39/f38Bf2AAAGAFf39/f38Bf2AFf39/f38AYAZ/f39/f38AYAh/f39/f39/fwF/YAABf2AHf39/f39/fwF/YAd/f39/f39/AGABfQF9YAV/fn5+fgBgA39+fwF+YAp/f39/f39/f39/AGAFf39/f34Bf2AEf39/fwF+YAN/f38BfGAEf35+fwBgCn9/f39/f39/f38Bf2AIf39/f39/f38AYAJ8fAF8YAd/f39/f35+AX9gBn9/f39+fgF/YAV/f35/fwBgBH9/fn4Bf2ACf34AYAF8AX1gAnx/AXxgBX9/fn5+AX9gAXwBfGAMf39/f39/f39/f39/AX9gA39+fwF/YA9/f39/f39/f39/f39/f38AYAt/f39/f39/f39/fwF/YAZ/fH9/f38Bf2AJf39/f39/f39/AGAJf39/f39/f39/AX9gBX9/f398AX9gAAF8YAN/f34Bf2AAAX5gAn98AGACfX0BfWAEfn5+fgF/YAJ+fwF/YAN/f3wBf2ACf30Bf2AGf39+fn9/AX9gBH9/fn8Bf2ACfn4BfGAEf39+fgBgBn9/f39/fQBgA39/fwF9YAR/f39+AX5gA39/fgBgAn5+AX1gAn9/AX5gA35+fgF/YAh/f35+fn9/fwF/YAF/AX5gAX4Bf2AFf319fX0AYAt/f39/f39/f39/fwBgAX0AYAJ/fQBgAn19AGADf399AGADf319AGADfX19AGAEf399fwBgBH99fX0AYAR9fX19AGACfX8Bf2AFf39/fX0AYAV/f39/fQBgBH9/f38BfAKyAjIBYQFiAAkBYQFjAAUBYQFkAAEBYQFlAAUBYQFmAAABYQFnAAsBYQFoAC0BYQFpAAwBYQFqAAQBYQFrAAEBYQFsAAUBYQFtAAABYQFuAAABYQFvAAkBYQFwAAEBYQFxAAYBYQFyAAMBYQFzAAIBYQF0AAUBYQF1AAEBYQF2AAABYQF3ABcBYQF4AAoBYQF5ABABYQF6AA4BYQFBAA4BYQFCAAoBYQFDAAQBYQFEAAQBYQFFAAEBYQFGAAABYQFHAAYBYQFIAA4BYQFJAAYBYQFKAAABYQFLABcBYQFMAAMBYQFNAAUBYQFOAAYBYQFP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Qv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQY0EQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQYyAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFat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AygCEBogAyADKAIIQQRrNgIIDAELCyADKAIABEAgAygCECADKAIAIgEgAygCDCABa0ECdRCYAwsLIAtBIGokAAwBCyABIANJBEAgACgCBCAAKAIAIgNrGiAAIAFBAnQgA2oQ/wIgACgCACIBIAAoAgggAWtBfHFqGiAAKAIEGgsLCyAAKAIAIAJBAnRqKAIABEAgACgCACACQQJ0aigCACIBQQRqQX/+HgIARQRAIAEgASgCACgCCBEAAAsLIAooAgghASAKQQA2AgggACgCACACQQJ0aiABNgIAIAooAgghACAKQQA2AgggAARAIABBBGpBf/4eAgBFBEAgACAAKAIAKAIIEQAACwsgCkEQaiQACwkAQZwcELMEAAslACAALQALQQd2BEAgACAAKAIAIAAoAghB/////wdxENYBCyAACzQBAX8jAEEQayIDJAAgAyABNgIMIAAgAygCDDYCACAAQQRqIAIoAgA2AgAgA0EQaiQAIAALlwICBH8IfiMAQRBrIgQkAAJAIAIpAxAiByABKQMQIgiBQgBSDQAgAikDGCIJIAEpAxgiCoFCAFINACACKQMgIgsgASkDICIMgUIAUg0AIAIpAygiDSABKQMoIg6BQgBSDQAgASgCSCEGAkACQCAHIAhSDQAgCSAKUg0AIAsgDFINACANIA5SDQAgBg0AIAEhAwwBCyAAIAEoAgAgAigCCCACQRBqQQAQPCIDQQ42AkAgBgRAIAAgAygCACADKAIIIANBEGpBABA8IQULIAMgAjYCUCADIAE2AkwgAyAFNgJICyAEQRBqJAAgAw8LIARBxcoANgIIIARBiyc2AgQgBEGRJDYCAEG4nwIoAgBBiNIAIAQQMhAAAAvwAQEDfwJ/IwBBEGsiBCQAAkAgASkDECACKQMQUg0AIAEpAxggAikDGFINACABKQMgIAIpAyBSDQAgASkDKCACKQMoUg0AIAFBEGohAwJ/An8CQCABKAJIDQAgAigCSA0AQQAMAQtBAQshBSAAIAEoAgAgASgCCCADQQAQPCIDQQI2AkBBACAFRQ0AGiAAIAMoAgAgAygCCCADQRBqQQAQPAshACADIAI2AlAgAyABNgJMIAMgADYCSCAEQRBqJAAgAwwBCyAEQdvKADYCCCAEQcsjNgIEIARBkSQ2AgBBuJ8CKAIAQYjSACAEEDIQAAALCx0A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AgAMAQsgAAsiBCADaiABIAIQdSAAIAIgA2oiARCWASAFQQA6AA8gASAEaiAFLQAPOgAADAELIAAgBCACIANqIARrIAMgA0EAIAIgARC+AQsgBUEQaiQAIAAL4QICBX8BfiAAQgA3AgQgACAAQQRqIgU2AgAgASgCBCICBEAgASgCACIGIAJBA3RqIQcDQCAAKAIEIQQCQAJAAkAgBSIBIAAoAgBGDQAgBSECAkAgBCIDBEADQCADIgEoAgQiAw0ADAILAAsDQCACKAIIIgEoAgAgAkYhAyABIQIgAw0ACwsgBigCACIDIAEoAhBKDQAgBSICIQEgBEUNAQNAIAQiASgCECICIANKBEAgASECIAEoAgAiBA0BDAMLIAIgA04NAyABKAIEIgQNAAsgAUEEaiECDAELIAFBBGogBSAEGyICKAIADQEgASAFIAQbIQELQRgQMyEDIAYpAgAhCCADIAE2AgggA0IANwIAIAMgCDcCECACIAM2AgAgACgCACgCACIBBEAgACABNgIAIAIoAgAhAwsgACgCBCADEJUBIAAgACgCCEEBajYCCAsgBkEIaiIGIAdHDQALCyAAC9YBAQJ/IwBBEGsiBCQAAkACQCACQQtJBEAgACIDIAAtAAtBgAFxIAJyOgALIAAgAC0AC0H/AHE6AAsMAQsgAkHv////B0sNASAEQQhqIAAgAkELTwR/IAJBEGpBcHEiAyADQQFrIgMgA0ELRhsFQQoLQQFqELgBIAQoAgwaIAAgBCgCCCIDNgIAIAAgACgCCEGAgICAeHEgBCgCDEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACACNgIECyADIAEgAkEBahB1IARBEGokAA8LEEwAC1IBAX8gAUEBayICQRBNBH8gAkECdEGchQNqKAIABUGwIAshAiAAQaSRAzYCACAAQaiSAzYCACAAQQRqIAIQ9gIgACABNgIIIABB6PwCNgIAIAALxwkCBH8FfiMAQfAAayIGJAAgBEL///////////8AgyEJAkACQCABUCIFIAJC////////////AIMiCkKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAKUBtFBEAgA0IAUiAJQoCAgICAgMD//wB9IgtCgICAgICAwICAf1YgC0KAgICAgIDAgIB/URsNAQsgBSAKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCUKAgICAgIDA//8AVCAJQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAKQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBRshBEIAIAEgBRshAwwCCyADIAlCgICAgICAwP//AIWEUA0BIAEgCoRQBEAgAyAJhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAJhEIAUg0AIAEhAyACIQQMAQsgAyABIAEgA1QgCSAKViAJIApRGyIIGyEKIAQgAiAIGyILQv///////z+DIQkgAiAEIAgbIgJCMIinQf//AXEhByALQjCIp0H//wFxIgVFBEAgBkHgAGogCiAJIAogCSAJUCIFG3kgBUEGdK18pyIFQQ9rEGMgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAJC////////P4MhBCAHRQRAIAZB0ABqIAMgBCADIAQgBFAiBxt5IAdBBnStfKciB0EPaxBjQRAgB2shByAGKQNYIQQgBikDUCEDCyAEQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQhBCACIAuFIQ0CfiADQgOGIgIgBSAHRg0AGiAFIAdrIgdB/wBLBEBCACEBQgEMAQsgBkFAayACIAFBgAEgB2sQYyAGQTBqIAIgASAHEKYBIAYpAzghASAGKQMwIAYpA0AgBikDSIRCAFKthAshCSAEQoCAgICAgIAEhCEMIApCA4YhCgJAIA1CAFMEQEIAIQNCACEEIAkgCoUgASAMhYRQDQIgCiAJfSECIAwgAX0gCSAKVq19IgRC/////////wNWDQEgBkEgaiACIAQgAiAEIARQIgcbeSAHQQZ0rXynQQxrIgcQYyAFIAdrIQUgBikDKCEEIAYpAyAhAgwBCyAJIAp8IgIgCVStIAEgDHx8IgRCgICAgICAgAiDUA0AIAlCAYMgBEI/hiACQgGIhIQhAiAFQQFqIQUgBEIBiCEECyALQoCAgICAgICAgH+DIQEgBUH//wFOBEAgAUKAgICAgIDA//8AhCEEQgAhAwwBC0EAIQcCQCAFQQBKBEAgBSEHDAELIAZBEGogAiAEIAVB/wBqEGMgBiACIARBASAFaxCmASAGKQMAIAYpAxAgBikDGIRCAFKthCECIAYpAwghBAsgAqdBB3EiBUEES60gBEI9hiACQgOIhCICfCIDIAJUrSAEQgOIQv///////z+DIAetQjCGhCABhHwhBAJAIAVBBEYEQCAEIANCAYMiASADfCIDIAFUrXwhBAwBCyAFRQ0BCwsgACADNwMAIAAgBDcDCCAGQfAAaiQACwoAIABBtMIrEHgLOAICfwF+IwBBEGsiACQAIAAQygEgACkDACECIAAoAgghASAAQRBqJAAgAUHoB22sIAJCwIQ9fnwLZAAgAigCBEGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgASAAa0ECSA0AIAJBMEcNACAALQABQSByQfgARw0AIABBAmohAAsgAAs5AQF/IwBBEGsiASQAIAECfyAALQALQQd2BEAgACgCAAwBCyAACzYCCCABKAIIIQAgAUEQaiQAIAALfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAnMgAmsiAq1CACACZyICQdEAahBjIAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQACwwAIAEgAiAAEPEDGguKAwIDfwF8IwBBEGsiASQAAkAgALwiA0H/////B3EiAkHan6T6A00EQCACQYCAgMwDSQ0BIAC7EIMBIQAMAQsgAkHRp+2DBE0EQCAAuyEEIAJB45fbgARNBEAgA0EASARAIAREGC1EVPsh+T+gEIQBjCEADAMLIAREGC1EVPsh+b+gEIQBIQAMAgtEGC1EVPshCcBEGC1EVPshCUAgA0EAThsgBKCaEIMBIQAMAQsgAkHV44iHBE0EQCACQd/bv4UETQRAIAC7IQQgA0EASARAIARE0iEzf3zZEkCgEIQBIQAMAwsgBETSITN/fNkSwKAQhAGMIQAMAgtEGC1EVPshGUBEGC1EVPshGcAgA0EASBsgALugEIMBIQAMAQsgAkGAgID8B08EQCAAIACTIQAMAQsCQAJAAkACQCAAIAFBCGoQjQRBA3EOAwABAgMLIAErAwgQgwEhAAwDCyABKwMIEIQBIQAMAgsgASsD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IgMEfyADEDMFQQALIgJqIgYgBDoAACACIAEgBfwKAAAgACACIANqNgIcIAAgBkEBajYCGCAAIAI2AhQgAUUNASABEDEPCyAAKAIcIQQgACgCGCECIAAtAFoEQCACIARJDQQgAiAAKAIUIgJrIgVBAWoiA0EASA0DIAVB/////wcgBCACayIEQQF0IgYgAyADIAZJGyAEQf////8DTxsiAwR/IAMQMwVBAAsiBGoiBiABOgAAIAQgAiAF/AoAACAAIAMgBGo2AhwgACAGQQFqNgIYIAAgBDYCFCACRQ0BIAIQMQ8LIAIgBEcNAyACIAAoAhQiBGsiAkEBaiIFQQBIDQIgAkH/////ByACQQF0IgMgBSADIAVLGyACQf////8DTxsiAwR/IAMQMwVBAAsiBWoiBiABOgAAIAUgBCAC/AoAACAAIAMgBWo2AhwgACAGQQFqNgIYIAAgBTYCFCAERQ0AIAQQMQsPCxBEAAsQRAALIAIgAToAACAAIAJBAWo2AhgLEwAgAUEBdEGQhgNqQQIgABDxAwt2AQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIgAtAAAhASAAIAIoAggiAC0AADoAACAAIAE6AAAgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQLrwMBA38jAEEgayIDJAACQAJAAkAgACgCACIEQQBKBEADQCAAIAJBAnRqKAIUIAFGDQIgAkEBaiICIARHDQALC0EAIQIgACgCBCIEQQBKBEADQCAAIAJBAnRqQZSAAmooAgAgAUYNAiACQQFqIgIgBEcNAAsLIAEoAkwiAgRAIAAgAhCkAQsgASgCUCICBEAgACACEKQBCyAB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Af5IApyWAyAARw0ACyAADwsjA0EcakEwNgIAQX8LgwECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIAAgAEIKgCIFQgp+fadBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABCxoAIAAgARCABCIAQQAgAC0AACABQf8BcUYbC/ACAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIANgIAIAMgAiAEa0F8cSICaiIBQQRrIAA2AgAgAkEJSQ0AIAMgADYCCCADIAA2AgQgAUEIayAANgIAIAFBDGsgADYCACACQRlJDQAgAyAANgIYIAMgADYCFCADIAA2AhAgAyAANgIMIAFBEGsgADYCACABQRRrIAA2AgAgAUEYayAANgIAIAFBHGsgADYCACACIANBBHFBGHIiAWsiAkEgSQ0AIACtQoGAgIAQfiEFIAEgA2ohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCwv9DAIFfwJ8IwBBQGoiAyQAIAIrAyAhCAJ/AkAgASsDICIJIAArAyBkRQRAQQAgCCAJZEUNAhogAyABLQAIOgA4IAMgASkDADcDMCABKAIUIQUgASgCECEGIAFCADcDECABKAIYIQcgAUEANgIYIAMgASgCRDYCKCADIAEpAjw3AyAgAyAB/QACLP0LAxAgAyAB/QACHP0LAwAgASACKQMANwMAIAEgAi0ACDoACCABIAIoAhA2AhAgASACKAIUNgIUIAEgAigCGDYCGCACQQA2AhggAkEANgIQIAEgAigCRDYCRCABIAIpAjw3AjwgASAC/QACLP0LAiwgASAC/QACHP0LAhwgAiADKQMwNwMAIAIgAy0AODoACCACKAIQIgQEQCACIAQ2AhQgBBAxCyACIAc2AhggAiAFNgIUIAIgBjYCECACIAMoAig2AkQgAiADKQMgNwI8IAIgA/0AAxD9CwIsIAIgA/0AAwD9CwIcQQEgASsDICAAKwMgZEUNAhogAyAALQAIOgA4IAMgACkDADcDMCAAKAIUIQIgACgCECEEIABCADcDECAAKAIYIQUgAEEANgIYIAMgACgCRDYCKCADIAApAjw3AyAgAyAA/QACLP0LAxAgAyAA/QACHP0LAwAgACABKQMANwMAIAAgAS0ACDoACCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCABQQA2AhggAUEANgIQIAAgASgCRDYCRCAAIAEpAjw3AjwgACAB/QACLP0LAiwgACAB/QACHP0LAhwgASADLQA4OgAIIAEgAykDMDcDACABKAIQIgAEQCABIAA2AhQgABAxCyABIAU2AhggASACNgIUIAEgBDYCECABIAMoAig2AkQgASADKQMgNwI8IAEgA/0AAxD9CwIsIAEgA/0AAwD9CwIcDAELIAggCWQEQCADIAAtAAg6ADggAyAAKQMANwMwIAAoAhQhASAAKAIQIQQgAEIANwMQIAAoAhghBSAAQQA2AhggAyAAKAJENgIoIAMgACkCPDcDICADIAD9AAIs/QsDECADIAD9AAIc/QsDACAAIAIpAwA3AwAgACACLQAIOgAIIAAgAigCEDYCECAAIAIoAhQ2AhQgACACKAIYNgIYIAJBADYCGCACQQA2AhAgACACKAJENgJEIAAgAikCPDcCPCAAIAL9AAIs/QsCLCAAIAL9AAIc/QsCHCACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiAARAIAIgADYCFCAAEDELIAIgBTYCGCACIAE2AhQgAiAENgIQIAIgAygCKDYCRCACIAMpAyA3AjwgAiAD/QADEP0LAiwgAiAD/QADAP0LAhxBAQwCCyADIAAtAAg6ADggAyAAKQMANwMwIAAoAhQhBCAAKAIQIQUgAEIANwMQIAAoAhghBiAAQQA2AhggAyAAKAJENgIoIAMgACkCPDcDICADIAD9AAIs/QsDECADIAD9AAIc/QsDACAAIAEpAwA3AwAgACABLQAIOgAIIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAFBADYCGCABQQA2AhAgACABKAJENgJEIAAgASkCPDcCPCAAIAH9AAIs/QsCLCAAIAH9AAIc/QsCHCABIAMpAzA3AwAgASADLQA4OgAIIAEoAhAiAARAIAEgADYCFCAAEDELIAEgBjYCGCABIAQ2AhQgASAFNgIQIAEgAygCKDYCRCABIAMpAyA3AjwgASAD/QADEP0LAiwgASAD/QADAP0LAhxBASACKwMgIAErAyBkRQ0BGiADIAEtAAg6ADggAyABKQMANwMwIAFBADYCGCABQgA3AxAgAyABKAJENgIoIAMgASkCPDcDICADIAH9AAIs/QsDECADIAH9AAIc/QsDACABIAItAAg6AAggASACKQMANwMAIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAJBADYCECACQQA2AhggASACKAJENgJEIAEgAikCPDcCPCABIAL9AAIs/QsCLCABIAL9AAIc/QsCHCACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiAARAIAIgADYCFCAAEDELIAIgBjYCGCACIAQ2AhQgAiAFNgIQIAIgAygCKDYCRCACIAMpAyA3AjwgAiAD/QADEP0LAiwgAiAD/QADAP0LAhwLQQILIQAgA0FAayQAIAALgwMBBH8jAEEQayIIJAAgAiABQX9zQe////8Hak0EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQkgCCAAIAFB5////wNJBH8gCCABQQF0NgIMIAggASACajYCACMAQRBrIgIkACAIKAIAIAhBDGoiCigCAEkhCyACQRBqJAAgCiAIIAsbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLELgBIAgoAgAhAiAIKAIEGiAEBEAgAiAJIAQQdQsgBgRAIAIgBGogByAGEHULIAMgBCAFaiIKayEHIAMgCkcEQCACIARqIAZqIAQgCWogBWogBxB1CyABQQFqIgFBC0cEQCAAIAkgARDkAQsgACACNgIAIAAgACgCCEGAgICAeHEgCCgCBEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAZqIAdqIgA2AgQgCEEAOgAMIAAgAmogCC0ADDoAACAIQRBqJAAPCxBMAAv6AwIGfwh+IwBBMGsiAyQAAkACQCACKQMoIAIpAyAiCSACKQMYIgogAikDECILfn5+IgwgASkDKCABKQMgIg0gASkDGCIOIAEpAxAiD35+flEEQCACKAIw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QX9zIARqIQpBACEGIAgEQANAIAMgAEECdCILaiACIAtqKgIAkTgCACAAQQFqIQAgBkEBaiIGIAhHDQALCyAKQQNJDQADQCADIABBAnQiBmogAiAGaioCAJE4AgAgAyAGQQRqIgpqIAIgCmoqAgCROAIAIAMgBkEIaiIKaiACIApqKgIAkTgCACADIAZBDGoiBmogAiAGaioCAJE4AgAgAEEEaiIAIARHDQALCyAHQQFqIgcgDUcNAAsLIAVBEGokAAwBCyAFQfgeNgIIIAVBtMEANgIEDC8LDCcLIAEoAkwhAyMAQdAAayICJAACQAJAAkACQAJAIAMoAgBFBEAgACgCBA0BIAMpAxAiPiABKQMQUg0CIAMpAxgiQiABKQMYUg0CIAMpAyAiQCABKQMgUg0CIAMpAygiPyABKQMoUg0CAkACQCAAKAIADgMBAAEACyABKAIwQQRHDQQgAygCMEEERw0FIEAgQn4gP36nIglBAEwNACA+pyIFQQBMDQAgAygCNCEKIAEoAjQhCyADKAKAASENIAEoAoABIQ4gBUEDcSEIIAVBfHEhASAFQQRJIQwDQCANIAcgCmxqIQMgDiAHIAtsaiEEQQAhAAJAAkAgDA0AIAQgA2tBEEkNAANAIAQgAEECdCIGaiADIAZq/QACACJZ/R8AEIEB/RMgWf0fARCBAf0gASBZ/R8CEIEB/SACIFn9HwMQgQH9IAP9CwIAIABBBGoiACABRw0ACyABIgAgBUYNAQsgAEF/cyAFaiERQQAhBiAIBEADQCAEIABBAnQiD2ogAyAPaioCABCBATgCACAAQQFqIQAgBkEBaiIGIAhHDQALCyARQQNJDQADQCAEIABBAnQiBmogAyAGaioCABCBATgCACAEIAZBBGoiEWogAyARaioCABCBATgCACAEIAZBCGoiEWogAyARaioCABCBATgCACAEIAZBDGoiBmogAyAGaioCABCBATgCACAAQQRqIgAgBUcNAAsLIAdBAWoiByAJRw0ACwsgAkHQAGokAAwFCyACQfgeNgJIIAJB38EANgJEIAJBkSQ2AkBBuJ8CKAIAQYjSACACQUBrEDIMOgsgAkG+NTYCOCACQcDBADYCNAwwCyACQZrDADYCKCACQcHBADYCJAwsCyACQbnDADYCGCACQcrBADYCFAwsCyACQfTDADYCCCACQcvB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ADgCACAEIAZBBGoiEmogASASaioCADgCACAEIAZBCGoiEmogASASaioCADgCACAEIAZBDGoiBmogASAGaioCADgCACAAQQRqIgAgBUcNAAsLIAdBAWoiByAWRw0ACyBAQgF8IkAgP1INAAsgRkIBfCFGIApBAWoiCiAVRw0ACyBCQgF8IkIgQVINAAsgRUIBfCFFIAlBAWoiCSAURw0ACyA+QgF8Ij4gQ1INAAsgREIBfCFEIAhBAWoiCCATRw0ACwsgA0HQAGokAAwFCyADQfgeNgJIIANB8cMANgJEIANBkSQ2AkBBuJ8CKAIAQYjSACADQUBrEDIMNgsgA0G+NTYCOCADQa3DADYCNAwwCyADQZnCADYCKCADQa7DADYCJAwwCyADQdPEADYCGCADQc/DADYCFAwwCyADQazFADYCCCADQdDDADYCBAwrCwwiCyABKAJMIQIjAEEQayIFJAACQCACKAIARQRAAkACQCAAKAIADgMBAAEACyACKQMoIAIpAyAgAikDGH5+pyINQQBMDQAgAigCECIEQQBMDQAgAigCNCEOIAEoAjQhDCACKAKAASERIAEoAoABIQ8gBEEDcSEIIARBfHEhASAEQQRrIhJBAnZBAWoiAEH8////B3EhECAAQQNxIQkgBEEESSETA0AgESAHIA5saiECIA8gByAMbGohA0EAIQACQAJAIBMNACADIAJrQRBJDQBBACEKQQAhCyASQQxPBEADQCADIABBAnQiBmogAiAGav0AAgD94AH9CwIAIAMgBkEQciIUaiACIBRq/QACAP3gAf0LAgAgAyAGQSByIhRqIAIgFGr9AAIA/eAB/QsCACADIAZBMHIiBmogAiAGav0AAgD94AH9CwIAIABBEGohACALQQRqIgsgEEcNAAsLIAkEQANAIAMgAEECdCIGaiACIAZq/QACAP3gAf0LAgAgAEEEaiEAIApBAWoiCiAJRw0ACwsgASIAIARGDQELIABBf3MgBGohCkEAIQYgCARAA0AgAyAAQQJ0IgtqIAIgC2oqAgCLOAIAIABBAWohACAGQQFqIgYgCEcNAAsLIApBA0kNAANAIAMgAEECdCIGaiACIAZqKgIAizgCACADIAZBBGoiCmogAiAKaioCAIs4AgAgAyAGQQhqIgpqIAIgCmoqAgCLOAIAIAMgBkEMaiIGaiACIAZqKgIAizgCACAAQQRqIgAgBEcNAAsLIAdBAWoiByANRw0ACwsgBUEQaiQADAELIAVB+B42AgggBUGbxAA2AgQMKQsMIQsgASgCTCECIwBBEGsiBSQAAkAgAigCAEUEQAJAAkAgACgCAA4DAQABAAsgAikDKCACKQMgIAIpAxh+fqciCUEATA0AIAIoAhAiA0EATA0AIAIoAjQhCiABKAI0IQsgAigCgAEhDSABKAKAASEOQQAgA2shDCADQQFxIREgA0F8cSEBIANBBGsiD0ECdkEBaiIAQf7///8HcSESIABBAXEhECADQQRJIRMDQCANIAcgCmxqIQIgDiAHIAtsaiEEQQAhAAJAAkAgEw0AIAQgAmtBEEkNAEEAIQYgD0EETwRAA0AgBCAAQQJ0Ighq/QwAAIA/AACAPwAAgD8AAIA//QwAAIC/AACAvwAAgL8AAIC//QwAAAAAAAAAAAAAAAAAAAAAIAIgCGr9AAIAIln9DAAAAAAAAAAAAAAAAAAAAAD9Q/1SIFn9DAAAAAAAAAAAAAAAAAAAAAD9RP1S/QsCACAEIAhBEHIiCGr9DAAAgD8AAIA/AACAPwAAgD/9DAAAgL8AAIC/AACAvwAAgL/9DAAAAAAAAAAAAAAAAAAAAAAgAiAIav0AAgAiWf0MAAAAAAAAAAAAAAAAAAAAAP1D/VIgWf0MAAAAAAAAAAAAAAAAAAAAAP1E/VL9CwIAIABBCGohACAGQQJqIgYgEkcNAAsLIBAEQCAEIABBAnQiAGr9DAAAgD8AAIA/AACAPwAAgD/9DAAAgL8AAIC/AACAvwAAgL/9DAAAAAAAAAAAAAAAAAAAAAAgACACav0AAgAiWf0MAAAAAAAAAAAAAAAAAAAAAP1D/VIgWf0MAAAAAAAAAAAAAAAAAAAAAP1E/VL9CwIACyABIgAgA0YNAQsgAEF/cyEGIBEEQCAEIABBAnQiCGpDAACAP0MAAIC/QwAAAAAgAiAIaioCACJiQwAAAABdGyBiQwAAAABeGzgCACAAQQFyIQALIAYgDEYNAANAIAQgAEECdCIGakMAAIA/QwAAgL9DAAAAACACIAZqKgIAImJDAAAAAF0bIGJDAAAAAF4bOAIAIAQgBkEEaiIGakMAAIA/QwAAgL9DAAAAACACIAZqKgIAImJDAAAAAF0bIGJDAAAAAF4bOAIAIABBAmoiACADRw0ACwsgB0EBaiIHIAlHDQALCyAFQRBqJAAMAQsgBUH4HjYCCCAFQcXEADYCBAwoCwwgCyABKAJMIQIjAEEQayIFJAACQCACKAIARQRAAkACQCAAKAIADgMBAAEACyACKQMoIAIpAyAgAikDGH5+pyINQQBMDQAgAigCECIEQQBMDQAgAigCNCEOIAEoAjQhDCACKAKAASERIAEoAoABIQ8gBEEDcSEIIARBfHEhASAEQQRrIhJBAnZBAWoiAEH8////B3EhECAAQQNxIQkgBEEESSETA0AgESAHIA5saiECIA8gByAMbGohA0EAIQACQAJAIBMNACADIAJrQRBJDQBBACEKQQAhCyASQQxPBEADQCADIABBAnQiBmogAiAGav0AAgD94QH9CwIAIAMgBkEQciIUaiACIBRq/QACAP3hAf0LAgAgAyAGQSByIhRqIAIgFGr9AAIA/eEB/QsCACADIAZBMHIiBmogAiAGav0AAgD94QH9CwIAIABBEGohACALQQRqIgsgEEcNAAsLIAkEQANAIAMgAEECdCIGaiACIAZq/QACAP3hAf0LAgAgAEEEaiEAIApBAWoiCiAJRw0ACwsgASIAIARGDQELIABBf3MgBGohCkEAIQYgCARAA0AgAyAAQQJ0IgtqIAIgC2oqAgCMOAIAIABBAWohACAGQQFqIgYgCEcNAAsLIApBA0kNAANAIAMgAEECdCIGaiACIAZqKgIAjDgCACADIAZBBGoiCmogAiAKaioCAIw4AgAgAyAGQQhqIgpqIAIgCmoqAgCMOAIAIAMgBkEMaiIGaiACIAZqKgIAjDgCACAAQQRqIgAgBEcNAAsLIAdBAWoiByANRw0ACwsgBUEQaiQADAELIAVB+B42AgggBUHvxAA2AgQMJwsMHwsgASgCTCECIwBBEGsiBSQAAkAgAigCAEUEQAJAAkAgACgCAA4DAQABAAsgAikDKCACKQMgIAIpAxh+fqciDUEATA0AIAIoAhAiBEEATA0AIAIoAjQhDiABKAI0IQwgAigCgAEhESABKAKAASEPIARBA3EhCCAEQXxxIQEgBEEEayISQQJ2QQFqIgBB/P///wdxIRAgAEEDcSEJIARBBEkhEwNAIBEgByAObGohAiAPIAcgDGxqIQNBACEAAkACQCATDQAgAyACa0EQSQ0AQQAhCkEAIQsg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IgMEQCAAQYgVaigCACIBIAMiAkcEQANAIAFBKGsiAigCHCIEBEAgAUEIayAENgIAIAQQMQsgAUENaywAAEEASARAIAFBGGsoAgAQMQsgAiIBIANHDQALIAAoAoQVIQILIAAgAzYCiBUgAhAxCyAAKAL4FCIBBEAgAEH8FGogATYCACABEDELIABBqBRqKAIAIgEEQCAAQawUaiABNgIAIAEQMQsgAEGcFGooAgAiAQRAIABBoBRqIAE2AgAgARAxCyAAQZAUaigCACIBBEAgAEGUFGogATYCACABEDELIABBhBRqKAIAIgEEQCAAQYgUaiABNgIAIAEQMQsgAEH4E2ooAgAiAQRAIABB/BNqIAE2AgAgARAxCyAAQewTaigCACIBBEAgAEHwE2ogATYCACABEDELIABB4BNqKAIAIgEEQCAAQeQTaiABNgIAIAEQMQsgAEHUE2ooAgAiAQRAIABB2BNqIAE2AgAgARAxCyAAQcgTaigCACIBBEAgAEHME2ogATYCACABEDELIABBvBNqKAIAIgEEQCAAQcATaiABNgIAIAEQMQsgAEGwE2ooAgAiAQRAIABBtBNqIAE2AgAgARAxCyAAQaQTaigCACIBBEAgAEGoE2ogATYCACABEDELIABBmBNqKAIAIgEEQCAAQZwTaiABNgIAIAEQMQsgAEGME2ooAgAiAQRAIABBkBNqIAE2AgAgARAxCyAAQYATaigCACIBBEAgAEGEE2ogATYCACABEDELIAAoAvQSIgEEQCAAQfgSaiABNgIAIAEQMQsgACgC6BIiAQRAIABB7BJqIAE2AgAgARAxCyAAQegSaiEBIABB6ABqIQQDQCABQZABayIDKAKEASICBEAgAUEIayACNgIAIAIQMQsgAUEYaygCACICBEAgAUEUayACNgIAIAIQMQsgAUEkaygCACICBEAgAUEgayACNgIAIAIQMQsgAUEwaygCACICBEAgAUEsayACNgIAIAIQMQsgAUHwAGsoAgAiAgRAIAFB7ABrIAI2AgAgAhAxCyABQYQBaygCACICBEAgAUGAAWsgAjYCACACEDELIAMiASAERw0ACyAAKAJcIgEEQCAAIAE2AmAgARAxCyAAQUBrKAIAIgEEQCAAIAE2AkQgARAxCyAACysAIAEEQCAAIAEoAgAQgwIgACABKAIEEIMCIAFBFGog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ASACRwRAIAMgASAF/AoAAAsgBCABIAVqNgIMIAQgAyAFajYCCCAAIAQoAgw2AgAgACAEKAIINgIEIARBEGokAAs2AQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADKAIMNgIAIAAgAygCCDYCBCADQRBqJAALjgEBA38gASgCSCEEIAAgASgCACABKAIIIAFBEGogASgCgAEQPCICIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCABKAI8IQMgAkEoNgJAIAIgAzYCPEEAIQMgBARAIAAgAigCACACKAIIIAJBEGpBABA8IQMLIAJBADYCUCACIAE2AkwgAiADNgJIIAILOwEBfyAAQbSmAigCACIBNgIAIAAgAUEMaygCAGpBwKYCKAIANgIAIABBCGoQ5QEaIABB7ABqELACIAALtgEBA38gASgCSCEEIAAgASgCACABKAIIIAFBEGogASgCgAEQPCICIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAiABKQMYNwMQIAIgASkDEDcDGCACIAEoAjQ2AjAgASgCMCEDIAJBIjYCQCACIAM2AjRBACEDIAQEQCAAIAIoAgAgAigCCCACQRBqQQAQPCEDCyACQQA2AlAgAiABNgJMIAIgAzYCSCACCwwAIABBCGoQsAIgAAsIACAAEKgCGgt8AQJ/IAAgACgCSCIBQQFrIAFyNgJIIAAoAhQgACgCHEcEQCAAQQBBACAAKAIkEQMAGgsgAEEANgIcIABCADcDECAAKAIAIgFBBHEEQCAAIAFBIHI2AgBBfw8LIAAgACgCLCAAKAIwaiICNgIIIAAgAjYCBCABQRt0QR91CzcBAX8gACgCTEEASARAIAAgASACEPQDDwsgABCCASEDIAAgASACEPQDIQIgAwRAIAAQjQELIAIL0gMCAn4CfyMAQSBrIgQkAAJAIAFC////////////AIMiA0KAgICAgIDAgDx9IANCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEDIABC//////////8PgyIAQoGAgICAgICACFoEQCADQoGAgICAgICAwAB8IQIMAgsgA0KAgICAgICAgEB9IQIgAEKAgICAgICAgAhSDQEgAiADQgGDfCECDAELIABQIANCgICAgICAwP//AFQgA0KAgICA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AiAGIANBAWogACgCEEEBahDSAiEDCyADIARHDQELCyAEIAVGBEBBCBAzIQMgACgCJCIFKAIEIQYgA0G4iwE2AgAgAyAGNgIEIAUgAzYCBCAAIAAoAiQoAgQ2AiQLQQwQMyEDIAcoAgQhBSADIAEoAgQ2AgggAyAFNgIEIANBjJcBNgIAIAcgAzYCBCABQQA2AgRBCBAzIQMgACgCJCgCBCEFIANBuIsBNgIAIAMgBTYCBCABIAM2AgQgACgCJEEANgIEQQgQMyEDIAEoAgQhBSADQcyXATYCACADIAU2AgQgACgCJCADNgIEIAAgASgCBDYCJCACIARHDQALCyACC+gDAQR/AkACQAJAIAAoAgQgACgCACICa0EobSIFQQFqIgNB58yZM0kEQEHmzJkzIAAoAgggAmtBKG0iAkEBdCIEIAMgAyAESRsgAkGz5swZTxsiA0HnzJkzTw0BIANBKGwiAxAzIgQgBUEobGoiAiAB/QADAP0LAwAgAiABKAIYNgIYIAIgASkDEDcDECABQgA3AxAgAUEANgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAFBADYCJCABQgA3AhwgAyAEaiEDIAJBKGohBSAAKAIEIgEgACgCACIERg0CA0AgAkEoayICIAFBKGsiAf0AAwD9CwMAIAIgASgCGDYCGCACIAEpAxA3AxAgAUIANwMQIAFBADYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCABQQA2AiQgAUIANwIcIAEgBEcNAAsgACADNgIIIAAoAgQhAyAAIAU2AgQgACgCACEBIAAgAjYCACABIANGDQMDQCADQShrIgAoAhwiAgRAIANBCGsgAjYCACACEDELIANBDWssAABBAEgEQCADQRhrKAIAEDELIAAiAyABRw0ACwwDCxBEAAsQWwALIAAgAzYCCCAAIAU2AgQgACACNgIACyABBEAgARAxCwsfACABBEAgACABKAIAENYCIAAgASgCBBDWAiABEDELC/MlAhB/AnwjAEHwAGsiBCQAA0AgAUEsayELIAFBMGshDiABQTRrIQ8gAUE4ayENIAFBKGshESABQcgAayEKA0AgACEFA0ACQAJAAkACQAJAAkACQAJAIAEgBWsiDEHIAG0iCQ4GBwcABAECAwsgAUEoaysDACAFKwMg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AP0LAgAgBCAFQRByIg1qIAEgDWr9AAIA/QsCACAEIAVBIHIiDWogASANav0AAgD9CwIAIAQgBUEwciIFaiABIAVq/QACAP0LAgAgA0EQaiEDIAxBBGoiDCARRw0ACwsgCQRAA0AgBCADQQJ0IgVqIAEgBWr9AAIA/QsCACADQQRqIQMgC0EBaiILIAlHDQALCyAIQQJ0IgUgBGohAyAIIBBGDQEgASAFaiEBCwNAIAMgASgCADYCACADQQRqIQMgAUEEaiIBIAdJDQALCyAAIAM2AgQgBCAPRwRAIAQgCkF8cWsgDiAK/AoAAAsgAiAGRg0BIA4gAiAGIAJr/AoAAA8LIAcgBWtBAnUgCmoiAUGAgICABE8NAUH/////AyAEIAVrIgRBAXUiBiABIAEgBkkbIARB/P///wdPGyIBBH8gAUGAgICABE8NAyABQQJ0EDMFQQALIgQgCEF8cWohBiACIANHBEAgBiACIAlBfHH8CgAAIAYgCkECdGohBgsgBCAFIAj8CgAAIAYgDiAHIA5rIgL8CgAAIAAgBCABQQJ0ajYCCCAAIAIgBmo2AgQgACAENgIAIAUEQCAFEDELCw8LEEQACxBbAAvxFwIJfwN8AkADQCABQQhrIQogAUEQayEHA0AgACEDA0ACQAJAAkACQAJAAkACQAJAIAEgA2siCEEEdSIJDgYHBwABBAIDCyABQRBrIgArAwAiDCADKwMAIg1kRQ0GIAMgDDkDACAAIA05AwAMCgsgAUEQayIAKwMAIQwgAysDECINIAMrAwAiDmRFBEAgDCANZEUNBiADIAw5AxAgACANOQMAIANBGGooAgAhACADIAFBCGsiASgCADYCGCABIAA2AgAgAysDECIMIAMrAwAiDWRFDQYgAyANOQMQIAMgDDkDACADKAIIIQAgAyADKAIYNgIIIAMgADYCGA8LIAwgDWQEQCADIAw5AwAgACAOOQMADAoLIAMgDjkDECADIA05AwAgAygCCCECIAMgA0EYaigCADYCCCADIAI2AhggACsDACIMIA5kRQ0FIAMgDDkDECAAIA45AwAgAyABQQhrIgAoAgA2AhggACACNgIADwsgAyADQRBqIANBIGogA0EwahDNARogAUEQayIAKwMAIgwgAysDMCINZEUNBCADIAw5AzAgACANOQMAIANBOGooAgAhACADIAFBCGsiASgCADYCOCABIAA2AgAgAysDMCIMIAMrAyAiDWRFDQQgAyANOQMwIAMgDDkDICADQShqKAIAIQEgAyADKAI4IgA2AiggAyABNgI4IAwgAysDECINZEUNBCADIA05AyAgAyAMOQMQIANBGGooAgAhASADIAA2AhggAyABNgIoIAwgAysDACINZEUNBCADIA05AxAgAyAMOQMAIAMoAgghASADIAA2AgggAyABNgIYDwsgCEHvAEwEQCADKwMgIQwCQCADKwMQIg4gAysDACINZEUEQCAMIA5kRQ0BIAMgDjkDICADIAw5AxAgA0EYaigCACEAIAMgA0EoaigCACICNgIYIAMgADYCKCAMIA1kRQ0BIAMgDTkDECADIAw5AwAgAygCCCEAIAMgAjYCCCADIAA2AhgMAQsgDCAOZARAIAMgDTkDICADIAw5AwAgAygCCCEAIAMgA0EoaigCADYCCCADIAA2AigMAQsgAyANOQMQIAMgDjkDACADKAIIIQAgAyADQRhqKAIANgIIIAMgADYCGCAMIA1kRQ0AIAMgDTkDICADIAw5AxAgA0EoaigCACECIAMgADYCKCADIAI2AhgLIANBMGoiAiABRg0EIANBIGohBQNAIAIrAwAiDSAFKwMAIgxkBEAgAigCCCEHIAIhBANAAkAgBCAMOQMAIAQgBSIAKAIINgIIIAAgA0YEQCADIQAMAQsgACEEIA0gAEEQayIFKwMAIgxkDQELCyAAIAc2AgggACANOQMACyACIgVBEGoiACECIAAgAUcNAAsMBAsgAkUEQCABIANGDQQgCUECa0EBdiIGIQADQAJAIAYgACIHSA0AIAMgB0EEdGohAiADIAdBAXQiBEEBciIFQQR0aiEAAkAgCSAEQQJqIgRMBEAgBSEEDAELIAArAwAgACsDEGRFBEAgBSEEDAELIABBEGohAAsgACsDACIMIAIrAwAiDWQNACACKAIIIQoDQAJAIAIgDDkDACACIAAiAigCCDYCCCAEIAZKDQAgAyAEQQF0IgRBAXIiBUEEdGohAAJAIAkgBEECaiIETARAIAUhBAwBCyAAKwMAIAArAxBkRQRAIAUhBAwBCyAAQRBqIQALIAArAwAiDCANZEUNAQsLIAIgCjYCCCACIA05AwALIAdBAWshACAHQQBKDQALIAhBBHYhAANAIAEhBSAA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CCAKEGIgChA0GiAEIAAgACgCACgCDBEBADoAACAFIAAgACgCACgCEBEBADoAACAKIAAgACgCACgCFBECACAGIAoQYiAKEDQaIAogACAAKAIAKAIYEQIAIAcgChBiIAoQNBogACAAKAIAKAIkEQEADAELIAIQqQMhAAJAIAEEQCAKIAAgACgCACgCLBECACADIAooAgA2AAAgCiAAIAAoAgAoAiARAgAMAQsgCiAAIAAoAgAoAigRAgAgAyAKKAIANgAAIAogACAAKAIAKAIcEQIACyAIIAoQYiAKEDQaIAQgACAAKAIAKAIMEQEAOgAAIAUgACAAKAIAKAIQEQEAOgAAIAogACAAKAIAKAIUEQIAIAYgChBiIAoQNBogCiAAIAAoAgAoAhgRAgAgByAKEGIgChA0GiAAIAAoAgAoAiQRAQALNgIAIApBEGokAAsKACAAQcjBKxB4CwoAIABB0MErEHgLHwEBfyABKAIAEOoDIQIgACABKAIANgIEIAAgAjYCAAvKGAEKfyMAQbAEayILJAAgCyAKNgKkBCALIAE2AqgEAkAgACALQagEahBABEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQaIBNgJgIAsgC0GIAWogC0GQAWogC0HgAGoiDxBOIhEoAgAiATYChAEgCyABQZADajYCgAEjAEEQayIBJAAgD0IANwIAIA9BADYCCCABQRBqJAAjAEEQayIBJAAgC0HQAGoiDkIANwIAIA5BADYCCCABQRBqJAAjAEEQayIBJAAgC0FAayINQgA3AgAgDUEANgIIIAFBEGokACMAQRBrIgEkACALQTBqIgxCADcCACAMQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBIGoiEEIANwIAIBBBADYCCCABQRBqJAAjAEEQayIBJAAgCwJ/IAIEQCABIAMQpQMiAiACKAIAKAIsEQIAIAsgASgCADYAeCABIAIgAigCACgCIBECACAMIAEQhQEgARBNGiABIAIgAigCACgCHBECACANIAEQhQEgARBNGiALIAIgAigCACgCDBEBADYCdCALIAIgAigCACgCEBEBADYCcCABIAIgAigCACgCFBECACAPIAEQYiABEDQaIAEgAiACKAIAKAIYEQIAIA4gARCFASABEE0aIAIgAigCACgCJBEBAAwBCyABIAMQpAMiAiACKAIA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uMErEHgLCgAgAEHAwSsQeAvhAQEGfyMAQRBrIgUkACAAKAIEIQMCfyACKAIAIAAoAgBrIgRB/////wdJBEAgBEEBdAwBC0F/CyIEQQEgBBshBCABKAIAIQcgACgCACEIIANBogFGBH9BAAUgACgCAAsgBBDEASIGBEAgA0GiAUcEQCAAKAIAGiAAQQA2AgALIAVBoQE2AgQgACAFQQhqIAYgBUEEahBOIgMQqAMgAygCACEGIANBADYCACAGBEAgBiADKAIEEQAACyABIAAoAgAgByAIa2o2AgAgAiAEIAAoAgBqNgIAIAVBEGokAA8LEEgACyABAX8gASgCABDsA8AhAiAAIAEoAgA2AgQgACACOgAAC7QZAQp/IwBBsARrIgskACALIAo2AqQEIAsgATYCqAQCQCAAIAtBqARqEEEEQCAFIAUoAgBBBHI2AgBBACEADAELIAtBogE2AmggCyALQYgBaiALQZABaiALQegAaiIPEE4iESgCACIBNgKEASALIAFBkANqNgKAASMAQRBrIgEkACAPQgA3AgAgD0EANgIIIAFBEGokACMAQRBrIgEkACALQdgAaiIOQgA3AgAgDkEANgIIIAFBEGokACMAQRBrIgEkACALQcgAaiINQgA3AgAgDUEANgIIIAFBEGokACMAQRBrIgEkACALQThqIgxCADcCACAMQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBKGoiEEIANwIAIBBBADYCCCABQRBqJAAjAEEQayIBJAAgCwJ/IAIEQCABIAMQqgMiAiACKAIAKAIsEQIAIAsgASgCADYAeCABIAIgAigCACgCIBECACAMIAEQYiABEDQaIAEgAiACKAIAKAIcEQIAIA0gARBiIAEQNBogCyACIAIoAgAoAgwRAQA6AHcgCyACIAIoAgAoAhARAQA6AHYgASACIAIoAgAoAhQRAgAgDyABEGIgARA0GiABIAIgAigCACgCGBECACAOIAEQYiABEDQaIAIgAigCACgCJBEBAAwBCyABIAMQqQMiAiACKAIAKAIsEQIAIAsgASgCADYAeCABIAIgAigCACgCIBECACAMIAEQYiABEDQaIAEgAiACKAIAKAIcEQIAIA0gARBiIAEQNBogCyACIAIoAgAoAgwRAQA6AHcgCyACIAIoAgAoAhARAQA6AHYgASACIAIoAgAo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CQ0AIAUEQCAFIARBAnRqQQA2AgALIApFBEBBACEKDAELIAQgCmpBADoAAAsgBSEACyADKAIEIAMoAixrrCADKQN4IBV8fCEVIA4gCEEAR2ohDgsgAUEBaiEEIAEtAAEiAQ0BDAgLCyAFIQAMAQtBASEHQQAhCkEAIQAMAgsgDCEHDAMLIAwhBwsgDg0BC0F/IQ4LIAdFDQAgChAxIAAQMQsgEQRAIAMQjQELIAZBsAJqJAAgA0GQAWokACAOC0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsLtQMCA38BfiMAQSBrIgMkAAJAIAFC////////////AIMiBUKAgICAgIDAwD99IAVCgICAgICAwL/AAH1UBEAgAUIZiKchBCAAUCABQv///w+DIgVCgICACFQgBUKAgIAIURtFBEAgBEGBgICABGohAgwCCyAEQYCAgIAEaiECIAAgBUKAgIAIhYRCAFINASACIARBAXFqIQIMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQhmIp0H///8BcUGAgID+B3IhAgwBC0GAgID8ByECIAVC////////v7/AAFYNAEEAIQIgBUIwiKciBEGR/gBJDQAgA0EQaiAAIAFC////////P4NCgICAgICAwACEIgUgBEGB/gBrEGMgAyAAIAVBgf8AIARrEKYBIAMpAwgiAEIZiKchAiADKQMAIAMpAxAgAykDGIRCAFKthCIFUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAUgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIANBIGokACACIAFCIIinQYCAgIB4cXK+C4wEAgR/AX4CQAJAAkACQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABA9CyICQStrDgMAAQABCyACQS1GIQUCfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAED0LIgNBOmshBCABRQ0BIARBdUsNASAAKQNwQgBTDQIgACAAKAIEQQFrNgIEDAILIAJBOmshBCACIQMLIARBdkkNACADQTBrIgRBCkkEQEEAIQIDQCADIAJBCmxqIQECfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAED0LIgNBMGsiBEEJTSABQTBrIgJBzJmz5gBIcQ0ACyACrCEGCwJAIARBCk8NAANAIAOtIAZCCn58QjB9IQYCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAED0LIgNBMGsiBEEJSw0BIAZCro+F18fC66MBUw0ACwsgBEEKSQRAA0ACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAED0LQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAZ9IAYgBRshBgwBC0KAgICAgICAgIB/IQYgACkDcEIAUw0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBgvlMgMPfwd+AXwjAEEwayIMJAACQCACQQJNBEAgAkECdCICQcyoAmooAgAhDyACQcCoAmooAgAhDgNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARA9CyICQSBGIAJBCWtBBUlyDQALQQEhBgJAAkAgAkEraw4DAAEAAQtBf0EBIAJBLUYbIQYgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABED0hAgsCQAJAA0AgBUHECGosAAAgAkEgckYEQAJAIAVBBksNACABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACECDAELIAEQPSECCyAFQQFqIgVBCEcNAQwCCwsgBUEDRwRAIAVBCEYNASADRQ0CIAVBBEkNAiAFQQhGDQELIAEpA3AiE0IAWQRAIAEgASgCBEEBazYCBAsgA0UNACAFQQRJDQAgE0IAUyECA0AgAkUEQCABIAEoAgRBAWs2AgQLIAVBAWsiBUEDSw0ACwtCACETIwBBEGsiAiQAAn4gBrJDAACAf5S8IgNB/////wdxIgFBgICABGtB////9wdNBEAgAa1CGYZCgICAgICAgMA/fAwBCyADrUIZhkKAgICAgIDA//8AhCABQYCAgPwHTw0AGkIAIAFFDQAaIAIgAa1CACABZyIBQdEAahBjIAIpAwAhEyACKQMIQoCAgICAgMAAhUGJ/wAgAWutQjCGhAshFCAMIBM3AwAgDCAUIANBgICAgHhxrUIghoQ3AwggAkEQaiQAIAwpAwghEyAMKQMAIRQMAgsCQAJAAkAgBQ0AQQAhBQNAIAVBmBdqLAAAIAJBIHJHDQECQCAFQQFLDQAgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABED0hAgsgBUEBaiIFQQNHDQALDAELAkACQCAFDgQAAQECAQsCQCACQTBHDQACfyABKAIEIgUgASgCaEcEQCABIAVBAWo2AgQgBS0AAAwBCyABED0LQV9xQdgARgRAIwBBsANrIgIkAAJ/IAEoAgQiBSABKAJoRwRAIAEgBUEBajYCBCAFLQAADAELIAEQPQshBQJAAn8DQCAFQTBHBEACQCAFQS5HDQQgASgCBCIFIAEoAmhGDQAgASAFQQFqNgIEIAUtAAAMAwsFIAEoAgQiBSABKAJoRwR/QQEhCiABIAVBAWo2AgQgBS0AAAVBASEKIAEQPQshBQwBCwsgARA9CyEFQQEhBCAFQTBHDQADQCAWQgF9IRYCfyABKAIEIgUgASgCaEcEQCABIAVBAWo2AgQgBS0AAAwBCyABED0LIgVBMEYNAAtBASEKC0KAgICAgIDA/z8hFANAAkAgBUEgciELAkACQCAFQTBrIghBCkkNACAFQS5HIAtB4QBrQQZPcQ0CIAVBLkcNACAEDQJBASEEIBMhFgwBCyALQdcAayAIIAVBOUobIQUCQCATQgdXBEAgBSAJQQR0aiEJDAELIBNCHFgEQCACQTBqIAUQdCACQSBqIBggFEIAQoCAgICAgMD9PxBHIAJBEGogAikDMCACKQM4IAIpAyAiGCACKQMoIhQQRyACIAIpAxAgAikDGCAVIBcQbyACKQMIIRcgAikDACEVDAELIAVFDQAgBw0AIAJB0ABqIBggFEIAQoCAgICAgID/PxBHIAJBQGsgAikDUCACKQNYIBUgFxBvIAIpA0ghF0EBIQcgAikDQCEVCyATQgF8IRNBASEKCyABKAIEIgUgASgCaEcEfyABIAVBAWo2AgQgBS0AAAUgARA9CyEFDAELCwJ+IApFBEACQAJAIAEpA3BCAFkEQCABIAEoAgQiBUEBazYCBCADRQ0BIAEgBUECazYCBCAERQ0CIAEgBUEDazYCBAwCCyADDQELIAFCABCAAQsgAkHgAGogBrdEAAAAAAAAAACiEIoBIAIpA2AhFSACKQNoDAELIBNCB1cEQCATIRQDQCAJQQR0IQkgFEIBfCIUQghSDQALCwJAAkACQCAFQV9xQdAARgRAIAEgAxDXAyIUQoCAgICAgICAgH9SDQMgAwRAIAEpA3BCAFkNAgwDC0IAIRUgAUIAEIABQgAMBAtCACEUIAEpA3BCAFMNAgsgASABKAIEQQFrNgIEC0IAIRQLIAlFBEAgAkHwAGogBrdEAAAAAAAAAACiEIoBIAIpA3AhFSACKQN4DAELIBYgEyAEG0IChiAUfEIgfSITQQAgD2utVQRAIwNBHGpBxAA2AgAgAkGgAWogBhB0IAJBkAFqIAIpA6ABIAIpA6gBQn9C////////v///ABBHIAJBgAFqIAIpA5ABIAIpA5gBQn9C////////v///ABBHIAIpA4ABIRUgAikDiAEMAQsgD0HiAWusIBNXBEAgCUEATgRAA0AgAkGgA2ogFSAXQgBCgICAgICAwP+/fxBvIBUgF0KAgICAgICA/z8Q3QMhASACQZADaiAVIBcgFSACKQOgAyABQQBIIgMbIBcgAikDqAMgAxsQbyATQgF9IRMgAikDmAMhFyACKQOQAyEVIAlBAXQgAUEATnIiCUEATg0ACwsCfiATIA+sfUIgfCIUpyIBQQAgAUEAShsgDiAUIA6tUxsiAUHxAE4EQCACQYADaiAGEHQgAikDiAMhFiACKQOAAyEYQgAMAQsgAkHgAmpEAAAAAAAA8D9BkAEgAWsQpwEQigEgAkHQAmogBhB0IAJB8AJqIAIpA+ACIAIpA+gCIAIpA9ACIhggAikD2AIiFhDcAyACKQP4AiEZIAIpA/ACCyEUIAJBwAJqIAkgCUEBcUUgFSAXQgBCABCjAUEARyABQSBIcXEiAWoQtgEgAkGwAmogGCAWIAIpA8ACIAIpA8gCEEcgAkGQAmogAikDsAIgAikDuAIgFCAZEG8gAkGgAmogGCAWQgAgFSABG0IAIBcgARsQRyACQYACaiACKQOgAiACKQOoAiACKQOQAiACKQOYAhBvIAJB8AFqIAIpA4ACIAIpA4gCIBQgGRCnAiACKQPwASIUIAIpA/gBIhZCAEIAEKMBRQRAIwNBHGpBxAA2AgALIAJB4AFqIBQgFiATpxDbAyACKQPgASEVIAIpA+gBDAELIwNBHGpBxAA2AgAgAkHQAWogBhB0IAJBwAFqIAIpA9ABIAIpA9gBQgBCgICAgICAwAAQRyACQbABaiACKQPAASACKQPIAUIAQoCAgICAgMAAEEcgAikDsAEhFSACKQO4AQshEyAMIBU3AxAgDCATNwMYIAJBsANqJAAgDCkDGCETIAwpAxAhFAwGCyABKQNwQgBTDQAgASABKAIEQQFrNgIECyABIQUgBiEJIAMhCkEAIQNBACEGIwBBkMYAayIEJABBACAPayIQIA5rIRICQAJ/A0AgAkEwRwRAAkAgAkEuRw0EIAUoAgQiASAFKAJoRg0AIAUgAUEBajYCBCABLQAADAMLBSAFKAIEIgEgBSgCaEcEf0EBIQMgBSABQQFqNgIEIAEtAAAFQQEhAyAFED0LIQIMAQsLIAUQPQshAkEBIQcgAkEwRw0AA0AgE0IBfSETAn8gBSgCBCIBIAUoAmhHBEAgBSABQQFqNgIEIAEtAAAMAQsgBRA9CyICQTBGDQALQQEhAwsgBEEANgKQBiACQTBrIQggDAJ+AkACQAJAAkACQAJAAkAgAkEuRiIBDQAgCEEJTQ0ADAELA0ACQCABQQFxBEAgB0UEQCAUIRNBASEHDAILIANFIQEMBAsgFEIBfCEUIAZB/A9MBEAgDSAUpyACQTBGGyENIARBkAZqIAZBAnRqIgEgCwR/IAIgASgCAEEKbGpBMGsFIAgLNgIAQQEhA0EAIAtBAWoiASABQQlGIgEbIQsgASAGaiEGDAELIAJBMEYNACAEIAQoAoBGQQFyNgKARkHcjwEhDQsCfyAFKAIEIgEgBSgCaEcEQCAFIAFBAWo2AgQgAS0AAAwBCyAFED0LIgJBMGshCCACQS5GIgENACAIQQpJDQALCyATIBQgBxshEwJAIANFDQAgAkFfcUHFAEcNAAJAIAUgChDXAyIVQoCAgICAgICAgH9SDQAgCkUNBUIAIRUgBSkDcEIAUw0AIAUgBSgCBEEBazYCBAsgA0UNAyATIBV8IRMMBQsgA0UhASACQQBIDQELIAUpA3BCAFMNACAFIAUoAgRBAWs2AgQLIAFFDQILIwNBHGpBHDYCAAtCACEUIAVCABCAAUIADAELIAQoApAGIgFFBEAgBCAJt0QAAAAAAAAAAKIQigEgBCkDACEUIAQpAwgMAQsCQCAUQglVDQAgEyAUUg0AIA5BHkxBACABIA52Gw0AIARBMGogCRB0IARBIGogARC2ASAEQRBqIAQpAzAgBCkDOCAEKQMgIAQpAygQRyAEKQMQIRQgBCkDGAwBCyAQQQF2rSATUwRAIwNBHGpBxAA2AgAgBEHgAGogCRB0IARB0ABqIAQpA2AgBCkDaEJ/Qv///////7///wAQRyAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQRyAEKQNAIRQgBCkDSAwBCyAPQeIBa6wgE1UEQCMDQRxqQcQANgIAIARBkAFqIAkQdCAEQYABaiAEKQOQASAEKQOYAUIAQoCAgICAgMAAEEcgBEHwAGogBCkDgAEgBCkDiAFCAEKAgICAgIDAABBHIAQpA3AhFCAEKQN4DAELIAsEQCALQQhMBEAgBEGQBmogBkECdGoiASgCACEFA0AgBUEKbCEFIAtBAWoiC0EJRw0ACyABIAU2AgALIAZBAWohBgsgE6chBwJAIA1BCU4NACAHIA1IDQAgB0ERSg0AIAdBCUYEQCAEQcABaiAJEHQgBEGwAWogBCgCkAYQtgEgBEGgAWogBCkDwAEgBCkDyAEgBCkDsAEgBCkDuAEQRyAEKQOgASEUIAQpA6gBDAILIAdBCEwEQCAEQZACaiAJEHQgBEGAAmogBCgCkAYQtgEgBEHwAWogBCkDkAIgBCkDmAIgBCkDgAIgBCkDiAIQRyAEQeABakEAIAdrQQJ0QcCoAmooAgAQdCAEQdABaiAEKQPwASAEKQP4ASAEKQPgASAEKQPoARDaAyAEKQPQASEUIAQpA9gBDAILIA4gB0F9bGpBG2oiAUEeTEEAIAQoApAGIgIgAXYbDQAgBEHgAmogCRB0IARB0AJqIAIQtgEgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQRyAEQbACaiAHQQJ0QfinAmooAgAQdCAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhBHIAQpA6ACIRQgBCkDqAIMAQsDQCAEQZAGaiAGIgJBAWsiBkECdGooAgBFDQALQQAhCwJAIAdBCW8iA0UEQEEAIQEMAQtBACEBIANBCWogAyAHQQBIGyEDAkAgAkUEQEEAIQIMAQtBgJTr3ANBACADa0ECdEHAqAJqKAIAIgZtIQpBACEIQQAhBQNAIARBkAZqIAVBAnRqIg0gCCANKAIAIg0gBm4iEGoiCDYCACABQQFqQf8PcSABIAhFIAEgBUZxIggbIQEgB0EJayAHIAgbIQcgCiANIAYgEGxrbCEIIAVBAWoiBSACRw0ACyAIRQ0AIARBkAZqIAJBAnRqIAg2AgAgAkEBaiECCyAHIANrQQlqIQcLA0AgBEGQBmogAUECdGohBQJAA0AgB0EkTgRAIAdBJEcNAiAFKAIAQdHp+QRPDQILIAJB/w9qIQNBACEIA0AgCK0gBEGQBmogA0H/D3EiBkECdGoiAzUCAEIdhnwiE0KBlOvcA1QEf0EABSATIBNCgJTr3AOAIhRCgJTr3AN+fSETIBSnCyEIIAMgE6ciAzYCACACIAIgAiAGIAMbIAEgBkYbIAYgAkEBa0H/D3FHGyECIAZBAWshAyABIAZHDQALIAtBHWshCyAIRQ0ACyACIAFBAWtB/w9xIgFGBEAgBEGQBmoiAyACQf4PakH/D3FBAnRqIgYgBigCACACQQFrQf8PcSICQQJ0IANqKAIAcjYCAAsgB0EJaiEHIARBkAZqIAFBAnRqIAg2AgAMAQsLAkADQCACQQFqQf8PcSEGIARBkAZqIAJBAWtB/w9xQQJ0aiEIA0BBCUEBIAdBLUobIQoCQANAIAEhA0EAIQUCQANAAkAgAyAFakH/D3EiASACRg0AIARBkAZqIAFBAnRqKAIAIgEgBUECdEGQqAJqKAIAIg1JDQAgASANSw0CIAVBAWoiBUEERw0BCwsgB0EkRw0AQgAhE0EAIQVCACEUA0AgAiADIAVqQf8PcSIBRgRAIAJBAWpB/w9xIgJBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAFBAnRqKAIAELYBIARB8AVqIBMgFEIAQoCAgIDlmreOwAAQRyAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBvIAQpA+gFIRQgBCkD4AUhEyAFQQFqIgVBBEcNAAsgBEHQBWogCRB0IARBwAVqIBMgFCAEKQPQBSAEKQPYBRBHIAQpA8gFIRRCACETIAQpA8AFIRUgC0HxAGoiByAPayIGQQAgBkEAShsgDiAGIA5IIgUbIgFB8ABMDQIMBQsgCiALaiELIAMgAiIBRg0AC0GAlOvcAyAKdiENQX8gCnRBf3MhEEEAIQUgAyEBA0AgBEGQBmogA0ECdGoiESAFIBEoAgAiESAKdmoiBTYCACABQQFqQf8PcSABIAVFIAEgA0ZxIgUbIQEgB0EJayAHIAUbIQcgECARcSANbCEFIANBAWpB/w9xIgMgAkcNAAsgBUUNASABIAZHBEAgBEGQBmogAkECdGogBTYCACAGIQIMAwsgCCAIKAIAQQFyNgIADAELCwsgBEGQBWpEAAAAAAAA8D9B4QEgAWsQpwEQigEgBEGwBWogBCkDkAUgBCkDmAUgFSAUENwDIAQpA7gFIRggBCkDsAUhFyAEQYAFakQAAAAAAADwP0HxACABaxCnARCKASAEQaAFaiAVIBQgBCkDgAUgBCkDiAUQ2QMgBEHwBGogFSAUIAQpA6AFIhMgBCkDqAUiFhCnAiAEQeAEaiAXIBggBCkD8AQgBCkD+AQQbyAEKQPoBCEUIAQpA+AEIRULAkAgA0EEakH/D3EiCiACRg0AAkAgBEGQBmogCkECdGooAgAiCkH/ybXuAU0EQCAKRSADQQVqQf8PcSACRnENASAEQfADaiAJt0QAAAAAAADQP6IQigEgBEHgA2ogEyAWIAQpA/ADIAQpA/gDEG8gBCkD6AMhFiAEKQPgAyETDAELIApBgMq17gFHBEAgBEHQBGogCbdEAAAAAAAA6D+iEIoBIARBwARqIBMgFiAEKQPQBCAEKQPYBBBvIAQpA8gEIRYgBCkDwAQhEwwBCyAJtyEaIAIgA0EFakH/D3FGBEAgBEGQBGogGkQAAAAAAADgP6IQigEgBEGABGogEyAWIAQpA5AEIAQpA5gEEG8gBCkDiAQhFiAEKQOABCETDAELIARBsARqIBpEAAAAAAAA6D+iEIoBIARBoARqIBMgFiAEKQOwBCAEKQO4BBBvIAQpA6gEIRYgBCkDoAQhEwsgAUHvAEoNACAEQdADaiATIBZCAEKAgICAgIDA/z8Q2QMgBCkD0AMgBCkD2ANCAEIAEKMBDQAgBEHAA2ogEyAWQgBCgICAgICAwP8/EG8gBCkDyAMhFiAEKQPAAyETCyAEQbADaiAVIBQgEyAWEG8gBEGgA2ogBCkDsAMgBCkDuAMgFyAYEKcCIAQpA6gDIRQgBCkDoAMhFQJAIBJBAmsgB0H/////B3FODQAgBCAUQv///////////wCDNwOYAyAEIBU3A5ADIARBgANqIBUgFEIAQoCAgICAgID/PxBHIAQpA5ADIAQpA5gDQoCAgICAgIC4wAAQ3QMhAiAUIAQpA4gDIAJBAEgiAxshFCAVIAQpA4ADIAMbIRUgEyAWQgBCABCjAUEARyAFIAUgASAGR3EgAxtxRSASIAsgAkEATmoiC0HuAGpOcQ0AIwNBHGpBxAA2AgALIARB8AJqIBUgFCALENsDIAQpA/ACIRQgBCkD+AILNwMoIAwgFDcDICAEQZDGAGokACAMKQMoIRMgDCkDICEUDAQLIAEpA3BCAFkEQCABIAEoAgRBAWs2AgQLDAELAkACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABED0LQShGBEBBASEFDAELQoCAgICAgOD//wAhEyABKQNwQgBTDQMgASABKAIEQQFrNgIEDAMLA0ACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABED0LIgJBwQBrIQYCQAJAIAJBMGtBCkkNACAGQRpJDQAgAkHfAEYNACACQeEAa0EaTw0BCyAFQQFqIQUMAQsLQoCAgICAgOD//wAhEyACQSlGDQIgASkDcCIWQgBZBEAgASABKAIEQQFrNgIECwJAIAMEQCAFDQEMBAsMAQsDQCAFQQFrIQUgFkIAWQRAIAEgASgCBEEBazYCBAsgBQ0ACwwCCyMDQRxqQRw2AgAgAUIAEIABC0IAIRMLIAAgFDcDACAAIBM3AwggDEEwaiQAC8oGAgR/A34jAEGAAWsiBSQAAkACQAJAIAMgBEIAQgAQowFFDQACfyAEQv///////z+DIQoCfyAEQjCIp0H//wFxIgZB//8BRwRAQQQgBg0BGkECQQMgAyAKhFAbDAILIAMgCoRQCwshBiACQjCIpyIIQf//AXEiB0H//wFGDQAgBg0BCyAFQRBqIAEgAiADIAQQRyAFIAUpAxAiAiAFKQMYIgEgAiABENoDIAUpAwghAiAFKQMAIQQMAQsgASACQv///////////wCDIgogAyAEQv///////////wCDIgkQowFBAEwEQCABIAogAyAJEKMBBEAgASEEDAILIAVB8ABqIAEgAkIAQgAQRyAFKQN4IQIgBSkDcCEEDAELIARCMIinQf//AXEhBiAHBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABBHIAUpA2giCkIwiKdB+ABrIQcgBSkDYAshBCAGRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQRyAFKQNYIglCMIinQfgAayEGIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCyAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0gEQANAAn4gCiALfSADIARWrX0iCUIAWQRAIAkgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQRyAFKQMoIQIgBSkDICEEDAULIAlCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgB0EBayIHIAZKDQALIAYhBwsCQCAKIAt9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABBHIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAdBAWshByAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQYgB0EATARAIAVBQGsgBCAJQv///////z+DIAdB+ABqIAZyrUIwhoRCAEKAgICAgIDAwz8QRyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuqDwIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAMhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAMQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3kgBkEGdK18pyIGQQ9rEGNBECAGayEGIAUpA8gCIQogBSkDwAIhAQsgAkL///////8/Vg0AIAVBsAJqIAMgCyADIAsgC1AiBxt5IAdBBnStfKciB0EPaxBjIAYgB2pBEGshBiAFKQO4AiELIAUpA7ACIQMLIAVBoAJqIAtCgICAgICAwACEIhJCD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAEFwgBUGQAmpCACAFKQOoAn1CACAEQgAQXCAFQYACaiAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABBcIAVB8AFqIARCAEIAIAUpA4gCfUIAEFwgBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQXCAFQdABaiAEQgBCACAFKQPoAX1CABBcIAVBwAFqIAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAEFwgBUGwAWogBEIAQgAgBSkDyAF9QgAQXCAFQaABaiACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABBcIAVBkAFqIANCD4ZCACACQgAQXCAFQfAAaiACQgBCACAFKQOoASAFKQOgASIMIAUpA5gBfCIEIAxUrXwgBEIBVq18fUIAEFwgBUGAAWpCASAEfUIAIAJCABBcIAYgCSAIa2ohBgJ/IAUpA3AiE0IBhiIOIAUpA4gBIg9CAYYgBSkDgAFCP4iEfCIQQufsAH0iFEIgiCICIApCgICAgICAwACEIhVCAYYiFkIgiCIEfiIRIAFCAYYiDEIgiCILIBAgFFatIA4gEFatIAUpA3hCAYYgE0I/iIQgD0I/iHx8fEIBfSITQiCIIhB+fCIOIBFUrSAOIA4gE0L/////D4MiEyABQj+IIhcgCkIBhoRC/////w+DIgp+fCIOVq18IAQgEH58IAQgE34iESAKIBB+fCIPIBFUrUIghiAPQiCIhHwgDiAOIA9CIIZ8Ig5WrXwgDiAOIBRC/////w+DIhQgCn4iESACIAt+fCIPIBFUrSAPIA8gEyAMQv7///8PgyIRfnwiD1atfHwiDlatfCAOIAQgFH4iGCAQIBF+fCIEIAIgCn58IgogCyATfnwiEEIgiCAKIBBWrSAEIBhUrSAEIApWrXx8QiCGhHwiBCAOVK18IAQgDyACIBF+IgIgCyAUfnwiC0IgiCACIAtWrUIghoR8IgIgD1StIAIgEEIghnwgAlStfHwiAiAEVK18IgRC/////////wBYBEAgFiAXhCEVIAVB0ABqIAIgBCADIBIQXCABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQpCACABfSELIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhBcIAFCMIYgBSkDaH0gBSkDYCIMQgBSrX0hCkIAIAx9IQsgASEMIAZB//8AagsiBkH//wFOBEAgDUKAgICAgIDA//8AhCENQgAhAQwBCwJ+IAZBAEoEQCAKQgGGIAtCP4iEIQogBEL///////8/gyAGrUIwhoQhDCALQgGGDAELIAZBj39MBEBCACEBDAILIAVBQGsgAiAEQQEgBmsQpgEgBUEwaiAMIBUgBkHwAGoQYyAFQSBqIAMgEiAFKQNAIgIgBSkDSCIMEFwgBSkDOCAFKQMoQgGGIAUpAyAiAUI/iIR9IAUpAzAiBCABQgGGIgFUrX0hCiAEIAF9CyEEIAVBEGogAyASQgNCABBcIAUgAyASQgVCABBcIAwgAiACIAMgAkIBgyIBIAR8IgNUIAogASADVq18IgEgElYgASASURutfCICVq18IgQgAiACIARCgICAgICAwP//AFQgAyAFKQMQViABIAUpAxgiBFYgASAEURtxrXwiAlatfCIEIAIgBEKAgICAgIDA//8AVCADIAUpAwBWIAEgBSkDCCIDViABIANRG3GtfCIBIAJUrXwgDYQhDQsgACABNwMAIAAgDTcDCCAFQdACaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABBHIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsgBEEQaiABIAJCAEKAgICAgICA//8AEEdB/f8CIAMgA0H9/wJOG0H+/wFrIQMgBCkDGCECIAQpAxAhAQwBCyADQYGAf0oNACAEQUBrIAEgAkIAQoCAgICAgIA5EEcgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3/AGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5EEdB6IF9IAMgA0HogX1MG0Ga/gFqIQMgBCkDOCECIAQpAzAhAQsgBCABIAJCACADQf//AGqtQjCGEEcgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzUAIAAgATcDACAAIAJC////////P4MgBEIwiKdBgIACcSACQjCIp0H//wFxcq1CMIaENwMIC8ABAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AUnENACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEAgASACUiABIAJTcQ0BIAAgASAChYRCAFIPCyAAQgBSIAEgAlUgASACURsNACAAIAEgAoWEQgBSIQMLIAMLSwECfyAAKAIAIgEEQAJ/IAEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEBAAwBCyACKAIAC0F/RwRAIAAoAgBFDwsgAEEANgIAC0EBC0sBAn8gACgCACIBBEACfyABKAIMIgIgASgCEEYEQCABIAEoAgAoAiQRAQAMAQsgAi0AAAtBf0cEQCAAKAIARQ8LIABBADYCAAtBAQtxAQJ/IAFBCEsEQEEEIAEgAUEETRshAiAAQQEgABshAwNAAkAjAEEQayIAJAAgAEEANgIMIABBDGogAiADEPUDGiAAKAIMIQEgAEEQaiQAIAENAEH02Sv+EAIAIgBFDQAgABEJAAwBCwsgAQ8LIAAQMwsJACABQQEQ4AMLEwAgAUEISwRAIAAQMQ8LIAAQMQuBAQECfyMAQRBrIgQkACMAQSBrIgMkACADQRhqIAAgARCrAiADQRBqIAMoAhggAygCHCACEKoCIAMgACADKAIQIABrajYCDCADIAIgAygCFCACa2o2AgggBCADKAIMNgIIIAQgAygCCDYCDCADQSBqJAAgBCgCDCEAIARBEGokACAACwkAIAAQrQIQMQv9AQIEfwF+IwBBIGsiAyQAAkAgASkDIEIBUg0AIAEpAyhCAVINACACKQMYQgFSDQAgAikDIEIBUg0AIAIpAyhCAVINACACKAIAQQxHDQACfwJAIAEoAkgNACACKAJIDQBBAAwBC0EBCyEGIAEpAxAhByADIAIpAxA3AxggAyAHNwMQIABBAEECIANBEGpBABA8IgRBIzYCQCAGBEAgACAE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IAAoAjggAEFAaygCACAAKAIEERAADBgLIAFBgICAgAFGDRAgAUGAgICQAUcNFyAAKAIQIAAoAhggACgCICAAKAIoIAAoAjAgACgCOCAAQUBrKAIAIAAoAkggACgCUCAAKAIEESoADBcLIAFB/////wFMBEAgAUGAgICgAUYNESABQYCAgLABRw0XIAAoAhAgACgCGCAAKAIgIAAoAiggACgCMCAAKAI4IABBQGsoAgAgACgCSCAAKAJQIAAoAlggACgCYCAAKAIEEUUADBcLIAFBgICAgAJGDREgAUGAgICQAkcNFiAAIAAoAhAgACgCBBEBADYCsAEMFgsCQCABQf///88CTARAIAFB////twJMBEAgAUGAgICgAkYNFCABQYCAgLACRw0YIAAgACgCECAAKAIYIAAoAiAgACgCBBEDADYCsAEMGAsgAUGAgIC4AkYNASABQYCAgMACRw0XIAAgACgCECAAKAIYIAAoAiAgACgCKCAAKAIEEQYANgKwAQwXCyABQf///+8CTARAIAFBgICA0AJGDRQgAUGAgIDgAkcNFyAAIAAoAhAgACgCGCAAKAIgIAAoAiggACgCMCAAKAI4IAAoAgQRCAA2ArABDBcLIAFBgICA8AJGDRQgAUGAgICAA0YNFSABQYCAgJADRw0WIAAgACgCECAAKAIYIAAoAiAgACgCKCAAKAIwIAAoAjggAEFAaygCACAAKAJIIAAoAlAgACgCBBErADYCsAEMFgsgACAAKAIQIAAoAhggACgCIBAkNgKwAQwVCyAAIAAoAgQgACgCECAAQRhqECM5A7ABDBQLIAAoAhAgACgCBBEAAAwTCyAAKgIQIAAoAgQRRgAMEgsgACgCECAAKAIYIAAoAgQRAgAMEQsgACgCECAAKgIYIAAoAgQRRwAMEAsgACoCECAAKgIYIAAoAgQRSAAMDwsgACgCECAAKAIYIAAqAiAgACgCBBFJAAwOCyAAKAIQIAAqAhggACoCICAAKAIEEUoADA0LIAAqAhAgACoCGCAAKgIgIAAoAgQRSwAMDAsgAUGggIDAAEcNCyAAKAIQIAAoAhggACoCICAAKAIoIAAoAgQRTAAMCwsgACgCECAAKgIYIAAqAiAgACoCKCAAKAIEEU0ADAoLIAAqAhAgACoCGCAAKgIgIAAqAiggACgCBBFOAAwJCyAAKAIQ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BwsgBw0AC0EAIBNFDQAaIAMoAgAiAEEBOgAIIAAgASAFajYCBCAAIAE2AgBBAQshASAGQThqEJUEAkAgBigCPCIHIAYoAkAiAEYNAANAIAcoAgAQMSAHQQRqIgcgAEcNAAsgBigCQCIAIAYoAjwiAkYNACAGIAAgAiAAa0EDakF8cWo2AkALIAYoAjgiAARAIAAQMQsgBkHQAGokACABDwsQywIACxDKAgALewACQCABIAJGDQAgAUEBaiACRg0AIAEtAABB3ABHDQACQCABLAABIgJBJGsOOwABAQEBAQABAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAQsgACACEFUgAUECaiEBCyABC8YDAQV/AkACQAJAIAAoAgQgACgCACIEa0EYbSIFQQFqIgJBq9Wq1QBJBEBBqtWq1QAgACgCCCAEa0EYbSIEQQF0IgYgAiACIAZJGyAEQdWq1SpPGyIEBEAgBEGr1arVAE8NAiAEQRhsEDMhAwsgBUEYbCADaiICIAEpAgA3AgAgAiABKAIINgIIIAFCADcCACABQQA2AgggAiABKAIUNgIUIAIgASkCDDcCDCABQgA3AgwgAUEANgIUIAMgBEEYbGohAyACQRhqIQQgACgCBCIBIAAoAgAiBUYNAgNAIAJBGGsiAiABQRhrIgEpAgA3AgAgAiABKAIINgIIIAFCADcCACABQQA2AgggAiABKAIUNgIUIAIgASkCDDcCDCABQgA3AgwgAUEANgIUIAEgBUcNAAsgACADNgIIIAAoAgQhAyAAIAQ2AgQgACgCACEBIAAgAjYCACABIANGDQMDQCADQQFrLAAAQQBIBEAgA0EMaygCABAxCyADQRhrIQAgA0ENaywAAEEASARAIAAoAgAQMQsgACIDIAFHDQALDAMLEEQACxBbAAsgACADNgIIIAAgBDYCBCAAIAI2AgALIAEEQCABEDELCxMAQQwQAkEBEG5BkIUDQScQAQALigYBA38CQCABIAJHBEACQAJAAkACQAJAAkACQAJAAkAgASwAACIFQcQAaw40AwgICAgICAgICAgICAgIBQgICAcICAgICAgICAgIAQgCCAgICAgICAgICAgICAgECAgIBgALIAUNByADIAUQVgwJCyADQQgQVgwICyAEIAQoAlBB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ADcCACAAQQA6AOIRIABB5MIBOwHgESAAQQI6AOsRIABB2BFqQYEbLwAAOwAAIABBBjoA3xEgAEEaNgLQESAAQQA6ANoRIABB/RooAAA2AtQRIABBkB5qIABB6BFqKAIANgIAIAAgACkD4BE3A4geIABBlB5qQRo2AgAgAEGgHmogAEHcEWooAgA2AgAgAEGYHmogACkC1BE3AwAgAEEAOgDCESAAQejqATsBwBEgAEECOgDLESAAQbwRaiICQeEXLQAAOgAAIABBCToAvxEgAEEbNgKwESAAQQA6AL0RIABB2RcpAAAiEzcCtBEgAEGsHmogAEHIEWooAgA2AgAgACAAKQPAETcCpB4gAEGwHmpBGzYCACAAQbweaiACKAIANgIAIABBtB5qIBM3AgAgAEEAOgCiESAAQfTCATsBoBEgAEECOgCrESAAQZgRakGPGS0AADoAACAAQQU6AJ8RIABBHDYCkBEgAEEAOgCZESAAQYsZKAAANgKUESAAQcgeaiAAQagRaigCADYCACAAIAApA6ARNwPAHiAAQcweakEcNgIAIABB2B5qIABBnBFqKAIANgIAIABB0B5qIAApApQRNwMAIABBADoAghEgAEHu3gE7AYARIABBAjoAixEgAEH8EGoiAkG5GC0AADoAACAAQQk6AP8QIABBHTYC8BAgAEEAOgD9ECAAQbEYKQAAIhM3AvQQIABB5B5qIABBiBFqKAIANgIAIAAgACkDgBE3AtweIABB6B5qQR02AgAgAEH0HmogAigCADYCACAAQeweaiATNwIAIABBADoA4hAgAEH00AE7AeAQIABBAjoA6xAgAEHYEGpBADoAACAAQQQ6AN8QIABBHjYC0BAgAEH00IXLBjYC1BAgAEGAH2ogAEHoEGooAgA2AgAgACAAKQPgEDcD+B4gAEGEH2pBHjYCACAAQZAfaiAAQdwQaigCADYCACAAQYgfaiAAKQLUEDcDACAAQQA6AMIQIABB9eQBOwHAECAAQQI6AMsQIABBuBBqQQA6AAAgAEEEOgC/ECAAQR82ArAQIABB9eSRqwc2ArQQIABBnB9qIABByBBqKAIANgIAIAAgACkDwBA3ApQfIABBoB9qQR82AgAgAEGsH2ogAEG8EGooAgA2AgAgAEGkH2ogACkCtBA3AgAgAEEAOgCiECAAQejkATsBoBAgAEECOgCrECAAQZwQaiICQQA6AAAgAEEIOgCfECAAQSA2ApAQIABC4+S9i8au2rDuADcClBAgAEG4H2ogAEGoEGooAgA2AgAgACAAKQOgEDcDsB8gAEG8H2pBIDYCACAAQcgfaiACKAIANgIAIABBwB9qQuPkvYvGrtqw7gA3AwAgAEEAOgCCECAAQeLOATsBgBAgAEECOgCLECAAQfwPaiICQesXLQAAOgAAIABBCToA/w8gAEEhNgLwDyAAQQA6AP0PIABB4xcpAAAiEzcC9A8gAEHUH2ogAEGIEGooAgA2AgAgACAAKQOAEDcCzB8gAEHYH2pBITYCACAAQeQfaiACKAIANgIAIABB3B9qIBM3AgAgAEEAOgDiDyAAQezoATsB4A8gAEECOgDrDyAAQdwPaiICQZwYLwAAOwEAIABBCjoA3w8gAEEiNgLQDyAAQQA6AN4PIABBlBgpAAAiEzcC1A8gAEHwH2ogAEHoD2ooAgA2AgAgACAAKQPgDzcD6B8gAEH0H2pBIjYCACAAQYAgaiACKAIANgIAIABB+B9qIBM3AwAgAEEAOgDCDyAAQezCATsBwA8gAEECOgDLDyAAQbgPakGVFi0AADoAACAAQQU6AL8PIABBIzYCsA8gAEEAOgC5DyAAQZEWKAAANgK0DyAAQYwgaiAAQcgPaigCADYCACAAIAApA8APNwKEICAAQZAgakEjNgIAIABBnCBqIABBvA9qKAIANgIAIABBlCBqIAApArQPNwIAIABBADoAog8gAEHt0gE7AaAPIABBAjoAqw8gAEGYD2pBhRotAAA6AAAgAEEFOgCfDyAAQSQ2ApAPIABBADoAmQ8gAEGBGigAADYClA8gAEGoIGogAEGoD2ooAgA2AgAgACAAKQOgDzcDoCAgAEGsIGpBJDYCACAAQbggaiAAQZwPaigCADYCACAAQbAgaiAAKQKUDzcDACAAQQA6AIIPIABB7dgBOwGADyAAQQI6AIsPIABB/A5qIgJB3BgtAAA6AAAgAEEJOgD/DiAAQSU2AvAOIABBADoA/Q4gAEHUGCkAACITNwL0DiAAQcQgaiAAQYgPaigCADYCACAAIAApA4APNwK8ICAAQcggakElNgIAIABB1CBqIAIoAgA2AgAgAEHMIGogEzcCACAAQQA6AOIOIABB4/IBOwHgDiAAQQI6AOsOIABB2A5qQesaLQAAOgAAIABBBToA3w4gAEEmNgLQDiAAQQA6ANkOIABB5xooAAA2AtQOIABB4CBqIABB6A5qKAIANgIAIAAgACkD4A43A9ggIABB5CBqQSY2AgAgAEHwIGogAEHcDmooAgA2AgAgAEHoIGogACkC1A43AwAgAEEAOgDCDiAAQfPWATsBwA4gAEECOgDLDiAAQbgOakH8GS8AADsAACAAQQY6AL8OIABBJzYCsA4gAEEAOgC6DiAAQfgZKAAANgK0DiAAQfwgaiAAQcgOaigCADYCACAAIAApA8AONwL0ICAAQYAhakEnNgIAIABBjCFqIABBvA5qKAIANgIAIABBhCFqIAApArQONwIAIABBADoAog4gAEH0ygE7AaAOIABBAjoAqw4gAEGYDmpBwAovAAA7AAAgAEEGOgCfDiAAQSg2ApAOIABBADoAmg4gAEG8CigAADYClA4gAEGYIWogAEGoDmooAgA2AgAgACAAKQOgDjcDkCEgAEGcIWpBKDYCACAAQaghaiAAQZwOaigCADYCACAAQaAhaiAAKQKUDjcDACAAQQA6AIIOIABB5sIBOwGADiAAQQI6AIsOIABBBzoA/w0gAEEpNgLwDSAAQQA6APsNIABByRcoAAA2APcNIABBxhcoAAA2AvQNIABBtCFqIABBiA5qKAIANgIAIAAgACkDgA43AqwhIABBuCFqQSk2AgAgAEHEIWogAEH8DWooAgA2AgAgAEG8IWogACkC9A03AgAgAEEAOgDiDSAAQezsATsB4A0gAEECOgDrDSAAQQc6AN8NIABBKjYC0A0gAEEAOgDbDSAAQa4XKAAANgDXDSAAQasXKAAANgLUDSAAQdAhaiAAQegNaigCADYCACAAIAApA+ANNwPIISAAQdQhakEqNgIAIABB4CFqIABB3A1qKAIANgIAIABB2CFqIAApAtQNNwMAIABBADoAwg0gAEHi3AE7AcANIABBAjoAyw0gAEEHOgC/DSAAQSs2ArANIABBADoAuw0gAEGwGigAADYAtw0gAEGtGigAADYCtA0gAEHsIWogAEHIDWooAgA2AgAgACAAKQPADTcC5CEgAEHwIWpBKzYCACAAQfwhaiAAQbwNaigCADYCACAAQfQhaiAAKQK0DTcCACAAQQA6AKINIABB8+QBOwGgDSAAQQI6AKsNIABBBzoAnw0gAEEsNgKQDSAAQQA6AJsNIABBvhgoAAA2AJcNIABBuxgoAAA2ApQNIABBiCJqIABBqA1qKAIANgIAIAAgACkDoA03A4AiIABBjCJqQSw2AgAgAEGYImogAEGcDWooAgA2AgAgAEGQImogACkClA03AwAgAEEAOgCCDSAAQeH0ATsBgA0gAEECOgCLDUEQEDMiCUEAOgALIAlBkhooAAA2AAcgCUGLGikAADcAACAAQagiakEtNgIAIABBpCJqIABBiA1qKAIANgIAIAAgACkDgA03ApwiIABBrCJqIAlBCxBtIABBADoA8gwgAEHz2AE7AfAMIABBAjoA+wwgAEHsDGoiAkGSGC0AADoAACAAQcQiakEuNgIAIABByCJqQYoYKQAAIhM3AwAgAEHAImogAEH4DGooAgA2AgAgAEEJOgDvDCAAQQA6AO0MIABB0CJqIAIoAgA2AgAgAEEuNgLgDCAAIBM3AuQMIAAgACkD8Aw3A7giIABBADoA0gwgAEHr3AE7AdAMIABBAjoA2wwgAEEHOgDPDCAAQS82AsAMIABBADoAywwgAEG4JSgAADYAxwwgAEG1JSgAADYCxAwgAEHcImogAEHYDGooAgA2AgAgACAAKQPQDDcC1CIgAEHgImpBLzYCACAAQewiaiAAQcwMaigCADYCACAAQeQiaiAAKQLEDDcCACAAQQA6ALIMIABB5egBOwGwDCAAQQI6ALsMIABBrAxqIgJBADoAACAAQQg6AK8MIABBMDYCoAwgAELl5tH75q3asO4ANwKkDCAAQfgiaiAAQbgMaigCADYCACAAIAApA7AMNwPwIiAAQfwiakEwNgIAIABBiCNqIAIoAgA2AgAgAEGAI2pC5ebR++at2rDuADcDACAAQQA6AJIMIABB7dYBOwGQDCAAQQI6AJsMIABBjAxqIgJB/RcvAAA7AQAgAEEKOgCPDCAAQTE2AoAMIABBADoAjgwgAEH1FykAACITNwKEDCAAQZQjaiAAQZgMaigCADYCACAAIAApA5AMNwKMIyAAQZgjakExNgIAIABBpCNqIAIoAgA2AgAgAEGcI2ogEzcCACAAQQA6APILIABB4uQBOwHwCyAAQQI6APsLIABB6AtqQbsVLwAAOwAAIABBBjoA7wsgAEEyNgLgCyAAQQA6AOoLIABBtxUoAAA2AuQLIABBsCNqIABB+AtqKAIANgIAIAAgACkD8As3A6gjIABBtCNqQTI2AgAgAEHAI2ogAEHsC2ooAgA2AgAgAEG4I2ogACkC5As3AwAgAEEAOgDSCyAAQeXqATsB0AsgAEECOgDbCyAAQcgLakHiHS8AADsAACAAQQY6AM8LIABBMzYCwAsgAEEAOgDKCyAAQd4dKAAANgLECyAAQcwjaiAAQdgLaigCADYCACAAIAApA9ALNwLEIyAAQdAjakEzNgIAIABB3CNqIABBzAtqKAIANgIAIABB1CNqIAApAsQLNwIAIABBADoAsgsgAEHp5gE7AbALIABBAjoAuwsgAEGsC2oiAkGEJC0AADoAACAAQQk6AK8LIABBNDYCoAsgAEEAOgCtCyAAQfwjKQAAIhM3AqQLIABB6CNqIABBuAtqKAIANgIAIAAgACkDsAs3A+AjIABB7CNqQTQ2AgAgAEH4I2ogAigCADYCACAAQfAjaiATNwMAIABBADoAkgsgAEHo8gE7AZALIABBAjoAmwsgAEGMC2oiAkEAOgAAIABBCDoAjwsgAEE1NgKACyAAQuHktavmrdqw7gA3AoQLIABBhCRqIABBmAtqKAIANgIAIAAgACkDkAs3AvwjIABBiCRqQTU2AgAgAEGUJGogAigCADYCACAAQYwkakLh5LWr5q3asO4ANwIAIABBADoA8gogAEHuygE7AfAKIABBAjoA+wogAEHoCmpBoxovAAA7AAAgAEEGOgDvCiAAQTY2AuAKIABBADoA6gogAEGfGigAADYC5AogAEGgJGogAEH4CmooAgA2AgAgACAAKQPwCjcDmCQgAEGkJGpBNjYCACAAQbAkaiAAQewKaigCADYCACAAQagkaiAAKQLkCjcDACAAQQA6ANIKIABB7dwBOwHQCiAAQQI6ANsKIABBzApqIgJBpxgtAAA6AAAgAEEJOgDPCiAAQTc2AsAKIABBADoAzQogAEGfGCkAACITNwLECiAAQbwkaiAAQdgKaigCADYCACAAIAApA9AKNwK0JCAAQcAkakE3NgIAIABBzCRqIAIoAgA2AgAgAEHEJGogEzcCACAAQQA6ALIKIABB4uYBOwGwCiAAQQI6ALsKIABBBzoArwogAEE4NgKgCiAAQQA6AKsKIABB8BcoAAA2AKcKIABB7RcoAAA2AqQKIABB2CRqIABBuApqKAIANgIAIAAgACkDsAo3A9AkIABB3CRqQTg2AgAgAEHoJGogAEGsCmooAgA2AgAgAEHgJGogACkCpAo3AwAgAEEAOgCSCiAAQevWATsBkAogAEECOgCbCiAAQYgKakHNGy8AADsAACAAQQY6AI8KIABBOTYCgAogAEEAOgCKCiAAQckbKAAANgKECiAAQfQkaiAAQZgKaigCADYCACAAIAApA5AKNwLsJCAAQfgkakE5NgIAIABBhCVqIABBjApqKAIANgIAIABB/CRqIAApAoQKNwIAIABBADoA8gkgAEHz4gE7AfAJIABBAjoA+wkgAEHsCWoiAkEAOgAAIABBCDoA7wkgAEE6NgLgCSAAQuHYiYvmrdqw7gA3AuQJIABBkCVqIABB+AlqKAIANgIAIAAgACkD8Ak3A4glIABBlCVqQTo2AgAgAEGgJWogAigCADYCACAAQZglakLh2ImL5q3asO4ANwMAIABBADoA0gkgAEHz7gE7AdAJIABBAjoA2wkgAEEHOgDPCSAAQTs2AsAJIABBADoAywkgAEGaGigAADYAxwkgAEGXGigAADYCxAkgAEGsJWogAEHYCWooAgA2AgAgACAAKQPQCTcCpCUgAEGwJWpBOzYCACAAQbwlaiAAQcwJaigCADYCACAAQbQlaiAAKQLECTcCACAAQQA6ALIJIABB59gBOwGwCSAAQQI6ALsJIABBrAlqIgJBADoAACAAQQg6AK8JIABBPDYCoAkgAELnwrHLtqzasO4ANwKkCSAAQcglaiAAQbgJaigCADYCACAAIAApA7AJNwPAJSAAQcwlakE8NgIAIABB2CVqIAIoAgA2AgAgAEHQJWpC58Kxy7as2rDuADcDACAAQQA6AJIJIABB7eQBOwGQCSAAQQI6AJsJIABBBzoAjwkgAEE9NgKACSAAQQA6AIsJIABBuBooAAA2AIcJIABBtRooAAA2AoQJIABB5CVqIABBmAlqKAIANgIAIAAgACkDkAk3AtwlIABB6CVqQT02AgAgAEH0JWogAEGMCWooAgA2AgAgAEHsJWogACkChAk3AgAgAEEAOgDyCCAAQfDCATsB8AggAEECOgD7CCAAQQc6AO8IIABBPjYC4AggAEEAOgDrCCAAQc0aKAAANgDnCCAAQcoaKAAANgLkCCAAQYAmaiAAQfgIaigCADYCACAAIAApA/AINwP4JSAAQYQmakE+NgIAIABBkCZqIABB7AhqKAIANgIAIABBiCZqIAApAuQINwMAIABBADoA0gggAEHz0gE7AdAIIABBAjoA2wggAEEHOgDPCCAAQT82AsAIIABBADoAywggAEGiJSgAADYAxwggAEGfJSgAADYCxAggAEGcJmogAEHYCGooAgA2AgAgACAAKQPQCDcClCYgAEGgJmpBPzYCACAAQawmaiAAQcwIaigCADYCACAAQaQmaiAAKQLECDcCACAAQQA6ALIIIABB69oBOwGwCCAAQQI6ALsIIABBqAhqQdETLQAAOgAAIABBBToArwggAEHAADYCoAggAEEAOgCpCCAAQc0TKAAANgKkCCAAQbgmaiAAQbgIaigCADYCACAAIAApA7AINwOwJiAAQbwmakHAADYCACAAQcgmaiAAQawIaigCADYCACAAQcAmaiAAKQKkCDcDACAAQQA6AJIIIABB89wBOwGQCCAAQQI6AJsIIABBiAhqQZclLQAAOgAAIABBBToAjwggAEHBADYCgAggAEEAOgCJCCAAQZMlKAAANgKECCAAQdQmaiAAQZgIaigCADYCACAAIAApA5AINwLMJiAAQdgmakHBADYCACAAQeQmaiAAQYwIaigCADYCACAAQdwmaiAAKQKECDcCACAAQQA6APIHIABB+d4BOwHwByAAQQI6APsHIABBwSUvAAA7AOgHIABBBjoA7wcgAEHCADYC4AcgAEEAOgDqByAAQb0lKAAANgLkByAAQfAmaiAAKAL4BzYCACAAIAApA/AHNwPoJiAAQfQmakHCADYCACAAQYAnaiAAKALsBzYCACAAQfgmaiAAKQLkBzcDACAAQQA6ANIHIABB894BOwHQByAAQQI6ANsHIABBqhovAAA7AMgHIABBBjoAzwcgAEHDADYCwAcgAEEAOgDKByAAQaYaKAAANgLEByAAQYwnaiAAKALYBzYCACAAIAApA9AHNwKEJyAAQZAnakHDADYCACAAQZwnaiAAKALMBzYCACAAQZQnaiAAKQLEBzcCACAAQQA6ALIHIABB4cwBOwGwByAAQQI6ALsHIABBlBAtAAA6AKwHIABBCToArwcgAEHEADYCoAcgAEEAOgCtByAAQYwQKQAAIhM3AqQHIABBqCdqIAAoArgHNgIAIAAgACkDsAc3A6AnIABBrCdqQcQA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4t4BOwHQAiAAQQI6ANsCIABBBzoAzwIgAEHYADYCwAIgAEEAOgDLAiAAQZMXKAAANgDHAiAAQZAXKAAANgLEAiAAQdgraiAAKALYAjYCACAAIAApA9ACNwPQKyAAQdwrakHYADYCACAAQegraiAAKALMAjYCACAAQeAraiAAKQLEAjcDACAAQQA6ALICIABB9NgBOwGwAiAAQQI6ALsCIABBBzoArwIgAEHZADYCoAIgAEEAOgCrAiAAQfAbKAAANgCnAiAAQe0bKAAANgKkAiAAQfQraiAAKAK4AjYCACAAIAApA7ACNwLsKyAAQfgrakHZADYCACAAQYQsaiAAKAKsAjYCACAAQfwraiAAKQKkAjcCACAAQQA6AJICIABB7c4BOwGQAiAAQQI6AJsCIABBADoAjAIgAEEIOgCPAiAAQdoANgKAAiAAQu3CsYv2rNi5+QA3AoQCIABBkCxqIAAoApgCNgIAIAAgACkDkAI3A4gsIABBlCxqQdoANgIAIABBoCxqIAAoAowCNgIAIABBmCxqQu3CsYv2rNi5+QA3AwAgAEEAOgDyASAAQeHmATsB8AEgAEECOgD7ASAAQQA6AOwBIABBCDoA7wEgAEHbADYC4AEgAELh5s2L1q3ZueUANwLkASAAQawsaiAAKAL4ATYCACAAIAApA/ABNwKkLCAAQbAsakHbADYCACAAQbwsaiAAKALsATYCACAAQbQsakLh5s2L1q3ZueUANwIAIABBADoA0gEgAEH06AE7AdABIABBAjoA2wEgAEGCFC0AADoAyAEgAEEFOgDPASAAQdwANgLAASAAQQA6AMkBIABB/hMoAAA2AsQBIABByCxqIAAoAtgBNgIAIAAgACkD0AE3A8AsIABBzCxqQdwANgIAIABB2CxqIAAoAswBNgIAIABB0CxqIAApAsQBNwMAIABBAzoAuwEgAEEAOgCzASAAQbIKLQAAOgCyASAAQbAKLwAAOwGwASAAQQA6AKwBIABBCDoArwEgAEHdADYCoAEgAELowt2Llq3asO4ANwKkASAAQeQsaiAAKAK4ATYCACAAIAApA7ABNwLcLCAAQegsakHdADYCACAAQfQsaiAAKAKsATYCACAAQewsakLowt2Llq3asO4ANwIAIABBADoAkgEgAEHs3AE7AZABIABBAjoAmwEgAEEHOgCPASAAQd4ANgKAASAAQQA6AIsBIABBqiUoAAA2AIcBIABBpyUoAAA2AoQBIABBgC1qIAAoApgBNgIAIAAgACkDkAE3A/gsIABBhC1qQd4ANgIAIABBkC1qIAAoAowBNgIAIABBiC1qIAApAoQBNwMAIABBADoAciAAQejCATsBcCAAQQI6AHsgAEGRJS0AADoAaCAAQQU6AG8gAEHfADYCYCAAQQA6AGkgAEGNJSgAADYCZCAAQZwtaiAAKAJ4NgIAIAAgACkDcDcClC0gAEGgLWpB3wA2AgAgAEGsLWogACgCbDYCACAAQaQtaiAAKQJkNwIAIABBADoAUiAAQeLCATsBUCAAQQI6AFsgAEEHOgBPIABB4AA2AkAgAEEAOgBLIABBvBMoAAA2AEcgAEG5EygAADYCRCAAQbgtaiAAKAJYNgIAIAAgACkDUDcDsC0gAEG8LWpB4AA2AgAgAEHILWogACgCTDYCACAAQcAtaiAAKQJENwMAIABBADoAMiAAQeruATsBMCAAQQI6ADsgAEEAOgAsIABBCDoALyAAQeEANgIgIABC6sLZi+at2bnlADcCJCAAQdQtaiAAKAI4NgIAIAAgACkDMDcCzC0gAEHYLWpB4QA2AgAgAEHkLWogACgCLDYCACAAQdwtakLqwtmL5q3ZueUANwIAIABBADoAEiAAQfPqATsBECAAQQI6ABsgAEGpHy0AADoADCAAQQk6AA8gAEHiADYCACAAQQA6AA0gAEGhHykAACITNwIEIABB8C1qIAAoAhg2AgAgACAAKQMQNwPoLSAAQfQtakHiADYCACAAQYAuaiAAKAIMNgIAIABB+C1qIBM3AwBByLArQgA3AgBBxLArQciwKzYCAANAIwBBEGsiCCQAIABBiC5qIhECfyAAQbAYaiAEQRxsaiEFAkACQAJAQcSwKygCAEHIsCtGBEBByLArKAIAIQZByLArIQMMAQsCQEHIsCsoAgAiBkUEQEHIsCshAgNAIAIoAggiAygCACACRiEHIAMhAiAHDQALDAELIAYhAgNAIAIiAygCBCICDQALCwJAIAUoAgQgBS0ACyICIALAIg9BAEgiCxsiByADKAIUIAMtABsiAiACwEEASCINGyICIAIgB0sbIhAEQCADKAIQIANBEGogDRsgBSgCACAFIAsbIBAQRiILDQELIAIgB0kNAQwCCyALQQBODQELIAZFDQEgCCADNgIMIANBBGoMAgtByLArKAIAIgJFDQAgBSgCACAFIA9BAEgbIQ9ByLArIQYDQAJAAkACQAJAAkACQCACIgMoAhQgAi0AGyICIALAQQBIIg0bIgIgByACIAdJIhAbIgsEQCAPIAMoAhAgA0EQaiANGyINIAsQRiISRQRAIAIgB0sNAgwDCyASQQBODQIMAQsgAiAHTQ0CCyADIQYgAygCACICDQUMBAsgDSAPIAsQRiICDQELIBANAQwCCyACQQBODQELIANBBGohBiADKAIEIgINAQsLIAggAzYCDCAGDAELIAhByLArNgIMQciwKwsiBigCACICBH9BAAVBLBAzIgJBEGohAwJAIAUsAAtBAE4EQCADIAUpAgA3AgAgAyAFKAIINgIIDAELIAMgBSgCACAFKAIEEG0LIAIgBSgCDDYCHCACQSBqIQMCQCAFLAAbQQBOBEAgAyAFKQIQNwIAIAMgBSgCGDYCCAwBCyADIAUoAhAgBSgCFBBtCyACIAgoAgw2AgggAkIANwIAIAYgAjYCACACIQNBxLArKAIAKAIAIgUEQEHEsCsgBTYCACAGKAIAIQMLQciwKygCACADEJUBQcywK0HMsCsoAgBBAWo2AgBBAQs6AAQgESACNgIAIAhBEGokACAEQQFqIgRB4wBHDQALIABBhC5qIQQDQCAEQQFrLAAAQQBIBEAgBEEMaygCABAxCyAEQRxrIQIgBEERaywAAEEASARAIAIoAgAQMQsgAiIEIABBsBhqRw0ACyAALAAPQQBIBEAgACgCBBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAAvQQBIBEAgACgCJBAxCyAALAA7QQBIBEAgACgCMBAxCyAALABPQQBIBEAgACgCRBAxCyAALABbQQBIBEAgACgCUBAxCyAALABvQQBIBEAgACgCZBAxCyAALAB7QQBIBEAgACgCcBAxCyAALACPAUEASARAIAAoAoQBEDELIAAsAJsBQQBIBEAgACgCkAEQMQsgACwArwFBAEgEQCAAKAKkARAxCyAALAC7AUEASARAIAAoArABEDELIAAsAM8BQQBIBEAgACgCxAEQMQsgACwA2wFBAEgEQCAAKALQARAxCyAALADvAUEASARAIAAoAuQBEDELIAAsAPsBQQBIBEAgACgC8AEQMQsgACwAjwJBAEgEQCAAKAKEAhAxCyAALACbAkEASARAIAAoApACEDELIAAsAK8CQQBIBEAgACgCpAIQMQsgACwAuwJBAEgEQCAAKAKwAhAxCyAALADPAkEASARAIAAoAsQCEDELIAAsANsCQQBIBEAgACgC0AIQMQsgACwA7wJBAEgEQCAAKALkAhAxCyAALAD7AkEASARAIAAoAvACEDELIA4QMSAALACLA0EASARAIAAoAoADEDELIAAsAJ8DQQBIBEAgACgClAMQMQsgACwAqwNBAEgEQCAAKAKgAxAxCyAALAC/A0EASARAIAAoArQDEDELIAAsAMsDQQBIBEAgACgCwAMQMQsgACwA3wNBAEgEQCAAKALUAxAxCyAALADrA0EASARAIAAoAuADEDELIAAsAP8DQQBIBEAgACgC9AMQMQsgACwAiwRBAEgEQCAAKAKABBAxCyAALACfBEEASARAIAAoApQEEDELIAAsAKsEQQBIBEAgACgCoAQQMQsgChAxIAAsALsEQQBIBEAgACgCsAQQMQsgACwAzwRBAEgEQCAAKALEBBAxCyAALADbBEEASARAIAAoAtAEEDELIAAsAO8EQQBIBEAgACgC5AQQMQsgACwA+wRBAEgEQCAAKALwBBAxCyAALACPBUEASARAIAAoAoQFEDELIAAsAJsFQQBIBEAgACgCkAUQMQsgACwArwVBAEgEQCAAKAKkBRAxCyAALAC7BUEASARAIAAoArAFEDELIAAsAM8FQQBIBEAgACgCxAUQMQsgACwA2wVBAEgEQCAAKALQBRAxCyAALADvBUEASARAIAAoAuQFEDELIAAsAPsFQQBIBEAgACgC8AUQMQsgACwAjwZBAEgEQCAAKAKEBhAxCyAALACbBkEASARAIAAoApAGEDELIAAsAK8GQQBIBEAgACgCpAYQMQsgACwAuwZBAEgEQCAAKAKwBhAxCyAALADPBkEASARAIAAoAsQGEDELIAAsANsGQQBIBEAgACgC0AYQMQsgACwA7wZBAEgEQCAAKALkBhAxCyAALAD7BkEASARAIAAoAvAGEDELIAAsAI8HQQBIBEAgACgChAcQMQsgACwAmwdBAEgEQCAAKAKQBxAxCyAALACvB0EASARAIAAoAqQHEDELIAAsALsHQQBIBEAgACgCsAcQMQsgACwAzwdBAEgEQCAAKALEBxAxCyAALADbB0EASARAIAAoAtAHEDELIAAsAO8HQQBIBEAgACgC5AcQMQsgACwA+wdBAEgEQCAAKALwBxAxCyAALACPCEEASARAIAAoAoQIEDELIAAsAJsIQQBIBEAgACgCkAgQMQsgACwArwhBAEgEQCAAKAKkCBAxCyAALAC7CEEASARAIAAoArAIEDELIAAsAM8IQQBIBEAgACgCxAgQMQsgACwA2whBAEgEQCAAKALQCBAxCyAALADvCEEASARAIAAoAuQIEDELIAAsAPsIQQBIBEAgACgC8AgQMQsgACwAjwlBAEgEQCAAKAKECRAxCyAALACbCUEASARAIAAoApAJEDELIAAsAK8JQQBIBEAgACgCpAkQMQsgACwAuwlBAEgEQCAAKAKwCRAxCyAALADPCUEASARAIAAoAsQJEDELIAAsANsJQQBIBEAgACgC0AkQMQsgACwA7wlBAEgEQCAAKALkCRAxCyAALAD7CUEASARAIAAoAvAJEDELIAAsAI8KQQBIBEAgACgChAoQMQsgACwAmwpBAEgEQCAAKAKQChAxCyAALACvCkEASARAIAAoAqQKEDELIAAsALsKQQBIBEAgACgCsAoQMQsgACwAzwpBAEgEQCAAKALEChAxCyAALADbCkEASARAIAAoAtAKEDELIAAsAO8KQQBIBEAgACgC5AoQMQsgACwA+wpBAEgEQCAAKALwChAxCyAALACPC0EASARAIAAoAoQLEDELIAAsAJsLQQBIBEAgACgCkAsQMQsgACwArwtBAEgEQCAAKAKkCxAxCyAALAC7C0EASARAIAAoArALEDELIAAsAM8LQQBIBEAgACgCxAsQMQsgACwA2wtBAEgEQCAAKALQCxAxCyAALADvC0EASARAIAAoAuQLEDELIAAsAPsLQQBIBEAgACgC8AsQMQsgACwAjwxBAEgEQCAAKAKEDBAxCyAALACbDEEASARAIAAoApAMEDELIAAsAK8MQQBIBEAgACgCpAwQMQsgACwAuwxBAEgEQCAAKAKwDBAxCyAALADPDEEASARAIAAoAsQMEDELIAAsANsMQQBIBEAgACgC0AwQMQsgACwA7wxBAEgEQCAAKALkDBAxCyAALAD7DEEASARAIAAoAvAMEDELIAkQMSAALACLDUEASARAIAAoAoANEDELIAAsAJ8NQQBIBEAgACgClA0QMQsgACwAqw1BAEgEQCAAKAKgDRAxCyAALAC/DUEASARAIAAoArQNEDELIAAsAMsNQQBIBEAgACgCwA0QMQsgACwA3w1BAEgEQCAAKALUDRAxCyAALADrDUEASARAIAAoAuANEDELIAAsAP8NQQBIBEAgACgC9A0QMQsgACwAiw5BAEgEQCAAKAKADhAxCyAALACfDkEASARAIAAoApQOEDELIAAsAKsOQQBIBEAgACgCoA4QMQsgACwAvw5BAEgEQCAAKAK0DhAxCyAALADLDkEASARAIAAoAsAOEDELIAAsAN8OQQBIBEAgACgC1A4QMQsgACwA6w5BAEgEQCAAKALgDhAxCyAALAD/DkEASARAIAAoAvQOEDELIAAsAIsPQQBIBEAgACgCgA8QMQsgACwAnw9BAEgEQCAAKAKUDxAxCyAALACrD0EASARAIAAoAqAPEDELIAAsAL8PQQBIBEAgACgCtA8QMQsgACwAyw9BAEgEQCAAKALADxAxCyAALADfD0EASARAIAAoAtQPEDELIAAsAOsPQQBIBEAgACgC4A8QMQsgACwA/w9BAEgEQCAAKAL0DxAxCyAALACLEEEASARAIAAoAoAQEDELIAAsAJ8QQQBIBEAgACgClBAQMQsgACwAqxBBAEgEQCAAKAKgEBAxCyAALAC/EEEASARAIAAoArQQEDELIAAsAMsQQQBIBEAgACgCwBAQMQsgACwA3xBBAEgEQCAAKALUEBAxCyAALADrEEEASARAIAAoAuAQEDELIAAsAP8QQQBIBEAgACgC9BAQMQsgACwAixFBAEgEQCAAKAKAERAxCyAALACfEUEASARAIAAoApQREDELIAAsAKsRQQBIBEAgACgCoBEQMQsgACwAvxFBAEgEQCAAKAK0ERAxCyAALADLEUEASARAIAAoAsAREDELIAAsAN8RQQBIBEAgACgC1BEQMQsgACwA6xFBAEgEQCAAKALgERAxCyAALAD/EUEASARAIAAoAvQREDELIAAsAIsSQQBIBEAgACgCgBIQMQsgACwAnxJBAEgEQCAAKAKUEhAxCyAALACrEkEASARAIAAoAqASEDELIAAsAL8SQQBIBEAgACgCtBIQMQsgACwAyxJBAEgEQCAAKALAEhAxCyAALADfEkEASARAIAAoAtQSEDELIAAsAOsSQQBIBEAgACgC4BIQMQsgACwA/xJBAEgEQCAAKAL0EhAxCyAALACLE0EASARAIAAoAoATEDELIAAsAJ8TQQBIBEAgACgClBMQMQsgACwAqxNBAEgEQCAAKAKgExAxCyAALAC/E0EASARAIAAoArQTEDELIAAsAMsTQQBIBEAgACgCwBMQMQsgACwA3xNBAEgEQCAAKALUExAxCyAALADrE0EASARAIAAoAuATEDELIAAsAP8TQQBIBEAgACgC9BMQMQsgACwAixRBAEgEQCAAKAKAFBAxCyAALACfFEEASARAIAAoApQUEDELIAAsAKsUQQBIBEAgACgCoBQQMQsgACwAvxRBAEgEQCAAKAK0FBAxCyAALADLFEEASARAIAAoAsAUEDELIAAsAN8UQQBIBEAgACgC1BQQMQsgACwA6xRBAEgEQCAAKALgFBAxCyAALAD/FEEASARAIAAoAvQUEDELIAAsAIsVQQBIBEAgACgCgBUQMQsgACwAnxVBAEgEQCAAKAKUFRAxCyAALACrFUEASARAIAAoAqAVEDELIAAsAL8VQQBIBEAgACgCtBUQMQsgACwAyxVBAEgEQCAAKALAFRAxCyAALADfFUEASARAIAAoAtQVEDELIAAsAOsVQQBIBEAgACgC4BUQMQsgACwA/xVBAEgEQCAAKAL0FRAxCyAALACLFkEASARAIAAoAoAWEDELIAAsAJ8WQQBIBEAgACgClBYQMQsgACwAqxZBAEgEQCAAKAKgFhAxCyAALAC/FkEASARAIAAoArQWEDELIAAsAMsWQQBIBEAgACgCwBYQMQsgACwA3xZBAEgEQCAAKALUFhAxCyAALADrFkEASARAIAAoAuAWEDELIAAsAP8WQQBIBEAgACgC9BYQMQsgACwAixdBAEgEQCAAKAKAFxAxCyAALACfF0EASARAIAAoApQXEDELIAAsAKsXQQBIBEAgACgCoBcQMQsgACwAvxdBAEgEQCAAKAK0FxAxCyAALADLF0EASARAIAAoAsAXEDELIAAsAN8XQQBIBEAgACgC1BcQMQsgACwA6xdBAEgEQCAAKALgFxAxCyAALAD/F0EASARAIAAoAvQXEDELIAAsAIsYQQBIBEAgACgCgBgQMQsgACwAnxhBAEgEQCAAKAKUGBAxCyAALACrGEEASARAIAAoAqAYEDELIABBkC5qJAAgAUEFNgLk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ayIAJAACQEHIsSv+EgAAQQFxDQBByLErEFNFDQBBvLErQgA3AgBBxLErQQA2AgBByLErEFILAn9Bx7ErLAAAQQBIBEBBwLErQQA2AgBBvLErKAIADAELQcexK0EAOgAAQbyxKwtBADoAACAAQQAQOCAAIABB8s4AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEHNzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEAEDggACAAQdXPABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBvs8AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEGIzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEAEDggACAAQbrPABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBp88AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEGvzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEBEDggACAAQZrPABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBgM8AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELIABBABA4IAAgAEHFzwAQOSIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHuzgAQNiIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQbyxKyAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaxogACwAK0EASARAIAAoAiAQMQsgACwAG0EASARAIAAoAhAQMQsgACwAC0EASARAIAAoAgAQMQsgAEEAEDggACAAQfnOABA5IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe7OABA2IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBvLErIAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBrGiAALAArQQBIBEAgACgCIBAxCyAALAAbQQBIBEAgACgCEBAxCyAALAALQQBIBEAgACgCABAxCyAAQQAQOCAAIABBkM8AEDkiASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7s4AEDYiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEG8sSsgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGsaIAAsACtBAEgEQCAAKAIgEDELIAAsABtBAEgEQCAAKAIQEDELIAAsAAtBAEgEQCAAKAIAEDELQcexKywAACEBQbyxKygCACEEIABBMGokACAOQbyxKyAEIAFBAE4bNgLIASAOIAM2AsQBIA4gAjYCwAFBxtEAIA5BwAFqEJ0BELkCIA5BATYCtAEgDiAOKALkATYCsAEgDiAOKAKkAjYCuAEgDkHuHkHDISAOLQD0ARs2ArwBIA5Bwc4ANgKgASAOIA4oAtQBIA4oAtAB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EAAAABAAAAD9Tv0MAAAAAAAAAAAAAAAAAAAAACAEQQpq/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIIQQT9rQH9UP0M8P////D////w////8P////2uAf36Af3mAf0LAlAgAyAHIAJBBHb9ESACQQV2/RwBIAJBBnb9HAIgAkEHdv0cAyIKQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8AAAAPAAAA/U79UP0M8P////D////w////8P////2uAf36Af3mAf0LAhAgAyAHIAJBFHb9ESACQRV2/RwBIAJBFnb9HAIgAkEXdv0cA/0MEAAAABAAAAAQAAAAEAAAAP1O/QwAAAAAAAAAAAAAAAAAAAAAIARBDmr9XAAA/Q0QAQIDEQUGBxIJCgsTDQ4PIghBBP2tAf1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCYCADIAcgCv0MEAAAABAAAAAQAAAAEAAAAP1OIAj9DA8AAAAPAAAADwAAAA8AAAD9Tv1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCICADIAcgAkEYdv0RIAJBGXb9HAEgAkEadv0cAiACQRt2/RwD/QwQAAAAEAAAABAAAAAQAAAA/U79DAAAAAAAAAAAAAAAAAAAAAAgBEESav1cAAD9DRABAgMRBQYHEgkKCxMNDg8iCEEE/a0B/VD9DPD////w////8P////D////9rgH9+gH95gH9CwJwIAMgByAJQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8AAAAPAAAA/U79UP0M8P////D////w////8P////2uAf36Af3mAf0LAjAgBUEBaiIFIAZHDQALCwseAQF/QbCWAygCACIABEAgABDdAkGwlgNBADYCAAsL3wYBDn8jAEHwA2siACQAIABB6ANqIgYgAygCHCIHNgIAIAdBBGpBAf4eAgAaIAYQZiEKAn8gBS0AC0EHdgRAIAUoAgQMAQsgBS0AC0H/AHELBEACfyAFLQALQQd2BEAgBSgCAAwBCyAFCygCACAKQS0gCigCACgCLBEEAEYhCwsgAiALIABB6ANqIABB4ANqIABB3ANqIRMgAEHYA2ohECMAQRBrIgYkACAAQcgDaiICQgA3AgAgAkEANgIIIAZBEGok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AAAAACAGQQZq/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIEQQT9rQH9DPj////4////+P////j////9rgH9+gH95gH9CwJQIAIgAyAE/QwPAAAADwAAAA8AAAAPAAAA/U79DPj////4////+P////j////9rgH9+gH95gH9CwIQIAIgA/0MAAAAAAAAAAAAAAAAAAAAACAGQQpq/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIEQQT9rQH9DPj////4////+P////j////9rgH9+gH95gH9CwJgIAIgAyAE/QwPAAAADwAAAA8AAAAPAAAA/U79DPj////4////+P////j////9rgH9+gH95gH9CwIgIAIgA/0MAAAAAAAAAAAAAAAAAAAAACAGQQ5q/VwAAP0NEAECAxEFBgcSCQoLEw0ODyIEQQT9rQH9DPj////4////+P////j////9rgH9+gH95gH9CwJwIAIgAyAE/QwPAAAADwAAAA8AAAAPAAAA/U79DPj////4////+P////j////9rgH9+gH95gH9CwIwIAVBAWoiBSAHRw0ACwsL9QQBCH8CfyMAQdABayIAJAAgAEIlNwPIASAAQcgBakEBckH14gAgAigCBBDeASEGIAAgAEGgAWo2ApwBEEIhCAJ/IAYEQCACKAIIIQUgACAEOQMoIAAgBTYCICAAQaABakEeIAggAEHIAWogAEEgahBgDAELIAAgBDkDMCAAQaABakEeIAggAEHIAWogAEEwahBgCyEHIABBoQE2AlAgAEGQAWpBACAAQdAAahBOIQggAEGgAWoiCSEFAkAgB0EeTgRAEEIhBQJ/IAYEQCACKAIIIQcgACAEOQMIIAAgBzYCACAAQZwBaiAFIABByAFqIAAQiAEMAQsgACAEOQMQIABBnAFqIAUgAEHIAWogAEEQahCIAQsiB0F/Rg0BIAgoAgAhBSAIIAAoApwBNgIAIAUEQCAFIAgoAgQRAAALIAAoApwBIQULIAUgBSAHaiIKIAIQciELIABBoQE2AlAgAEHIAGpBACAAQdAAahBOIQUCQCAAKAKcASAAQaABakYEQCAAQdAAaiEHDAELIAdBAXQQRSIHRQ0BIAUoAgAhBiAFIAc2AgAgBgRAIAYgBSgCBBEAAAsgACgCnAEhCQsgAEE4aiIGIAIoAhwiDDYCACAMQQRqQQH+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AAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB2AJqIABB0AJqEEANACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gACgC2AIiAygCDCIIIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAgoAgALIAYgAiAAQbwBaiAAQQhqIAAoAswCIABB0AFqIABBEGogAEEMaiAHELIBDQAgAEHYAmoQWBoMAQsLAkACfyAALQDbAUEHdgRAIAAoAtQBDAELIAAtANsBQf8AcQtFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEIAYQxAM3AwAgAEHQAWogAEEQaiAAKAIMIAQQYSAAQdgCaiAAQdACahBABEAgBCAEKAIAQQJyNgIACyAAKALYAiECIAEQNBogAEHQAWoQNBogAEHgAmokACACC5kFAQN/IwBB4AJrIgAkACAAIAI2AtACIAAgATYC2AIgAxCJASEGIAMgAEHgAWoQwgEhByAAQdABaiADIABBzAJqEMEBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQdgCaiAAQdACahBADQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsi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AiAAIAE2ApgCIABB4AFqIAMgAEHwAWogAEHvAWogAEHuAWoQogIjAEEQayICJAAgAEHQAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2AswBIAAgAEEgajYCHCAAQQA2AhggAEEBOgAXIABBxQA6ABYDQAJAIABBmAJqIABBkAJqEEENACAAKALMAQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCzAELAn8gACgCmAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAYtAAALwCAAQRdqIABBFmogAiAAQcwBaiAALADvASAALADuASAAQeABaiAAQSBqIABBHGogAEEYaiAAQfABahChAg0AIABBmAJqEFkaDAELCwJAAn8gAC0A6wFBB3YEQCAAKALkAQwBCyAALQDrAUH/AHELRQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEMEDIAApAwAhByAFIAApAwg3AwggBSAHNwMAIABB4AFqIABBIGogACgCHCAEEGEgAEGYAmogAEGQAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCmAIhAiABEDQaIABB4AFqEDQaIABBoAJqJAAgAgu5BQEBfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQogIjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AgggAEEBOgAHIABBxQA6AAYDQAJAIABBiAJqIABBgAJqEEENACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gACgCiAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAYtAAALwCAAQQdqIABBBmogAiAAQbwBaiAALADfASAALADeASAAQdABaiAAQRBqIABBDGogAEEIaiAAQeABahChAg0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAtAAdFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEMIDOQMAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAgu5BQEBfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQogIjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AgggAEEBOgAHIABBxQA6AAYDQAJAIABBiAJqIABBgAJqEEENACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQNyABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQNyAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gACgCiAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAYtAAALwCAAQQdqIABBBmogAiAAQbwBaiAALADfASAALADeASAAQdABaiAAQRBqIABBDGogAEEIaiAAQeABahChAg0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAtAAdFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEMMDOAIAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGogACwA/wEgAEHQAWogAEEQaiAAQQxqQZDGAhC0AQ0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCvAEgBCAGEMQDNwMAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGogACwA/wEgAEHQAWogAEEQaiAAQQxqQZDGAhC0AQ0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCvAEgBCAGEMgDOwEAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGogACwA/wEgAEHQAWogAEEQaiAAQQxqQZDGAhC0AQ0AIABBiAJqEFkaDAELCwJAAn8gAC0A2wFBB3YEQCAAKALUAQwBCyAALQDbAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCvAEgBCAGEMkDNwMAIABB0AFqIABBEGogACgCDCAEEGEgAEGIAmogAEGAAmoQQQRAIAQgBCgCAEECcjYCAAsgACgCiAIhAiABEDQaIABB0AFqEDQaIABBkAJqJAAgAguPBQECfyMAQZACayIAJAAgACACNgKAAiAAIAE2AogCIAMQiQEhBiAAQdABaiADIABB/wFqEMMBIwBBEGsiAiQAIABBwAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA3IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK8ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQYgCaiAAQYACahBBDQAgACgCvAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDcgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDcgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArwBCwJ/IAAoAogCIgMoAgwiByADKAIQRgRAIAMgAygCACgCJBEBAAwBCyAHLQAAC8AgBiACIABBvAFqIABBCGog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ADYCgAQgAUKUgICAgISAgIB/NwKEBCAAQbIOKAAANgAQIABBog79AAAA/QsAACAAQQA6ABQgASABQYAEaiIANgLIBCABQdgEaiAEIAAgAUHIBGoQOiABKALYBCAHNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgBSgCZCEHIAFBIBAzIgA2AoAEIAFCkoCAgICEgICAfzcChAQgAEHNEi8AADsAECAAQb0S/QAAAP0LAAAgAEEAOgASIAEgAUGABGoiADYCyAQgAUHYBGogBCAAIAFByARqEDogASgC2AQgBzYCHCABLACLBEEASARAIAEoAoAEEDELIAUoAmghByABQSAQMyIANgKABCABQpSAgICAhICAgH83AoQEIABBjw4oAAA2ABAgAEH/Df0AAAD9CwAAIABBADoAFCABIAFBgARqIgA2AsgEIAFB2ARqIAQgACABQcgEahA6IAEoAtgEIAc2AhwgASwAiwRBAEgEQCABKAKABBAxCyAFKAJsIQcgAUEgEDMiADYCgAQgAUKSgICAgISAgIB/NwKEBCAAQa4SLwAAOwAQIABBnhL9AAAA/QsAACAAQQA6ABIgASABQYAEaiIANgLIBCABQdgEaiAEIAAgAUHIBGoQOiABKALYBCAHNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgBSgCcCEHIAFBIBAzIgA2AoAEIAFCloCAgICEgICAfzcChAQgAEHkDCkAADcADiAAQdYM/QAAAP0LAAAgAEEAOgAWIAEgAUGABGoiADYCyAQgAUHYBGogBCAAIAFByARqEDogASgC2AQgBzYCHCABLACLBEEASARAIAEoAoAEEDELIAUoAnQhByABQSAQMyIANgKABCABQpSAgICAhICAgH83AoQEIABBshEoAAA2ABAgAEGiEf0AAAD9CwAAIABBADoAFCABIAFBgARqIgA2AsgEIAFB2ARqIAQgACABQcgEahA6IAEoAtgEIAc2AhwgASwAiwRBAEgEQCABKAKABBAxCyADQQBKBEAgEEECdKwhIkEAIQcDQCAFKAKIASAHQTxsaiIAIAUoAqABQQAgIRBJNgIkIAAgBSgCoAFBACAhEEk2AiggACAFKAKgASACICEgIhBUNgIsIAAgBSgCoAFBACAiEEk2AjAgACAFKAKgASACICIgIRBUNgI0IAAgBSgCoAFBACAhEEk2AjggACAFKAKgAUEAICEQSTYCACAAIAUoAqABQQAgIRBJNgIEIAAgBSgCoAEgAiAhICEQVDYCECAAIAUoAqABQQAgIRBJNgIUIAAgBSgCoAEgAiAhICEQVDYCGCAAIAUoAqABIAIgISAhEFQ2AhwgACAFKAKgAUEAICEQSTYCICAAIAUoAqABIAIgISAhEFQ2AgggACAFKAKgAUEAICEQSTYCDCAAKAIkIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpB7QwQNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAighCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakG3ERA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCLCELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQbcOEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIwIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpB0BIQNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAjQhCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakGUDhA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCOCELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQbESEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIAIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpBkg0QNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAgQhCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakHYERA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCECELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQfMLEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIUIQsgAUHIBGoiBiAHEDggASAGQfM2EDkiBigCCDYC4AQgASAGKQIANwPYBCAGQgA3AgAgBkEANgIIIAEgAUHYBGpB7RAQNiIGKAIINgKIBCABIAYpAgA3A4AEIAZCADcCACAGQQA2AgggASABQYAEaiIGNgL4BCABQbgEaiAEIAYgAUH4BGoQOiABKAK4BCALNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAhghCyABQcgEaiIGIAcQOCABIAZB8zYQOSIGKAIINgLgBCABIAYpAgA3A9gEIAZCADcCACAGQQA2AgggASABQdgEakGdDBA2IgYoAgg2AogEIAEgBikCADcDgAQgBkIANwIAIAZBADYCCCABIAFBgARqIgY2AvgEIAFBuARqIAQgBiABQfgEahA6IAEoArgEIAs2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCHCELIAFByARqIgYgBxA4IAEgBkHzNhA5IgYoAgg2AuAEIAEgBikCADcD2AQgBkIANwIAIAZBADYCCCABIAFB2ARqQewNEDYiBigCCDYCiAQgASAGKQIANwOABCAGQgA3AgAgBkEANgIIIAEgAUGABGoiBjYC+AQgAUG4BGogBCAGIAFB+ARqEDogASgCuAQgCzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgE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NgIIIAEgAUHYBGpB7QwQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAkwhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakG3ERA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCUCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQbcOEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAJUIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB0BIQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAlghBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGUDhA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCXCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQbESEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIAIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpBkg0QNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAgQhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakHYERA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCECEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQfMLEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIUIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB7RAQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAhghBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGdDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCHCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQewNEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIgIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpBjRIQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAgghBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakHFDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCDCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQZMREDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAIkIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB/AwQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAighBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakHEERA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCNCEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQdoLEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAI4IQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB1hAQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAjwhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGGDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgAEFAaygCACEGIAFByARqIgMgBxA4IAEgA0GDNxA5IgMoAgg2AuAEIAEgAykCADcD2AQgA0IANwIAIANBADYCCCABIAFB2ARqQdMNEDYiAygCCDYCiAQgASADKQIANwOABCADQgA3AgAgA0EANgIIIAEgAUGABGoiAzYC+AQgAUG4BGogBCADIAFB+ARqEDogASgCuAQgBjYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAAKAJEIQYgAUHIBGoiAyAHEDggASADQYM3EDkiAygCCDYC4AQgASADKQIANwPYBCADQgA3AgAgA0EANgIIIAEgAUHYBGpB9hEQNiIDKAIINgKIBCABIAMpAgA3A4AEIANCADcCACADQQA2AgggASABQYAEaiIDNgL4BCABQbgEaiAEIAMgAUH4BGoQOiABKAK4BCAGNgIcIAEsAIsEQQBIBEAgASgCgAQQMQsgASwA4wRBAEgEQCABKALYBBAxCyABLADTBEEASARAIAEoAsgEEDELIAAoAiwhBiABQcgEaiIDIAcQOCABIANBgzcQOSIDKAIINgLgBCABIAMpAgA3A9gEIANCADcCACADQQA2AgggASABQdgEakGuDBA2IgMoAgg2AogEIAEgAykCADcDgAQgA0IANwIAIANBADYCCCABIAFBgARqIgM2AvgEIAFBuARqIAQgAyABQfgEahA6IAEoArgEIAY2AhwgASwAiwRBAEgEQCABKAKABBAxCyABLADjBEEASARAIAEoAtgEEDELIAEsANMEQQBIBEAgASgCyAQQMQsgACgCMCEDIAFByARqIgAgBxA4IAEgAEGDNxA5IgAoAgg2AuAEIAEgACkCADcD2AQgAEIANwIAIABBADYCCCABIAFB2ARqQf4QEDYiACgCCDYCiAQgASAAKQIANwOABCAAQgA3AgAgAEEANgIIIAEgAUGABGoiADYC+AQgAUG4BGogBCAAIAFB+ARqEDogASgCuAQgAzYCHCABLACLBEEASARAIAEoAoAEEDELIAEsAOMEQQBIBEAgASgC2AQQMQsgASwA0wRBAEgEQCABKALIBBAxCyAHQQFqIgcgCkcNAAsLIAVBADYCqAEgBUGwAWohBkEAIQMDQCAIKAIgIAFBoARqQQQgCCgCJBEDABogCCgCICABQZwEakEEIAgoAiQRAwAaIAgoAiAgAUGYBGpBBCAIKAIkEQMAGgJAAkACQCAIKAIgIAgoAigRAQAEQCABQawjNgJAIAEgA7hEAAAAAAAAUD+iRAAAAAAAAFA/ojkDSCAJQZ3cACABQUBrEH0gBSgCqAEiAA0BIAFBrCM2AiAgCUGz0wAgAUEgahAyDAcLQQAhACABQcCIAf0ABAD9CwSABEEBIQIgASgCoARBAEoNAQwCCyAAIAUoArQBIgJGDQUgASAANgI4IAEgAjYCNCABQawjNgIwIAlB/tYAIAFBMGoQMgwDCwNAIAgoAiAgAUGABGogAEECdGoiCkEEIAgoAiQRAwAaIAooAgAgAmwhAiAAQQFqIgAgASgCoARIDQALC0EAIQogAUEANgLgBCABQgA3A9gEIAFBADYC0AQgAUIANwPIBEEAIQAgASgCnAQiBwRAIAdBAEgNCyABIAcQMyIANgLIBCABIAAgB2oiCjYC0AQgAEEAIAf8CwAgASAKNgLMBAsgCCgCICAAIAogAGsiCiAIKAIkEQMAGiABQdgEaiIHIAAgChCRAgJ/IAQgBxCBAiAGRgRAIAFBrCM2AlAgASABKALYBCABQdgEaiABLADjBEEASBs2AlQgCUHm1AAgAUHQAGoQMkEADAELIAEoAtgEIAFB2ARqIAEsAOMEQQBIGyILEGUiAEHw////B08NAwJAAkAgAEELTwRAIABBD3JBAWoiChAzIQcgASAKQYCAgIB4cjYCwAQgASAHNgK4BCABIAA2ArwEIAAgB2ohCgwBCyABIAA6AMMEIAFBuARqIgcgAGohCiAARQ0BCyAHIAsgAPwKAAALIApBADoAACABIAFBuARqIgA2AvAEIAFB+ARqIAQgACABQfAEahA6IAEoAvgEKAIcIQAgASwAwwRBAEgEQCABKAK4BBAxCyACrCAAKQMoIAApAyAgACkDGCAAKQMQfn5+UgRAIAFBrCM2ArABIAEgASgC2AQgAUHYBGogASwA4wRBAEgbNgK0ASAJQbjUACABQbABahAyIAApAyAhISAAKQMYISIgASAAKQMQPgKgASABICI+AqQBIAEgIT4CqAEgAUGsIzYCkAEgASABKAKABDYClAEgASABKQKEBDcDmAEgCUGw2wAgAUGQAWoQMkEADAELIAApAxghISABKAKEBCEKAkACQCAAKQMQIiIgASgCgAQiB6xSDQAgISAKrFINACAAKQMgIAE0AogEUQ0BCyABIAApAyA+AoABIAEgBzYChAEgASAKNgKIASABIAEoAogENgKMASABQawjNgJwIAEgASgC2AQgAUHYBGogASwA4wRBAEgbNgJ0IAEgIj4CeCABICE+AnwgCUHY2gAgAUHwAGoQMkEADAELIAIgASgCmARBAnRB8OYAaigCAGwiAiAAKAIAQQJ0QbDnAGooAgBuIAAQeUcEQCABKALYBCEKIAEsAOMEIQcgABB5IQAgASACNgJsIAEgADYCaCABQawjNgJgIAEgCiABQdgEaiAHQQBIGzYCZCAJQYvQACABQeAAahAyQQAMAQsgCCgCJCECIAgoAiAgACgCgAEgABB5IAIRAwAa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NgLMASAAIAE2AsgBIARFDQAgBBAxIAUoArgBIQILAkAgACgC3AEgACgC1AEiBGtBAnUgAk8NACACQYCAgIAETw0JIAAoAtgBIQggAkECdCIJEDMiASAEIAggBGsiCPwKAAAgACABIAlqNgLcASAAIAEgCGo2AtgBIAAgATYC1AEgBEUNACAEEDEgBSgCuAEhAgsCQCAAKALoASAAKALgASIEa0ECdSACTw0AIAJBgICAgARPDQkgACgC5AEhASACQQJ0IggQMyICIAQgASAEayIB/AoAACAAIAIgCGo2AugBIAAgASACajYC5AEgACACNgLgASAERQ0AIAQQMQtBqLErKAIAIgRFDQIgBSgCGCEBAkADQCAEKAIQIgIgAUoEQCAEKAIAIgQNAQwFCyABIAJMDQEgBCgCBCIEDQALDAMLQbSxKygCACICRQ0CAkADQCACKAIQIgggAUoEQCACKAIAIgINAQwFCyABIAhMDQEgAigCBCICDQALDAMLAkAgBCgCFCIEIAIoAhQiAiACIARJGyAHbCICIABB7BJqKAIAIgcgACgC6BIiBGsiAUsEQCACIAFrIgggAEHwEmooAgAiCSAHa00EQCAHQQAgCPwLACAAIAcgCGo2AuwSDAILIAJBAEgNBUH/////ByAJIARrIgdBAXQiCSACIAIgCUkbIAdB/////wNPGyIJEDMiByABakEAIAj8CwAgByAEIAH8CgAAIAAgByAJajYC8BIgACACIAdqNgLsEiAAIAc2AugSIARFDQEgBBAxDAELIAEgAk0NACAAIAIgBGo2AuwSC0HUsCsoAgAiAkUNAiAFKAIYIQQCQANAIAIoAhAiASAESgRAIAIoAgAiAg0BDAULIAEgBE4NASACKAIEIgINAAsMAwsCQCACKAIUIgIgAEH4EmooAgAiByAAKAL0EiIEayIBSwRAIAIgAWsiCCAAQfwSaigCACIJIAdrTQRAIAdBACAI/AsAIAAgByAIajYC+BIMAgsgAkEASA0FQf////8HIAkgBGsiB0EBdCIJIAIgAiAJSRsgB0H/////A08bIgkQMyIHIAFqQQAgCPwLACAHIAQgAfwKAAAgACAHIAlqNgL8EiAAIAIgB2o2AvgSIAAgBzYC9BIgBEUNASAEEDEMAQsgASACTQ0AIAAgAiAEajYC+BILQeCwKygCACICRQ0C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/AsAQdqJA0EAQfgA/AgTAEHSigNBAEHkAPwLAEG2iwNBAEG6CPwIFABB8JMDQQBB1AD8CBUAQcSUA0EAQTz8CwBBgJUDQQBB2QD8CBYAQdmVA0EAQT/8CwBBmJYDQQBBEPwIFwBBsJYDQQBByMMo/AsAQfjZK0EC/hcCAEH42StBf/4AAgAaDAELQfjZK0EBQn/+AQIAGgv8CQD8CQH8CQL8CQP8CQT8CQX8CQb8CQf8CQj8CQn8CQr8CQv8CQz8CQ38CQ78CQ/8CRD8CRH8CRL8CRP8CRT8CRX8CRb8CRcLC8b0AhgBllzima8A4pmuAOKZrQDimawA4pmrAOKZquKZquKZqgDimakA44CPAOOAjgDjgI0A44CMAHoAaW5maW5pdHkARmVicnVhcnkASmFudWFyeQBKdWx5AG1hbGF5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQAlbS8lZC8leQAhIWt2X3NlbGYuY3R4AGNhY2hlLmN0eABzaXgAJXMgZmFpbGVkIHRvIHJlbGVhc2UgbXV0ZXgAJXMgZmFpbGVkIHRvIGFjcXVpcmUgbXV0ZXgAY2lyY3VtZmxleAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AGhlYnJldwBoYXcATm92AFRodQB0ZWx1Z3UAQXVndXN0ACVzIGZhaWxlZCB0byBicm9hZGNhc3QAdW5zaWduZWQgc2hvcnQAYWxlcnQAcHJpbnQAdW5zaWduZWQgaW50AGNpcmN1bWZsZXgtYWNjZW50AGdyYXZlLWFjY2VudABmdWxsX2RlZmF1bHQAa3ZfY2FjaGVfcmVpbml0AGt2X2NhY2hlX2luaXQAeGRpZ2l0AC5jcm9zc19hdHRuLnF1ZXJ5LndlaWdodAAuYXR0bi5xdWVyeS53ZWlnaHQALmNyb3NzX2F0dG4ua2V5LndlaWdodAAuYXR0bi5rZXkud2VpZ2h0AC5jcm9zc19hdHRuLm91dC53ZWlnaHQALmF0dG4ub3V0LndlaWdodABlbmNvZGVyLmxuX3Bvc3Qud2VpZ2h0AC5tbHBfbG4ud2VpZ2h0AC5jcm9zc19hdHRuX2xuLndlaWdodAAuYXR0bl9sbi53ZWlnaHQAZGVjb2Rlci5sbi53ZWlnaHQAZGVjb2Rlci50b2tlbl9lbWJlZGRpbmcud2VpZ2h0AC5jcm9zc19hdHRuLnZhbHVlLndlaWdodAAuYXR0bi52YWx1ZS53ZWlnaHQAZW5jb2Rlci5jb252Mi53ZWlnaHQALm1scC4yLndlaWdodABlbmNvZGVyLmNvbnYxLndlaWdodAAubWxwLjAud2VpZ2h0AHNldAByaWdodC1jdXJseS1icmFja2V0AGxlZnQtY3VybHktYnJhY2tldAByaWdodC1zcXVhcmUtYnJhY2tldABsZWZ0LXNxdWFyZS1icmFja2V0AHB1bmN0AE9jdABmbG9hdABTYXQAY29tbWVyY2lhbC1hdAB1aW50NjRfdABoeXBoZW4tbWludXMAcmV2ZXJzZS1zb2xpZHVzAHdoaXNwZXJfZXhwX2NvbXB1dGVfdG9rZW5fbGV2ZWxfdGltZXN0YW1wcwBhZnJpa2FhbnMAcGFyYW1zAHJpZ2h0LXBhcmVudGhlc2lzAGxlZnQtcGFyZW50aGVzaXMAd2hpc3Blcl9wcmludF90aW1pbmdzAC5jcm9zc19hdHRuLnF1ZXJ5LmJpYXMALmF0dG4ucXVlcnkuYmlhcwAuY3Jvc3NfYXR0bi5vdXQuYmlhcwAuYXR0bi5vdXQuYmlhcwBlbmNvZGVyLmxuX3Bvc3QuYmlhcwAubWxwX2xuLmJpYXMALmNyb3NzX2F0dG5fbG4uYmlhcwAuYXR0bl9sbi5iaWFzAGRlY29kZXIubG4uYmlhcwAuY3Jvc3NfYXR0bi52YWx1ZS5iaWFzAC5hdHRuLnZhbHVlLmJpYXMAZW5jb2Rlci5jb252Mi5iaWFzAC5tbHAuMi5iaWFzAGVuY29kZXIuY29udjEuYmlhcwAubWxwLjAuYmlhcwAlcwBmb3VyAHdoaXNwZXJfbGFuZ19zdHIAQXByAGNvbnN0cnVjdG9yAHZlY3RvcgBjZ3JhcGgtPm5vZGVzW2NncmFwaC0+bl9ub2RlcyAtIDFdID09IHRlbnNvcgBiYXNoa2lyAGxvd2VyAHVwcGVyAGtobWVyAGJ1ZmZlcgBPY3RvYmVyAE5vdmVtYmVyAFNlcHRlbWJlcgBEZWNlbWJlcgB0YXRhcgBteWFubWFyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgBxAC9Vc2Vycy9nZ2VyZ2Fub3YvZGV2ZWxvcG1lbnQvZ2l0aHViL3doaXNwZXIuY3BwL3doaXNwZXIuY3BwAGZ1bGwtc3RvcABTZXAAJUk6JU06JVMgJXAAdHdvAGF1dG8AcGFzaHRvAHplcm8AbGFvAFN1bgBKdW4AY2FycmlhZ2UtcmV0dXJuAGJyZXRvbgBzZW1pY29sb24Ac3RkOjpleGNlcHRpb24AX19jeGFfZ3VhcmRfYWNxdWlyZSBkZXRlY3RlZCByZWN1cnNpdmUgaW5pdGlhbGl6YXRpb24ATW9uAGxhdGluAHBlcmNlbnQtc2lnbgBwbHVzLXNpZ24AZXF1YWxzLXNpZ24AbnVtYmVyLXNpZ24AZG9sbGFyLXNpZ24AbGVzcy10aGFuLXNpZ24AZ3JlYXRlci10aGFuLXNpZ24Ac2V2ZW4AdHVya21lbgBoeXBoZW4Ab2NjaXRhbgB0aWJldGFuAG5hbgBnZXJtYW4AY2F0YWxhbgBsYXR2aWFuAGJlbGFydXNpYW4AcnVzc2lhbgBwZXJzaWFuAGluZG9uZXNpYW4AaHVuZ2FyaWFuAGJ1bGdhcmlhbgBib3NuaWFuAG1hY2Vkb25pYW4AdWtyYWluaWFuAHNsb3ZlbmlhbgBsaXRodWFuaWFuAG1vbmdvbGlhbgBpdGFsaWFuAG5vcndlZ2lhbgBzZXJiaWFuAGtvcmVhbgBKYW4AYWxudW0AbWFsYXlhbGFtAEp1bABjbnRybABnZ21sX25ld190ZW5zb3JfaW1wbABib29sAGxsAEFwcmlsAHRhbWlsAGVtc2NyaXB0ZW46OnZhbABueW5vcnNrAGFzdGVyaXNrAHF1ZXN0aW9uLW1hcmsAcXVvdGF0aW9uLW1hcmsAZXhjbGFtYXRpb24tbWFyawBibGFuawB0YWppawBncmVlawB1emJlawBzbG92YWsAagBtYW9yaQBGcmkAYXplcmJhaWphbmkAc3dhaGlsaQBuZXBhbGkAc29tYWxpAGJlbmdhbGkAbWFyYXRoaQBzaW5kaGkAaGluZGkAcHVuamFiaQBiYWRfYXJyYXlfbmV3X2xlbmd0aAB3ZWxzaABmaW5uaXNoAHNwYW5pc2gAZGFuaXNoAHBvbGlzaABlbmdsaXNoAHR1cmtpc2gAbHV4ZW1ib3VyZ2lzaABzd2VkaXNoAHlpZGRpc2gAYmFja3NsYXNoAGdyYXBoAGthemFraABkdXRjaABNYXJjaABmcmVuY2gAY3plY2gAQXVnAHRhZ2Fsb2cAdW5zaWduZWQgbG9uZwB0ZXJtaW5hdGluZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGVuY29kZXIucG9zaXRpb25hbF9lbWJlZGRpbmcAZGVjb2Rlci5wb3NpdGlvbmFsX2VtYmVkZGluZwBpbmYAJS4wTGYAJUxmAGlkKnNpemVvZihnZ21sX2ZwMTZfdCkgPD0gcGFyYW1zLT53c2l6ZQB3aGlzcGVyX3Rva2VuaXplAGZpdmUAdHJ1ZQBiYXNxdWUAVHVlAHdoaXNwZXJfaW5pdF9zdGF0ZQB3aGlzcGVyX2luaXRfbm9fc3RhdGUAd2hpc3Blcl9pbml0X2Zyb21fZmlsZV9ub19zdGF0ZQB3aGlzcGVyX2xhbmdfYXV0b19kZXRlY3Rfd2l0aF9zdGF0ZQB3aGlzcGVyX2Z1bGxfd2l0aF9zdGF0ZQB0cmFuc2xhdGUAZmFsc2UAcG9ydHVndWVzZQBtYWx0ZXNlAGZhcm9lc2UAY2hpbmVzZQBzdW5kYW5lc2UAdmlldG5hbWVzZQBfX2N4YV9ndWFyZF9yZWxlYXNlAHVuZGVyc2NvcmUAX19jeGFfZ3VhcmRfYWNxdWlyZQB3dHlwZSA9PSBjYWNoZS52LT50eXBlAHNyYzAtPnR5cGUgPT0gZHN0LT50eXBlAGRzdC0+dHlwZSA9PSBzcmMwLT50eXBlAFVua25vd24gZXJyb3IgdHlwZQBKdW5lAG9uZQBuaW5lAG5ld2xpbmUAbG93LWxpbmUAdmVydGljYWwtbGluZQBoYWl0aWFuIGNyZW9sZQBkb3VibGUAYXBvc3Ryb3BoZQB0aHJlZQBmcmVlAHRpbGRlAHJpZ2h0LWJyYWNlAGxlZnQtYnJhY2UAYmFja3NwYWNlAHRyYW5zY3JpYmUAcGVyaW9kAG1hcDo6YXQ6ICBrZXkgbm90IGZvdW5kAGFtcGVyc2FuZAB2b2lkAHdoaXNwZXJfbGFuZ19pZAB0ZXJtaW5hdGVfaGFuZGxlciB1bmV4cGVjdGVkbHkgcmV0dXJuZWQAdGhyZWFkIGNvbnN0cnVjdG9yIGZhaWxlZABfX3RocmVhZF9zcGVjaWZpY19wdHIgY29uc3RydWN0aW9uIGZhaWxlZAB0aHJlYWQ6OmpvaW4gZmFpbGVkAG11dGV4IGxvY2sgZmFpbGVkAGZvcm0tZmVlZABXZWQAd2hpc3Blcl9tb2RlbF9sb2FkACUwMmQ6JTAyZDolMDJkJXMlMDNkAHN0ZDo6YmFkX2FsbG9jAGRzdC0+bmVbMF0gPT0gbmMAYW1oYXJpYwBpY2VsYW5kaWMAYXJhYmljAERlYwAvVXNlcnMvZ2dlcmdhbm92L2RldmVsb3BtZW50L2dpdGh1Yi93aGlzcGVyLmNwcC9nZ21sLmMAd2IAcmIARmViAHZlcnRpY2FsLXRhYgBuX2xvZ2l0cyA9PSBjdHgudm9jYWIubl92b2NhYgB3K2IAcitiAGErYgByd2EAaGF1c2EAc2hvbmEAY29tbWEAc2luaGFsYQBsaW5nYWxhAGFscGhhAGthbm5hZGEAeW9ydWJhAFtfZXh0cmFfdG9rZW5fAFtfVFRfAG5iMDAgPT0gR0dNTF9UWVBFX1NJWkVbdHlwZV0AbmIwMCA9PSAoaW50KSBHR01MX1RZUEVfU0laRVt0eXBlXQBbX1NPVF9dAFtfTk9UX10AW19FT1RfXQBbX0JFR19dAGEtPm5lWzFdID09IGItPm5lWzFdAFoAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVwBWAFUAd3R5cGUgIT0gR0dNTF9UWVBFX0NPVU5UAGF4aXMzID49IDAgJiYgYXhpczMgPCBHR01MX01BWF9ESU1TAGF4aXMyID49IDAgJiYgYXhpczIgPCBHR01MX01BWF9ESU1TAGF4aXMxID49IDAgJiYgYXhpczEgPCBHR01MX01BWF9ESU1TAGF4aXMwID49IDAgJiYgYXhpczAgPCBHR01MX01BWF9ESU1TAGNncmFwaC0+bl9sZWFmcyA8IEdHTUxfTUFYX05PREVTAGNncmFwaC0+bl9ub2RlcyA8IEdHTUxfTUFYX05PREVTACVIOiVNOiVTAFIAUQBQAE8ATkFOAG5lMSA9PSBOAFBNAEFNAG5lYjEwID09IE0AbmVjMDAgPT0gTQBOVUwAY3R4LT5tZW1fYnVmZmVyICE9IE5VTEwATENfQUxMAEsASgBJAEgATEFORwBJTkYARQBuZXYxID09IEQAbmVjMDEgPT0gRABuZWswID09IEQAbmUwID09IEQAbmVjMTAgPT0gRABuZWIwMCA9PSBEAEMAQgBBAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4APj4+ADw8PAAwMTIzNDU2Nzg5AEhFQVBVOABDLlVURi04AGRzdC0+dHlwZSA9PSBHR01MX1RZUEVfRjE2AGdnbWxfbmVsZW1lbnRzKG9wdDApID09IDUAYXhpczIgIT0gYXhpczMAYXhpczEgIT0gYXhpczMAYXhpczAgIT0gYXhpczMAbmUwMyA9PSBuZTMAbmIyIDw9IG5iMwBuZTMgPT0gbmUxMwBuZTAzID09IG5lMTMAbmUzID09IG5lMDMAZ2dtbF9uZWxlbWVudHMoc3JjMSkgPT0gMwBheGlzMSAhPSBheGlzMgBheGlzMCAhPSBheGlzMgBnZ21sX25lbGVtZW50cyhhKSA9PSBuZTAqbmUxKm5lMgBuZTAyID09IG5lMgBuYjEgPD0gbmIyAG5lMiA9PSBuZWEyAGdnbWxfaXNfbWF0cml4KGEpICYmIGdnbWxfaXNfdmVjdG9yKGIpICYmIGItPnR5cGUgPT0gR0dNTF9UWVBFX0kzMgBzcmMxLT50eXBlID09IEdHTUxfVFlQRV9JMzIAb3B0MC0+dHlwZSA9PSBHR01MX1RZUEVfSTMyAGRzdC0+dHlwZSA9PSBHR01MX1RZUEVfRjMyAHNyYzEtPnR5cGUgPT0gR0dNTF9UWVBFX0YzMgBuZTIgPT0gbmUxMgBuZTAyID09IG5lMTIAbmUyID09IG5lMDIAYXhpczAgIT0gYXhpczEAZ2dtbF9uZWxlbWVudHMoYSkgPT0gbmUwKm5lMQBuZTAwID09IG5lMQBuYjAgPD0gbmIxAG5lMSA9PSBuZWExAG5lMSA9PSBuZTExAG5lMSA9PSBuZTAxAG5lMCA9PSBuZTAxAHQgPT0gMCB8fCB0ID09IDEAYS0+bmVbM10gPT0gMQBub2RlLT5zcmMxLT5uZVszXSA9PSAxAG5vZGUtPnNyYzAtPm5lWzNdID09IDEAbm9kZS0+c3JjMS0+bmVbMl0gPT0gMQBuZTAwICUgMiA9PSAxAG5lYzExID09IDEAbmViMTEgPT0gMQBuZTAxID09IDEAbmUwID09IDEAbmUwMCA9PSBuZTAAbl9kaW1zIDw9IG5lMABuZTAgPT0gbmVhMABQID49IDAAcGFyYW1zLT5pdGggPT0gMAByYyA9PSAwACgodWludHB0cl90KSAocmVzdWx0KSklR0dNTF9NRU1fQUxJR04gPT0gMAAoKHVpbnRwdHJfdCkgKGN0eC0+bWVtX2J1ZmZlcikpJUdHTUxfTUVNX0FMSUdOID09IDAAbl9kaW1zICUgMiA9PSAwAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkIHsgYW5kIH0uAGVuY29kZXIuYmxvY2tzLgBkZWNvZGVyLmJsb2Nrcy4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgY2hhcmFjdGVyIHJhbmdlLCBzdWNoIGFzIFtiLWFdIGluIG1vc3QgZW5jb2RpbmdzLgBBbiBlbXB0eSByZWdleCBpcyBub3QgYWxsb3dlZCBpbiB0aGUgUE9TSVggZ3JhbW1hci4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgcmFuZ2UgaW4gYSB7fSBleHByZXNzaW9uLgBUaGUgcGFyc2VyIGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIHJlZ3VsYXIgZXhwcmVzc2lvbi4AT25lIG9mICo/K3sgd2FzIG5vdCBwcmVjZWRlZCBieSBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIGNvbXBsZXhpdHkgb2YgYW4gYXR0ZW1wdGVkIG1hdGNoIGFnYWluc3QgYSByZWd1bGFyIGV4cHJlc3Npb24gZXhjZWVkZWQgYSBwcmUtc2V0IGxldmVsLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBlc2NhcGVkIGNoYXJhY3Rlciwgb3IgYSB0cmFpbGluZyBlc2NhcGUuAFRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGNvbnZlcnQgdGhlIGV4cHJlc3Npb24gaW50byBhIGZpbml0ZSBzdGF0ZSBtYWNoaW5lLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBjb2xsYXRpbmcgZWxlbWVudCBuYW1lLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgbmFtZS4AVGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb3VsZCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBzZXF1ZW5jZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgYmFjayByZWZlcmVuY2UuAEFuIGludmFsaWQgcmVnZXggZ3JhbW1hciBoYXMgYmVlbiByZXF1ZXN0ZWQuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkIFsgYW5kIF0uAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkICggYW5kICkuAC0tLQB3KwAnc3wndHwncmV8J3ZlfCdtfCdsbHwnZHwgP1tbOmFscGhhOl1dK3wgP1tbOmRpZ2l0Ol1dK3wgP1teXHNbOmFscGhhOl1bOmRpZ2l0Ol1dK3xccysoPyFcUyl8XHMrAHIrAGErAG5fZWxlbWVudHMgPT0gZ2dtbF9uZWxlbWVudHMoY2FjaGUudikAZ2dtbF9pc19jb250aWd1b3VzKGRzdCkAb2Zmc2V0ICsgaW0wKm5iMCArIGltMSpuYjEgKyBpbTIqbmIyICsgaW0zKm5iMyA8IGdnbWxfbmJ5dGVzKGRzdCkAb2Zmc2V0ICsgKG5lMTAgPT0gMCA/IDAgOiBuZTEwLTEpKm5iMCArIChuZTExID09IDAgPyAwIDogbmUxMS0xKSpuYjEgKyAobmUxMiA9PSAwID8gMCA6IG5lMTItMSkqbmIyICsgKG5lMTMgPT0gMCA/IDAgOiBuZTEzLTEpKm5iMyA8IGdnbWxfbmJ5dGVzKGRzdCkAZ2dtbF9hcmVfc2FtZV9zaGFwZShvcHQwLCBkc3QpAGdnbWxfY2FuX3JlcGVhdChzcmMwLCBkc3QpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgc3JjMSkgJiYgZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBkc3QpAGdnbWxfY2FuX3JlcGVhdF9yb3dzKHNyYzEsIHNyYzApICYmIGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgZHN0KQBkc3QtPm5iWzBdID09IHNpemVvZihmbG9hdCkAdGVuc29yLT5uYlswXSA9PSBzaXplb2YoZmxvYXQpAHNyYzAtPm5iWzBdID09IHNpemVvZihmbG9hdCkAbmJ2MCA9PSBzaXplb2YoZmxvYXQpAG5icTAgPT0gc2l6ZW9mKGZsb2F0KQBuYmswID09IHNpemVvZihmbG9hdCkAbmIwID09IHNpemVvZihmbG9hdCkAbmJjMTAgPT0gc2l6ZW9mKGZsb2F0KQBuYjEwID09IHNpemVvZihmbG9hdCkAbmJiMTAgPT0gc2l6ZW9mKGZsb2F0KQBuYjAwID09IHNpemVvZihmbG9hdCkAdGVuc29yLT5uYlswXSA9PSBzaXplb2YoaW50OF90KQB0ZW5zb3ItPm5iWzBdID09IHNpemVvZihpbnQxNl90KQB0ZW5zb3ItPm5iWzBdID09IHNpemVvZihnZ21sX2ZwMTZfdCkAc3JjMC0+bmJbMF0gPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYnYwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJxMCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5iazAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYjAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYmEwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJjMDAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYjAwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJiMDAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQB0ZW5zb3ItPm5iWzBdID09IHNpemVvZihpbnQzMl90KQAobnVsbCkAY2FjaGUuYnVmLnNpemUoKSA+PSAyKm5fZWxlbWVudHMqZ2dtbF90eXBlX3NpemVmKHd0eXBlKQBnZ21sX2lzX3F1YW50aXplZChzcmMwLT50eXBlKQBnZ21sX2lzX2NvbnRpZ3VvdXMoZ3JhZCkAZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBncmFkKQBnZ21sX2lzX21hdHJpeChiKQBnZ21sX25lbGVtZW50cyhhKSA9PSBnZ21sX25lbGVtZW50cyhiKQBnZ21sX2lzX3NjYWxhcihiKQBnZ21sX2Nhbl9tdWxfbWF0KGEsIGIpAGdnbWxfY2FuX3JlcGVhdChhLCBiKQBnZ21sX2FyZV9zYW1lX3NoYXBlKGEsIGIpAGdnbWxfaXNfY29udGlndW91cyhhKQAhZ2dtbF9pc190cmFuc3Bvc2VkKGEpAGdnbWxfaXNfcGFkZGVkXzFkKGEpAGdnbWxfY2FuX3JlcGVhdF9yb3dzKGIsIGEpAGdnbWxfaXNfc2NhbGFyKHNyYzEpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgZHN0KSAmJiBnZ21sX2FyZV9zYW1lX3NoYXBlKHNyYzAsIHNyYzEpAGdnbWxfaXNfY29udGlndW91cyhvcHQwKQBnZ21sX2lzX2NvbnRpZ3VvdXMoZHN0KSAmJiBnZ21sX2lzX2NvbnRpZ3VvdXMoc3JjMCkAZ2dtbF9uZWxlbWVudHMoZHN0KSA9PSBnZ21sX25lbGVtZW50cyhzcmMwKQBvZmZzZXQgKyAobmUxMCA9PSAwID8gMCA6IG5lMTAtMSkqbmIwMCArIChuZTExID09IDAgPyAwIDogbmUxMS0xKSpuYjAxICsgKG5lMTIgPT0gMCA/IDAgOiBuZTEyLTEpKm5iMDIgKyAobmUxMyA9PSAwID8gMCA6IG5lMTMtMSkqbmIwMyA8IGdnbWxfbmJ5dGVzKHNyYzApACkpKQBvcGVyYXRvcigpACgoKABQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQAgfCAAQVZYID0gAFZTWCA9IABCTEFTID0gAE5FT04gPSAAQ09SRU1MID0gAFdBU01fU0lNRCA9IABGMTZDID0gAEZQMTZfVkEgPSAAQVJNX0ZNQSA9IABTU0UzID0gAEFWWDIgPSAAQVZYNTEyID0gACVzOiBub3QgZW5vdWdoIHNwYWNlIGluIHRoZSBzY3JhdGNoIG1lbW9yeQoAJXM6IHRlbnNvciAnJXMnIGhhcyB3cm9uZyBzaXplIGluIG1vZGVsIGZpbGU6IGdvdCAlenUsIGV4cGVjdGVkICV6dQoAJXM6IGFkZGluZyAlZCBleHRyYSB0b2tlbnMKACVzOiAgICAgIG1lbCB0aW1lID0gJTguMmYgbXMKACVzOiAgICB0b3RhbCB0aW1lID0gJTguMmYgbXMKACVzOiAgICAgbG9hZCB0aW1lID0gJTguMmYgbXMKAHN5c3RlbV9pbmZvOiBuX3RocmVhZHMgPSAlZCAvICVkIHwgJXMKAFdISVNQRVJfQVNTRVJUOiAlczolZDogJXMKAEdHTUxfQVNTRVJUOiAlczolZDogJXMKAFslcyAtLT4gJXNdICAlcwoAJXM6IG9mZnNldCAlZG1zIGlzIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGF1ZGlvCgAlczogbG9hZGluZyBtb2RlbAoAJXM6IGZhaWxlZCB0byBsb2FkIG1vZGVsCgAlczogICAgIGZhbGxiYWNrcyA9ICUzZCBwIC8gJTNkIGgKACVzOiBXQVJOIG5vIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGFzc3VtaW5nIGVtcHR5IG1vZGVsIGZvciB0ZXN0aW5nCgAlczogZW5jb2Rlcl9iZWdpbl9jYWxsYmFjayByZXR1cm5lZCBmYWxzZSAtIGFib3J0aW5nCgAlczogdGVuc29yICclcycgaGFzIHdyb25nIHNpemUgaW4gbW9kZWwgZmlsZQoAJXM6IHVua25vd24gdGVuc29yICclcycgaW4gbW9kZWwgZmlsZQoAJXM6IG5vIHNpZ25hbCBkYXRhIGF2YWlsYWJsZQoAJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGt2IGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3IgY3Jvc3MtYXR0ZW50aW9uIGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3Igc2VsZi1hdHRlbnRpb24gY2FjaGUKACVzOiBmYWlsZWQgdG8gYXV0by1kZXRlY3QgbGFuZ3VhZ2UKACVzOiBnZ21sX2luaXQoKSBmYWlsZWQKACVzOiBFUlJPUiBub3QgYWxsIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGV4cGVjdGVkICV6dSwgZ290ICVkCgAlczoga3ZfY2FjaGVfcmVpbml0KCkgZmFpbGVkIGZvciBzZWxmLWF0dGVudGlvbiwgZGVjb2RlciAlZAoAJXM6IHVua25vd24gbGFuZ3VhZ2UgaWQgJWQKACVzOiBuX2F1ZGlvX2xheWVyID0gJWQKACVzOiBuX2F1ZGlvX3N0YXRlID0gJWQKACVzOiBuX3RleHRfbGF5ZXIgID0gJWQKACVzOiBuX3RleHRfc3RhdGUgID0gJWQKACVzOiBuX2F1ZGlvX2hlYWQgID0gJWQKACVzOiBuX2F1ZGlvX2N0eCAgID0gJWQKACVzOiBuX3RleHRfaGVhZCAgID0gJWQKACVzOiBuX3RleHRfY3R4ICAgID0gJWQKACVzOiBuX3ZvY2FiICAgICAgID0gJWQKACVzOiBuX21lbHMgICAgICAgID0gJWQKACVzOiBxbnR2ciAgICAgICAgID0gJWQKACVzOiBmdHlwZSAgICAgICAgID0gJWQKACVzOiB0eXBlICAgICAgICAgID0gJWQK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EAAQEBAQABAQEAAQEBAAEBAAABAQEAAQEBAQABAQABAQABAAEBAAEBAQAAAQEAAQEAAAABAQABAQEBAQABAAEBAAEBAAEAAQEBAAEAAQABAQAAAQABAAEBAQEAAAEAAQEAAQAAAQABAQEAAAABAAEBAAAAAAEAAQEBAQEBAAABAQABAQEAAAEBAQABAQAAAQEAAAEBAAABAQEBAAEAAAEBAAEAAQAAAQEBAAABAAABAQAAAAEAAAEBAQEBAAAAAQEAAQEAAAABAQEAAQAAAAEBAAABAAAAAQEBAQAAAAABAQABAAAAAAEBAQAAAAAAAQEAAAAAAAABAQEBAQEBAQABAAEBAQEBAAEBAAEBAQEAAQAAAQEBAQABAQEAAQEBAAEAAQABAQEAAQEAAAEBAQABAAAAAQEBAAEBAQEAAQEAAQABAQABAQABAQABAAEBAAEAAAEAAQEAAQEBAAABAQABAAEAAAEBAAEBAAAAAQEAAQAAAAABAQABAQEBAQABAAEAAQEBAAEAAQEAAQEAAQABAAABAQABAAEBAQABAAEAAQABAAEAAQABAQAAAQABAAEAAAABAAEAAQEBAQAAAQABAAEBAAABAAEBAAEAAAEAAQAAAQAAAQABAQEAAAABAAEAAQAAAAEAAQEAAAAAAQABAAAAAAABAAEBAQEBAQAAAQABAQEBAAABAQABAQEAAAEAAAEBAQAAAQEBAAEBAAABAAEAAQEAAAEBAAABAQAAAQAAAAEBAAABAQEBAAEAAAEAAQEAAQAAAQEAAQABAAABAAABAAEAAAEBAQAAAQAAAQABAAABAAABAQAAAAEAAAEAAAAAAQAAAQEBAQEAAAABAAEBAQAAAAEBAAEBAAAAAQAAAQEAAAABAQEAAQAAAAEAAQABAAAAAQEAAAEAAAABAAAAAQAAAAEBAQEAAAAAAQABAQAAAAABAQABAAAAAAEAAAEAAAAAAQEBAAAAAAABAAEAAAAAAAEBAAAAAAAAAQAAAAAAAAABAQEBAQEBAQAAAQEBAQEBAAEAAQEBAQEAAAABAQEBAQABAQABAQEBAAABAAEBAQEAAQAAAQEBAQAAAAABAQEBAAEBAQABAQEAAAEBAAEBAQABAAEAAQEBAAAAAQABAQEAAQEAAAEBAQAAAQAAAQEBAAEAAAABAQEAAAAAAAEBAQABAQEBAAEBAAABAQEAAQEAAQABAQABAQAAAAEBAAEBAAEBAAEAAQEAAAEAAQABAQABAAABAAEBAAAAAAEAAQEAAQEBAAABAQAAAQEAAAEBAAEAAQAAAQEAAAABAAABAQABAQAAAAEBAAABAAAAAQEAAQAAAAABAQAAAAAAAAEBAAEBAQEBAAEAAAEBAQEAAQABAAEBAQABAAAAAQEBAAEAAQEAAQEAAQAAAQABAQABAAEAAAEBAAEAAAAAAQEAAQABAQEAAQABAAABAQABAAEAAQABAAEAAQAAAAEAAQABAAEBAAABAAEAAAEAAAEAAQABAAAAAQABAAAAAAABAAEAAQEBAQAAAQAAAQEBAAABAAEAAQEAAAEAAAABAQAAAQABAQABAAABAAABAAEAAAEAAQAAAQAAAQAAAAABAAABAAEBAQAAAAEAAAEBAAAAAQABAAEAAAABAAAAAQAAAAEAAQEAAAAAAQAAAQAAAAABAAEAAAAAAAEAAAAAAAAAAQABAQEBAQEAAAABAQEBAQAAAQABAQEBAAAAAAEBAQEAAAEBAAEBAQAAAAEAAQEBAAABAAABAQEAAAAAAAEBAQAAAQEBAAEBAAAAAQEAAQEAAAEAAQABAQAAAAABAAEBAAABAQAAAQEAAAABAAABAQAAAQAAAAEBAAAAAAAAAQEAAAEBAQEAAQAAAAEBAQABAAABAAEBAAEAAAAAAQEAAQAAAQEAAQABAAAAAQABAAEAAAEAAAEAAQAAAAAAAQABAAABAQEAAAEAAAABAQAAAQAAAQABAAABAAAAAAEAAAEAAAEBAAAAAQAAAAEAAAABAAABAAAAAAEAAAAAAAAAAQAAAQEBAQEAAAAAAQEBAQAAAAEAAQEBAAAAAAABAQEAAAABAQABAQAAAAABAAEBAAAAAQAAAQEAAAAAAAABAQAAAAEBAQABAAAAAAEBAAEAAAABAAEAAQAAAAAAAQABAAAAAQEAAAEAAAAAAQAAAQAAAAEAAAABAAAAAAAAAAEAAAABAQEBAAAAAAABAQEAAAAAAQABAQAAAAAAAAEBAAAAAAEBAAEAAAAAAAEAAQAAAAABAAABAAAAAAAAAAEAAAAAAQEBAAAAAAAAAQEAAAAAAAEAAQAAAAAAAAABAAAAAAABAQAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAAABAAAAAAABAAEAAAAAAAABAQAAAAAAAQEBAAAAAAAAAAABAAAAAAEAAAEAAAAAAAEAAQAAAAABAQABAAAAAAAAAQEAAAAAAQABAQAAAAAAAQEBAAAAAAEBAQEAAAAAAAAAAAEAAAABAAAAAQAAAAABAAABAAAAAQEAAAEAAAAAAAEAAQAAAAEAAQABAAAAAAEBAAEAAAABAQEAAQAAAAAAAAEBAAAAAQAAAQEAAAAAAQABAQAAAAEBAAEBAAAAAAABAQEAAAABAAEBAQAAAAABAQEBAAAAAQEBAQEAAAAAAAAAAAEAAAEAAAAAAQAAAAEAAAABAAABAQAAAAEAAAAAAQAAAQAAAQABAAABAAAAAQEAAAEAAAEBAQAAAQAAAAAAAQABAAABAAABAAEAAAABAAEAAQAAAQEAAQABAAAAAAEBAAEAAAEAAQEAAQAAAAEBAQABAAABAQEBAAEAAAAAAAABAQAAAQAAAAEBAAAAAQAAAQEAAAEBAAABAQAAAAABAAEBAAABAAEAAQEAAAABAQABAQAAAQEBAAEBAAAAAAABAQEAAAEAAAEBAQAAAAEAAQEBAAABAQABAQEAAAAAAQEBAQAAAQABAQEBAAAAAQEBAQEAAAEBAQEBAQAAAAAAAAAAAQABAAAAAAABAAABAAAAAAEAAQEAAAAAAQAAAAEAAAABAAEAAQAAAAEAAAEBAAAAAQABAQEAAAABAAAAAAEAAAEAAQAAAQAAAQAAAQABAAABAAEBAAEAAAEAAAABAQAAAQABAAEBAAABAAABAQEAAAEAAQEBAQAAAQAAAAAAAQABAAEAAAABAAEAAAEAAAEAAQABAQAAAQABAAAAAQABAAEAAQABAAEAAQAAAQEAAQABAAEBAQABAAEAAAAAAQEAAQABAAABAQABAAABAAEBAAEAAQEAAQEAAQAAAAEBAQABAAEAAQEBAAEAAAEBAQEAAQABAQEBAQABAAAAAAAAAQEAAQAAAAABAQAAAQAAAAEBAAEBAAAAAQEAAAABAAABAQABAAEAAAEBAAABAQAAAQEAAQEBAAABAQAAAAABAAEBAAEAAAEAAQEAAAEAAQABAQABAQABAAEBAAAAAQEAAQEAAQABAQABAQAAAQEBAAEBAAEBAQEAAQEAAAAAAAEBAQABAAAAAQEBAAABAAABAQEAAQEAAAEBAQAAAAEAAQEBAAEAAQABAQEAAAEBAAEBAQABAQEAAQEBAAAAAAEBAQEAAQAAAQEBAQAAAQABAQEBAAEBAAEBAQEAAAABAQEBAQABAAEBAQEBAAABAQEBAQEAAQEBAQEBAQAAAAAAAAAAAQEAAAAAAAABAAEAAAAAAAEBAQAAAAAAAQAAAQAAAAABAQABAAAAAAEAAQEAAAAAAQEBAQAAAAABAAAAAQAAAAEBAAABAAAAAQABAAEAAAABAQEAAQAAAAEAAAEBAAAAAQEAAQEAAAABAAEBAQAAAAEBAQEBAAAAAQAAAAABAAABAQAAAAEAAAEAAQAAAQAAAQEBAAABAAABAAABAAEAAAEBAAEAAQAAAQABAQABAAABAQEBAAEAAAEAAAABAQAAAQEAAAEBAAABAAEAAQEAAAEBAQABAQAAAQAAAQEBAAABAQABAQEAAAEAAQEBAQAAAQEBAQEBAAABAAAAAAABAAEBAAAAAAEAAQABAAAAAQABAQEAAAABAAEAAAEAAAEAAQEAAQAAAQABAAEBAAABAAEBAQEAAAEAAQAAAAEAAQABAQAAAQABAAEAAQABAAEAAQEBAAEAAQABAAABAQABAAEBAAEBAAEAAQABAQEAAQABAQEBAQABAAEAAAAAAQEAAQEAAAABAQABAAEAAAEBAAEBAQAAAQEAAQAAAQABAQABAQABAAEBAAEAAQEAAQEAAQEBAQABAQABAAAAAQEBAAEBAAABAQEAAQABAAEBAQABAQEAAQEBAAEAAAEBAQEAAQEAAQEBAQABAAEBAQEBAAEBAQEBAQEAAQAAAAAAAAEBAQAAAAAAAQEAAQAAAAABAQEBAAAAAAEBAAABAAAAAQEBAAEAAAABAQABAQAAAAEBAQEBAAAAAQEAAAABAAABAQEAAAEAAAEBAAEAAQAAAQEBAQABAAABAQAAAQEAAAEBAQABAQAAAQEAAQEBAAABAQEBAQEAAAEBAAAAAAEAAQEBAAAAAQABAQABAAABAAEBAQEAAAEAAQEAAAEAAQABAQEAAQABAAEBAAEBAAEAAQEBAQEAAQABAQAAAAEBAAEBAQAAAQEAAQEAAQABAQABAQEBAAEBAAEBAAABAQEAAQEBAAEBAQABAQABAQEBAAEBAQEBAQEAAQEAAAAAAAEBAQEAAAAAAQEBAAEAAAABAQEBAQAAAAEBAQAAAQAAAQEBAQABAAABAQEAAQEAAAEBAQEBAQAAAQEBAAAAAQABAQEBAAABAAEBAQABAAEAAQEBAQEAAQABAQEAAAEBAAEBAQEAAQEAAQEBAAEBAQABAQEBAQEBAAEBAQAAAAABAQEBAQAAAAEBAQEAAQAAAQEBAQEBAAABAQEBAAABAAEBAQEBAAEAAQEBAQABAQABAQEBAQEBAAEBAQEAAAABAQEBAQEAAAEBAQEBAAEAAQEBAQEBAQABAQEBAQAAAQEBAQEBAQABAQEBAQEAAQEBAQEBAQEBAQEBAQEBAAAAAAAQAAAAIAAAADAAAAAAAAAAAAAAAAAAAACAAAAAYAAAAHAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAACgRAAAMwAAADQAAAA1AAAANgAAAE5TdDNfXzIxMV9fZW5kX3N0YXRlSWNFRQBOU3QzX18yNl9fbm9kZUljRUUAnMcAAIVEAADExwAAbEQAAJhEAAAAAAAAUEUAADcAAAA4AAAAOQAAADoAAAA7AAAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUE5TXzEzX19lbXB0eV9zdGF0ZUljRUVOU18xMHNoYXJlZF9wdHJJUzJfRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMyX1MyX0VFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAAMTHAADIRAAASL4AAE5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfMTNfX2VtcHR5X3N0YXRlSWNFRUUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTMl9TMl9FRQAAAAAAAAA4RgAAPAAAAD0AAAA+AAAANgAAAE5TdDNfXzIxM19fZW1wdHlfc3RhdGVJY0VFAE5TdDNfXzIxNl9fb3duc19vbmVfc3RhdGVJY0VFAE5TdDNfXzIxNV9faGFzX29uZV9zdGF0ZUljRUUAAADExwAAAUYAAJhEAADExwAA40UAACBGAADExwAAyEUAACxGAAAAAAAALEYAADwAAAA/AAAAQAAAADYAAAAAAAAAmEYAADwAAABBAAAAQgAAADYAAABOU3QzX18yMjBfX2xfYW5jaG9yX211bHRpbGluZUljRUUAAADExwAAdEYAACxGAAAAAAAA4EYAADwAAABDAAAARAAAADYAAABOU3QzX18yMjBfX3JfYW5jaG9yX211bHRpbGluZUljRUUAAADExwAAvEYAACxGAAAAAAAAOEcAAEUAAABGAAAARwAAADYAAABOU3QzX18yMTVfX3dvcmRfYm91bmRhcnlJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAAxMcAAARHAAAsRgAAAAAAAIxHAABIAAAASQAAAEoAAAA2AAAATlN0M19fMjExX19sb29rYWhlYWRJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAAxMcAAFxHAAAsRgAAAAAAANhHAAA8AAAASwAAAEwAAAA2AAAATlN0M19fMjIzX19tYXRjaF9hbnlfYnV0X25ld2xpbmVJY0VFAAAAAMTHAACwRwAALEYAAAAAAAA0SAAATQAAAE4AAABPAAAANgAAAE5TdDNfXzIxOF9fbWF0Y2hfY2hhcl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAAxMcAAPxHAAAsRgAAAAAAAJBIAABQAAAAUQAAAFIAAAA2AAAATlN0M19fMjIwX19tYXRjaF9jaGFyX2NvbGxhdGVJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAADExwAAWEgAACxGAAAAAAAA0EgAADwAAABTAAAAVAAAADYAAABOU3QzX18yMTJfX21hdGNoX2NoYXJJY0VFAAAAxMcAALRIAAAsRgAAAAAAAChJAABVAAAAVgAAAFcAAAA2AAAATlN0M19fMjE2X19iYWNrX3JlZl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAMTHAAD0SAAALEYAAAAAAACESQAAWAAAAFkAAABaAAAANgAAAE5TdDNfXzIxOF9fYmFja19yZWZfY29sbGF0ZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAAxMcAAExJAAAsRgAAAAAAAMBJAAA8AAAAWwAAAFwAAAA2AAAATlN0M19fMjEwX19iYWNrX3JlZkljRUUAxMcAAKhJAAAsRgAAAAAAABxKAABdAAAAXgAAAF8AAAA2AAAATlN0M19fMjIwX19icmFja2V0X2V4cHJlc3Npb25JY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAADExwAA5EkAACxGAAAAAAAAbEoAADwAAABgAAAAYQAAADYAAABOU3QzX18yMjhfX2JlZ2luX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQAAAMTHAABASgAALEYAAAAAAAC4SgAAPAAAAGIAAABjAAAANgAAAE5TdDNfXzIyNl9fZW5kX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQDExwAAkEoAACxGAAAAAAAAHEsAAGQAAABlAAAAZgAAAGcAAABOU3QzX18yNl9fbG9vcEljRUUATlN0M19fMjE3X19vd25zX3R3b19zdGF0ZXNJY0VFAAAAxMcAAO9KAAAsRgAAxMcAANxKAAAQSwAAAAAAABBLAABkAAAAaAAAAEAAAAA2AAAAAAAAAHhLAAAzAAAAaQAAAGoAAAA2AAAATlN0M19fMjE3X19yZXBlYXRfb25lX2xvb3BJY0VFAADExwAAWEsAACBGAAAAAAAAuEsAAGQAAABrAAAAbAAAAG0AAABOU3QzX18yMTFfX2FsdGVybmF0ZUljRUUAAAAAxMcAAJxLAAAQSwAAAAAAAABMAAAzAAAAbgAAAG8AAAA2AAAATlN0M19fMjIxX19lbXB0eV9ub25fb3duX3N0YXRlSWNFRQAAxMcAANxLAAAgRgAAAAAAAEBMAAA8AAAAcAAAAHEAAAA2AAAATlN0M19fMjExX19tYXRjaF9hbnlJY0VFAAAAAMTHAAAkTAAALEYAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAACcxwAATEwAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAACcxwAAlEwAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAAnMcAANxMAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAAJzHAAAoTQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAACcxwAAdE0AAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92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IRQAAAAAAAAAAAAAABcAAAAAFwAAAAAJFAAAAAAAFAAAFAH2CRYAAAAAAAAAAAAAABUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgAAAAC8kgAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAAAIAAAAAAAAAPSSAACMAAAAjQAAAPj////4////9JIAAI4AAACPAAAA7JEAAACSAAAAAAAA2JMAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACFAAAAhgAAAJcAAACIAAAAmAAAAIoAAACZAAAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAADExwAAUJIAAAiUAABOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAAAAnMcAAIiSAABOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAgyAAAxJIAAAAAAAABAAAAfJIAAAP0//9sAAAAAAAAAJyTAACaAAAAmwAAAJT///+U////nJMAAJwAAACdAAAAGJMAAFCTAABkkwAALJMAAGwAAAAAAAAA9JIAAIwAAACNAAAAlP///5T////0kgAAjgAAAI8AAABOU3QzX18yMTRiYXNpY19pZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQDExwAAbJMAAPSSAABOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAADExwAAqJMAALySAAAAAAAACJQAAJ4AAACfAAAATlN0M19fMjhpb3NfYmFzZUUAAACcxwAA9JMAANF0ngBXnb0qgHBSD///PicKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BRgAAAA1AAAAcQAAAGv////O+///kr///wAAAAAAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAQIEBwMGBQAAAAAAAAACAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNsAAAAA3hIElQAAAAD///////////////9AlgAAFAAAAEMuVVRGLTgBAlSWAUpMQ19DVFlQRQAAAABMQ19OVU1FUklDAABMQ19USU1FAAAAAABMQ19DT0xMQVRFAABMQ19NT05FVEFSWQBMQ19NRVNTQUdFUwAAmQH5AwEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcA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AAC9EAAAAQAAAMcJAAAIAAAAMgUAAAAEAADTBQAAAAEAAE5TdDNfXzIxMXJlZ2V4X2Vycm9yRQAAAMTHAAB4wgAAzMkAAM8dAAALHgAALR0AAL0eAAAeHwAASx8AAEYbAAAdHAAAkxsAAHodAACVHAAA0RwAAEUeAADxHgAA6RsAADAQAABbHAAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOwAAAAAAAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkAAAAAAAAAAAL/AARkACAAAAT//wYAAQABAAEA//8B/wH//////wH/Af8B/wH/Af8B/wH/Af//////Cv8gAP//A/8B/wT/HgAAAQX//////2MAAAhjAOgDAgAAAP//////AAAAAf8B//////////////8AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAf8B//////8AASAABACAAAAI//8B/wH/////////Af8G/wf/CP8J//////+8ArwCAQD//wEAAQD//wAA//////////8AAAAAAAAAAAAAAAAAAAAAFAF4//8BAAr///////////8B/wH/AAAAAAAAAf8B/wH/AAAAAAAAAAAAAAAAAAAAAAAAAf8AAAAAAAAB/wH/AQAAAAEAAAAB//////8AAAAAAf///wAAAAD/////////////KAAK//////8BAAr/////AP//////////AboIAf8B////AQD//////////////////wr//////04xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAADExwAA0sUAAOjJAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAADExwAAAMYAAPTFAABOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UAAADExwAAMMYAAPTFAABOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQDExwAAYMYAAFTGAAAAAAAA1MYAAKsBAACsAQAArQEAAK4BAACvAQAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAMTHAACsxgAA9MUAAHYAAACYxgAA4MYAAGIAAACYxgAA7MYAAGMAAACYxgAA+MYAAGgAAACYxgAABMcAAGEAAACYxgAAEMcAAHMAAACYxgAAHMcAAHQAAACYxgAAKMcAAGkAAACYxgAANMcAAGoAAACYxgAAQMcAAGwAAACYxgAATMcAAG0AAACYxgAAWMcAAHgAAACYxgAAZMcAAHkAAACYxgAAcMcAAGYAAACYxgAAfMcAAGQAAACYxgAAiMcAAAAAAAAkxgAAqwEAALABAACtAQAArgEAALEBAACyAQAAswEAALQBAAAAAAAADMgAAKsBAAC1AQAArQEAAK4BAACxAQAAtgEAALcBAAC4AQAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAMTHAADkxwAAJMYAAAAAAABoyAAAqwEAALkBAACtAQAArgEAALEBAAC6AQAAuwEAALwBAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAAxMcAAEDIAAAkxgAAAAAAANjIAAAIAAAAvQEAAL4BAAAAAAAAAMkAAAgAAAC/AQAAwAEAAAAAAADAyAAACAAAAMEBAADCAQAAU3Q5ZXhjZXB0aW9uAAAAAJzHAACwyAAAU3Q5YmFkX2FsbG9jAAAAAMTHAADIyAAAwMgAAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAADExwAA5MgAANjIAAAAAAAARMkAAAcAAADDAQAAxAEAAAAAAADMyQAAxQEAAMYBAACnAQAAU3QxMWxvZ2ljX2Vycm9yAMTHAAA0yQAAwMgAAAAAAAB4yQAABwAAAMcBAADEAQAAU3QxMmxlbmd0aF9lcnJvcgAAAADExwAAZMkAAETJAAAAAAAArMkAAAcAAADIAQAAxAEAAFN0MTJvdXRfb2ZfcmFuZ2UAAAAAxMcAAJjJAABEyQAAU3QxM3J1bnRpbWVfZXJyb3IAAADExwAAuMkAAMDIAABTdDl0eXBlX2luZm8AAAAAnMcAANjJAAABVAUAAAAAAAAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAABzAAAA8NkKAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAD//////////wFZ8MkAAAAAAAAFAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAeQAAAPjZCgAABAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA/////woBEIjKAAAA7QsAAAIAAKoBAAA=";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["aa"]);wasmTable=Module["asm"]["Z"];addOnInit(Module["asm"]["Y"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency("wasm-instantiate")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];worker.terminate();__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};worker.runPthread=()=>{if(ENVIRONMENT_IS_NODE){worker.ref()}msg.time=performance.now();worker.postMessage(msg,threadParams.transferList);delete worker.runPthread};if(worker.loaded){worker.runPthread()}return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+8>>2]=stat.ino;GROWABLE_HEAP_I32()[buf+12>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+16>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+20>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+24>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+44>>2]=tempI64[1];GROWABLE_HEAP_I32()[buf+48>>2]=4096;GROWABLE_HEAP_I32()[buf+52>>2]=stat.blocks;tempI64=[Math.floor(stat.atime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.atime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+56>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+60>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+64>>2]=0;tempI64=[Math.floor(stat.mtime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.mtime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+72>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+76>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+80>>2]=0;tempI64=[Math.floor(stat.ctime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.ctime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+88>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+92>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+96>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+104>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=8;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads:function(){for(var worker of Object.values(PThread.pthreads)){PThread.returnWorkerToPool(worker)}for(var worker of PThread.unusedWorkers){worker.terminate()}PThread.unusedWorkers=[]},returnWorkerToPool:function(worker){var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;if(ENVIRONMENT_IS_NODE){worker.unref()}__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer:function(data){},threadInitTLS:function(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processProxyingQueue"){executeNotifiedProxyingQueue(d["queue"])}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE){worker.unref()}if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread()}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)});worker.on("detachedExit",function(){})}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("libwhisper.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackTop=GROWABLE_HEAP_I32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_I32()[pthread_ptr+56>>2];var stackMax=stackTop-stackSize;_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type};this.get_type=function(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]};this.set_destructor=function(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor};this.get_destructor=function(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]};this.set_refcount=function(refcount){GROWABLE_HEAP_I32()[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12>>0]=caught};this.get_caught=function(){return GROWABLE_HEAP_I8()[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return GROWABLE_HEAP_I8()[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){Atomics.add(GROWABLE_HEAP_I32(),this.ptr+0>>2,1)};this.release_ref=function(){var prev=Atomics.sub(GROWABLE_HEAP_I32(),this.ptr+0>>2,1);return prev===1};this.set_adjusted_ptr=function(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return GROWABLE_HEAP_U32()[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}function ___pthread_create_js(pthread_ptr,attr,startRoutine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function setErrNo(value){GROWABLE_HEAP_I32()[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=GROWABLE_HEAP_I8()}else if(size===2){heap=GROWABLE_HEAP_I16()}else if(size===4){heap=GROWABLE_HEAP_I32()}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return GROWABLE_HEAP_I8()[pointer]}:function readU8FromPointer(pointer){return GROWABLE_HEAP_U8()[pointer]};case 1:return signed?function readS16FromPointer(pointer){return GROWABLE_HEAP_I16()[pointer>>1]}:function readU16FromPointer(pointer){return GROWABLE_HEAP_U16()[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return GROWABLE_HEAP_I32()[pointer>>2]}:function readU32FromPointer(pointer){return GROWABLE_HEAP_U32()[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=GROWABLE_HEAP_U32();var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>GROWABLE_HEAP_U16();shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>GROWABLE_HEAP_U32();shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=GROWABLE_HEAP_U32()[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emscripten_default_pthread_stack_size(){return 65536}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function executeNotifiedProxyingQueue(queue){Atomics.store(GROWABLE_HEAP_I32(),queue>>2,1);if(_pthread_self()){__emscripten_proxy_execute_task_queue(queue)}Atomics.compareExchange(GROWABLE_HEAP_I32(),queue>>2,1,0)}Module["executeNotifiedProxyingQueue"]=executeNotifiedProxyingQueue;function __emscripten_notify_task_queue(targetThreadId,currThreadId,mainThreadId,queue){if(targetThreadId==currThreadId){setTimeout(()=>executeNotifiedProxyingQueue(queue))}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processProxyingQueue","queue":queue})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"processProxyingQueue","queue":queue})}return 1}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);GROWABLE_HEAP_U32()[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;iGROWABLE_HEAP_U32();var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"+" var HEAPU32 = getMemory();\n";for(var i=0;i>2)], 'parameter "+i+"');\n"+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"+"argTypes += 4;\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return valueToHandle(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,getMemory)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=Emval.toValue(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return Emval.toHandle(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function _abort(){abort("")}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}}function _emscripten_check_blocking_allowed(){if(ENVIRONMENT_IS_NODE)return;if(ENVIRONMENT_IS_WORKER)return;warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=()=>performance.now()-Module["__performance_now_clock_drift"]}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=GROWABLE_HEAP_U8().length;requestedSize=requestedSize>>>0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)GROWABLE_HEAP_I8()[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1,fd,offset_low,offset_high,whence,newOffset);try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[newOffset>>2]=tempI64[0],GROWABLE_HEAP_I32()[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);GROWABLE_HEAP_U32()[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=GROWABLE_HEAP_I32()[tm+40>>2];var date={tm_sec:GROWABLE_HEAP_I32()[tm>>2],tm_min:GROWABLE_HEAP_I32()[tm+4>>2],tm_hour:GROWABLE_HEAP_I32()[tm+8>>2],tm_mday:GROWABLE_HEAP_I32()[tm+12>>2],tm_mon:GROWABLE_HEAP_I32()[tm+16>>2],tm_year:GROWABLE_HEAP_I32()[tm+20>>2],tm_wday:GROWABLE_HEAP_I32()[tm+24>>2],tm_yday:GROWABLE_HEAP_I32()[tm+28>>2],tm_isdst:GROWABLE_HEAP_I32()[tm+32>>2],tm_gmtoff:GROWABLE_HEAP_I32()[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%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 rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); +function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("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");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,AGFzbQEAAAABxQRKYAF/AGABfwF/YAJ/fwBgA39/fwF/YAJ/fwF/YAN/f38AYAR/f39/AGAEf39/fwF/YAZ/f39/f38Bf2AAAGAFf39/f38Bf2AFf39/f38AYAZ/f39/f38AYAh/f39/f39/fwF/YAABf2AHf39/f39/fwF/YAd/f39/f39/AGABfQF9YAV/fn5+fgBgA39+fwF+YAV/f39/fgF/YAR/f39/AX5gBH9+fn8AYAp/f39/f39/f39/AX9gB39/f39/fn4Bf2AGf39/f35+AX9gBX9/fn9/AGADf39/AXxgBH9/f38BfGAEf39+fgF/YAJ/fgBgAXwBfWACfH8BfGAFf39+fn4Bf2AIf39/f39/f38AYAx/f39/f39/f39/f38Bf2ADf35/AX9gD39/f39/f39/f39/f39/fwBgCn9/f39/f39/f38AYAt/f39/f39/f39/fwF/YAZ/fH9/f38Bf2AJf39/f39/f39/AGAFf39/f3wBf2AAAXxgA39/fgF/YAABfmACf3wAYAJ9fQF9YAR+fn5+AX9gA39/fQF/YAJ+fwF/YAN/f3wBf2ACf30Bf2ABfABgBn9/fn5/fwF/YAR/f35/AX9gAn5+AXxgAnx8AXxgBH9/fn4AYAR/f399AGADf39/AX1gBH9/f34BfmADf39+AGACfn4BfWACf38BfmADfn5+AX9gCH9/fn5+f39/AX9gAX4Bf2ABfAF8YAF/AX5gAn1/AX9gBX9/f319AGAFf39/f30AYAl/f39/f39/f38BfwKmAjABYQFiAAkBYQFjAAUBYQFkAAUBYQFlACsBYQFmAAABYQFnAAsBYQFoABABYQFpAAQBYQFqAAEBYQFrAAUBYQFsAAABYQFtAAABYQFuAAkBYQFvAAEBYQFwAAcBYQFxAAMBYQFyAAIBYQFzAAUBYQF0AAcBYQF1AAEBYQF2AAABYQF3ABsBYQF4AAoBYQF5ABABYQF6AA4BYQFBAA4BYQFCAAoBYQFDAAQBYQFEAAQBYQFFAAEBYQFGAAUBYQFHAAABYQFIAAcBYQFJABwBYQFKAAABYQFLAAABYQFMAAcBYQFNAAMBYQFOAAcBYQFPAAkBYQFQAAABYQFRAA4BYQFSAAIBYQFTAAYBYQFUAAIBYQFVAAYBYQFWAAQBYQFhAgOAAoCAAgPEBsIGAAIBARECBAIEAgYEAQICBAQKCQ4BAAMSCSwBBQkBAwMDAQkCAAEBHRECAgMRAQEAEgUBCgYCFgsBEQMDAQERAwMFBBIBLQMBAgUCBAMBAgMABB4fHwIKCgcBLgcvAAABAA0NCAgBAgACAgIBBgEFBAIFBQIEAgIwAhYgMQMBAiEFCAUCBRcBFwECAgUBBzIEBQMiCgUEBQIEAgMAAAMzNDUABwIBCwUFBQEBAgEBAhADEA8PBwUBAjYCNwEAAAMABAMOABEJCQkCBQkCAwMeBAICAgECAQAMBgUCDgQEBAICBQULARUFAQMBBAQDIwsDIwsFBgEBEgECCwUEAQQBADgEIQoRBwkJDgkJAwA5AyQBAQoHAAUHBgYCCQkEAggLDAMIAwMCAgIFBgUJAxAECjoAAQYECQkABAQBAQELIgILBQQCOwQAAgAABRUAAQEFAgUBAQUCBQQAAQEKDQ0KDQ0BCg0BBAAEAQACAQMDJSYDJSYBAQInAgEBBQInAgIMCwwMCwwMAQMQAxAFCAUDBQYbPBUFBwgHFQcFBT0BBwAEBAM+P0AGEhIWEkEBAQcEBAIDAAMBAQUCAQIBAAAEQgMDCQQFBgEPIAQAHREECQAEAQMCBAAJAAAABAQAAgABAgFDAERFJAMJAQJGCQQECgIACAgDAgkKBwEHBQkJBgECCQgDAwMAB0cCSAICAQYpAAYACQEAAAAAAAAAAAAXSQ8QCgwBAA4BAQABAQwMDAsLCwYGBgMDAwAAAAIBAAAFAQABAAEAAQABAAUBAAEAAQABAAEABgEAAQABAAECBQcCAgICAgEBAAUAAQYKAQoNDQAKBQoDBwMEAwQFAAoDBwMEAwQGBwcHAwAAAAUJDAwFCBgIGAYPDwUPDwUJDw8NBggICAgIBQ0ICAgICAUKGSoUBgoUCgoKGQYqFAoUBQoKCAgICAgICAgICAgICAgACAgICAMGCgMGCgMAAAECAQYaAwQEAQABAQEAAQMBAQMGGgMAAQIDAigJEw4AAAAAABwCAAAABAAACQEDAxMJDgkBDgACAQUCAQIFAgICCQIAAgIAAQIAAQICAAECAAECAAECAAECAgUEAAUCBQEAAAMJBAcBcAHZA9kDBj8MfwFB8P04C38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQQLfwFBAAsHjgEZAVcAwgQBWAEAAVkALwFaAEMBXwDBBgEkAKoGAmFhAMAGAmJhAL8GAmNhAL4GAmRhANIEAmVhAL0GAmZhALAGAmdhAK0GAmhhAKwGAmlhAKgGAmphAKQGAmthANUEAmxhANQEAm1hANMEAm5hANoEAm9hANEEAnBhANAEAnFhAM8EAnJhAM4EAnNhAM0ECALwBgn1BgEAQQEL2AO1BpgG/gXLBY4F5gThApQBzQajAugF6wbmBuEF3AXVBcMDzwXKBccFvgPEBb8FuwW8A7MFqgWiBboDmgWXBY0F7QWEBfkE7gTpBMQEwwTvBr4E7AbrBO4G2ATMBMsEygTJBMgExwTGBMUE7QbCBpQBROoG6QaUAUToBucGRMQGjwGvBI8B+gGPAeUGjwHkBuMG4gbhBuAG3wbeBo8B6gTdBtwG2wbaBtkG2AaPAdcG1gbVBtQG0wbSBtEGjwHQBqgEzwbOBo8BzAaPAcsGxwbDAsoGyQbDAkTIBsMCxgbFBkSvBI8BwwabBLwGuwa6BrkGtwa2BsoBtAaGBLMGhQSyBq4GsQavBvIBqwZsqQanBqYGpQaYBKMGogb6AaEGoAafBmxsngadBpwG7QObBu0DrQLsA5oGmQblAZUGjQaRBpAGjwaOBpQGkwaSBqsC4gOMBosGpgKKBokGL/IBuQWVA4oFiAWGBYMFgQX/BP0E+wT4BPYE9ATyBPAE7QSXA7oFuAWTA6sFqQWoBacFpgWUA6UFpAWjBZoDoAWfBZ4FnQWcBWybBZkFiQOYBZUFlAWTBZEFjwWIA5YFlwaWBpIFkAWMBZQBRES3BbYFtQW0BbIFsQWwBa8FlAOuBa0FrAVEkgOSA8IBmAKYAqEFmAJEjwOOA8IBbGyNA9gBRI8DjgPCAWxsjQPYAUSMA4sDwgFsbIoD2AFEjAOLA8IBbGyKA9gBlAFEiAaHBoYGlAFEhQaEBoMGRIIGgQaABv8FxQPFA/0F/AX7BfoF+QVE+AX3BfYF9QW7A7sD9AXzBfIF8QXwBUTvBe4F7AXrBeoF6QXnBeYFROUF5AXjBeIF4AXfBd4F3QWUAUS1A9sF2gXZBdgF1wXWBYsFhwWCBfUE8QT+BPoElAFEtQPUBdMF0gXRBdAFzgWJBYUFgAXzBO8E/AT3BJYChwPNBZYChwPMBUTcAdwBfX19rQNsmQGZAUTcAdwBfX19rQNsmQGZAUTbAdsBfX19rANsmQGZAUTbAdsBfX19rANsmQGZAUTJBcgFRMYFxQVEwwXCBUTBBcAFRJsDvgX6AUSbA70F+gHsBOUC9QL9AugE5QKUAUTyAfIB5QRE5ATbBN4E4wRE3ATfBOIERN0E4AThBETXBETWBETZBIUC/QKEAvUChQKFAgwBGwrN8x7CBqYMAQd/AkAgAEUNAEHs6zQtAABBAnEEQEHw6zQQVQ0BCyAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQAJAIAFBAXENACABQQNxRQ0BIAIgAigCACIBayICQcDoNCgCAEkNASAAIAFqIQACQAJAQcToNCgCACACRwRAIAFB/wFNBEAgAUEDdiEEIAIoAgwiASACKAIIIgNGBEBBsOg0QbDoNCgCAEF+IAR3cTYCAAwFCyADIAE2AgwgASADNgIIDAQLIAIoAhghBiACIAIoAgwiAUcEQCACKAIIIgMgATYCDCABIAM2AggMAwsgAkEUaiIEKAIAIgNFBEAgAigCECIDRQ0CIAJBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUoAgQiAUEDcUEDRw0CQbjoNCAANgIAIAUgAUF+cTYCBCACIABBAXI2AgQgBSAANgIADAMLQQAhAQsgBkUNAAJAIAIoAhwiA0ECdEHg6jRqIgQoAgAgAkYEQCAEIAE2AgAgAQ0BQbToNEG06DQoAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECACRhtqIAE2AgAgAUUNAQsgASAGNgIYIAIoAhAiAwRAIAEgAzYCECADIAE2AhgLIAIoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIAVPDQAgBSgCBCIBQQFxRQ0AAkACQAJAAkAgAUECcUUEQEHI6DQoAgAgBUYEQEHI6DQgAjYCAEG86DRBvOg0KAIAIABqIgA2AgAgAiAAQQFyNgIEIAJBxOg0KAIARw0GQbjoNEEANgIAQcToNEEANgIADAYLQcToNCgCACAFRgRAQcToNCACNgIAQbjoNEG46DQoAgAgAGoiADYCACACIABBAXI2AgQgACACaiAANgIADAYLIAFBeHEgAGohACABQf8BTQRAIAFBA3YhBCAFKAIMIgEgBSgCCCIDRgRAQbDoNEGw6DQoAgBBfiAEd3E2AgAMBQsgAyABNgIMIAEgAzYCCAwECyAFKAIYIQYgBSAFKAIMIgFHBEBBwOg0KAIAGiAFKAIIIgMgATYCDCABIAM2AggMAwsgBUEUaiIEKAIAIgNFBEAgBSgCECIDRQ0CIAVBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUgAUF+cTYCBCACIABBAXI2AgQgACACaiAANgIADAMLQQAhAQsgBkUNAAJAIAUoAhwiA0ECdEHg6jRqIgQoAgAgBUYEQCAEIAE2AgAgAQ0BQbToNEG06DQoAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAwRAIAEgAzYCECADIAE2AhgLIAUoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIABBAXI2AgQgACACaiAANgIAIAJBxOg0KAIARw0AQbjoNCAANgIADAELIABB/wFNBEAgAEF4cUHY6DRqIQECf0Gw6DQoAgAiA0EBIABBA3Z0IgBxRQRAQbDoNCAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggMAQtBHyEDIABB////B00EQCAAQSYgAEEIdmciAWt2QQFxIAFBAXRrQT5qIQMLIAIgAzYCHCACQgA3AhAgA0ECdEHg6jRqIQECQAJAAkBBtOg0KAIAIgRBASADdCIHcUUEQEG06DQgBCAHcjYCACABIAI2AgAgAiABNgIYDAELIABBGSADQQF2a0EAIANBH0cbdCEDIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIANBHXYhASADQQF0IQMgBCABQQRxaiIHQRBqKAIAIgENAAsgByACNgIQIAIgBDYCGAsgAiACNgIMIAIgAjYCCAwBCyAEKAIIIgAgAjYCDCAEIAI2AgggAkEANgIYIAIgBDYCDCACIAA2AggLQdDoNEHQ6DQoAgBBAWsiAEF/IAAbNgIAC0Hs6zQtAABBAnFFDQBB8Os0EFAaCwsmAQF/IwBBEGsiAiQAIAIgATYCDCAAQejWACABEPMDIAJBEGokAAs3AQF/QQEgACAAQQFNGyEAAkADQCAAEEMiAQ0BQdz9NP4QAgAiAQRAIAERCQAMAQsLEAAACyABCyUAIAAtAAtBB3YEQCAAIAAoAgAgACgCCEH/////B3EQ5AELIAALjQECAX0CfyAAvCICQRd2Qf8BcSIDQZUBTQR9IANB/QBNBEAgAEMAAAAAlA8LAn0gACAAjCACQQBOGyIAQwAAAEuSQwAAAMuSIACTIgFDAAAAP14EQCAAIAGSQwAAgL+SDAELIAAgAZIiACABQwAAAL9fRQ0AGiAAQwAAgD+SCyIAIACMIAJBAE4bBSAACwtFAQJ/IwBBkAhrIgIkAEGonAMoAgAEQCACIAE2AgwgAkEQaiIDQYAIIAAgARC8ARogA0GonAMoAgARAAALIAJBkAhqJAALDAAgACABIAEQZxBpC+YDAQh/IwBBIGsiBCQAIARBDGohBQJAIARBFWoiByICIARBIGoiBkYNACABQQBODQAgAkEtOgAAIAJBAWohAkEAIAFrIQELIAUCfyAGIgMgAmsiCEEJTARAQT0gCEEgIAFBAXJna0HRCWxBDHUiCSAJQQJ0QZCOA2ooAgAgAU1qSA0BGgsCfyABQb+EPU0EQCABQY/OAE0EQCABQeMATQRAIAFBCU0EQCACIAFBMGo6AAAgAkEBagwECyACIAEQowEMAwsgAUHnB00EQCACIAFB5ABuIgNBMGo6AAAgAkEBaiABIANB5ABsaxCjAQwDCyACIAEQjQIMAgsgAUGfjQZNBEAgAiABQZDOAG4iA0EwajoAACACQQFqIAEgA0GQzgBsaxCNAgwCCyACIAEQjAIMAQsgAUH/wdcvTQRAIAFB/6ziBE0EQCACIAFBwIQ9biIDQTBqOgAAIAJBAWogASADQcCEPWxrEIwCDAILIAIgARCLAgwBCyABQf+T69wDTQRAIAIgAUGAwtcvbiIDQTBqOgAAIAJBAWogASADQYDC1y9saxCLAgwBCyACIAFBgMLXL24iAxCjASABIANBgMLXL2xrEIsCCyEDQQALNgIEIAUgAzYCACAAIAcgBCgCDBDKAyAGJAALggIBBH8CfyABEGchAiMAQRBrIgUkAAJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCyIEQQBPBEACQCACIAAtAAtBB3YEfyAAKAIIQf////8HcUEBawVBCgsiAyAEa00EQCACRQ0BAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsiAyAEBH8gAiADaiADIAT8CgAAIAEgAkEAIAMgBGogAUsbQQAgASADTxtqBSABCyAC/AoAACAAIAIgBGoiARCYASAFQQA6AA8gASADaiAFLQAPOgAADAELIAAgAyACIARqIANrIARBAEEAIAIgARDBAQsgBUEQaiQAIAAMAQsQ2gIACwuDAgEDfwJAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgIgAUkEQCMAQRBrIgQkACABIAJrIgIEQCACIAAtAAtBB3YEfyAAKAIIQf////8HcUEBawVBCgsiAwJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCyIBa0sEQCAAIAMgAiADayABaiABIAEQkgILIAECfyAALQALQQd2BEAgACgCAAwBCyAACyIDaiACQQAQkQIgACABIAJqIgAQmAEgBEEAOgAPIAAgA2ogBC0ADzoAAAsgBEEQaiQADAELIAACfyAALQALQQd2BEAgACgCAAwBCyAACyABEIUDCwv/AgEHfyAAAn8CQAJAIAEoAgQiBEUEQCABQQRqIgUhAgwBCyACKAIAIAIgAi0ACyIFwEEASCIGGyEIIAIoAgQgBSAGGyEGA0ACQAJAAkACQAJAIAQiAigCFCACLQAbIgQgBMBBAEgiBxsiBCAGIAQgBkkiCRsiBQRAIAggAigCECACQRBqIAcbIgcgBRBFIgpFBEAgBCAGSw0CDAMLIApBAE4NAgwBCyAEIAZNDQILIAIhBSACKAIAIgQNBAwFCyAHIAggBRBFIgQNAQsgCQ0BDAQLIARBAE4NAwsgAigCBCIEDQALIAJBBGohBQtBIBAxIgQgAygCACIDKQIANwIQIAQgAygCCDYCGCADQgA3AgAgA0EANgIIIAQgAjYCCCAEQgA3AgAgBEEANgIcIAUgBDYCACAEIQIgASgCACgCACIDBEAgASADNgIAIAUoAgAhAgsgASgCBCACEJcBIAEgASgCCEEBajYCCEEBDAELIAIhBEEACzoABCAAIAQ2AgALMwECfyAAQRhqIQIgACgCIAR/IAIoAgAFQQALIQMgAiABKQIANwIAIAIgASgCCDYCCCADC4wCAgN/An4CQCAAKQNwIgRCAFIgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIwBBEGsiAiQAQX8hAQJAIAAQvwINACAAIAJBD2pBASAAKAIgEQMAQQFHDQAgAi0ADyEBCyACQRBqJAAgASIDQQBODQEgACgCBCEBIAAoAiwhAgsgAEJ/NwNwIAAgATYCaCAAIAUgAiABa6x8NwN4QX8PCyAFQgF8IQUgACgCBCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADC7gBAQN/AkAgARD8AiICIAAtAAtBB3YEfyAAKAIIQf////8HcUEBawVBAQsiA00EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgMgASACQQJ0IgT8CgAAIwBBEGsiASQAIAAgAhCYASABQQA2AgwgAyAEaiABKAIMNgIAIAFBEGokAAwBCyAAIAMgAiADawJ/IAAtAAtBB3YEQCAAKAIEDAELIAAtAAtB/wBxCyIAQQAgACACIAEQ7QILCwkAIAAgARDuAgsQACAAENsDIAEQ2wNzQQFzCxAAIAAQ3AMgARDcA3NBAXMLtggCB38BeyMAQTBrIggkAAJAAkACQAJAIAQNAEEAIQQCQCAALQAJDQAgAUEkbCIFQZjqAGooAgAgAykDACAFQZTqAGo0AgB/p2whBiACQQJIDQACQCACQQJGBEBBASEHDAEL/QwAAAAAAQAAAAAAAAAAAAAAIAb9HAAhDCACQQFrIgVBAXIhByAFQX5xIQpBACEGA0AgDCADIAZBA3RBCHJq/QADACAM/Q0AAQIDCAkKCwABAgMAAQID/bUBIQwgBkECaiIGIApHDQALIAwgDCAM/Q0EBQYHAAECAwABAgMAAQID/bUB/RsAIQYgBSAKRg0BCwNAIAYgAyAHQQN0aigCAGwhBiAHQQFqIgcgAkcNAAsLIAAoAiAiBUUNACAGIAAoAhgiBmoiBCAAKAIcIgdLBEAgCCAHNgIoIAggBDYCJCAIQasZNgIgQZzjACAIQSBqEJ8BQQAhBQwCCyAAIAQ2AhggBSAGaiEEQQAhBgsgACgCFCIHBEAgBygCBCAHKAIAaiEJCyAAKAIAIgUgCSAGQesBakF8cSIGaiIKQRRqSQ0BIAAoAgQiCiAJaiIFQQA2AhAgBUIANwIIIAUgBjYCBCAFIAlBFGoiBjYCACAGIApqQQNxDQIgB0EIaiAAQRBqIAcbIAU2AgAgACAFNgIUIAAoAgQiByAGaiEFIARFBEBBACAFQegBaiAALQAJGyEEC0EAIQYgBUEANgIMIAUgAjYCCCAFQQA2AgQgBSABNgIAIAVBwI8B/QAEAP0LAhAgBUEgakHQjwH9AAQA/QsCACAFQTBqQQBB6AD8CwAgBSAENgKYASAFQZwBakEAQcwA/AsAAkAgAkEATA0AAkAgAkEISQ0AIAcgCWogA2tBJGpBEEkNACACQX5xIQZBACEHA0AgBSAHQQN0IgRqIAMgBGr9AAMA/QsDECAHQQJqIgcgBkcNAAsgAiAGRg0BCyAGQX9zIAJqIQsgAiAGa0EDcSIJBEBBACEHA0AgBSAGQQN0IgpqIAMgCmopAwA3AxAgBkEBaiEGIAdBAWoiByAJRw0ACwsgC0ECTQ0AA0AgBUEQaiIHIAZBA3QiBGogAyAEaikDADcDACAHIARBCGoiCWogAyAJaikDADcDACAHIARBEGoiCWogAyAJaikDADcDACAHIARBGGoiBGogAyAEaikDADcDACAGQQRqIgYgAkcNAAsLIAUgAUEkbCIBQZjqAGooAgAiAjYCMCAFIAIgBSkDECABQZTqAGo0AgB/p2wiATYCNCAFIAEgBSgCGGwiATYCOCAFIAEgBSgCIGw2AjwgACAAKAIMQQFqNgIMCyAIQTBqJAAgBQ8LIAggBTYCCCAIIAo2AgQgCEGzDzYCAEHN4gAgCBCfAQALIAhB6jg2AhggCEHHIzYCFCAIQegkNgIQQeinAigCACAIQRBqEDAQAAALCQBBqRMQwQQAC+ECAQR/AkBBpO40/hIAAEEBcQ0AQaTuNBBURQ0AQcDsNBCSBCMAQSBrIgEkAAJAAkADQCABQQhqIgIgAEECdGogAEHiK0Hf6ABBASAAdEH/////B3EbENADIgM2AgAgA0F/Rg0BIABBAWoiAEEGRw0AC0GotQIhACACQai1AkEYEEVFDQFBwLUCIQAgAkHAtQJBGBBFRQ0BQQAhAEH47DQtAABFBEADQCAAQQJ0QcjsNGogAEHf6AAQ0AM2AgAgAEEBaiIAQQZHDQALQfjsNEEBOgAAQeDsNEHI7DQoAgA2AgALQcjsNCEAIAFBCGoiAkHI7DRBGBBFRQ0BQeDsNCEAIAJB4Ow0QRgQRUUNAUEYEEMiAEUNACAAIAEpAgg3AgAgACABKQIYNwIQIAAgASkCEDcCCAwBC0EAIQALIAFBIGokAEHA7DQQywFBoO40IAA2AgBBpO40EFMLQaDuNCgCAAuMKQELf0GY6DQoAgBFBEAQ8QMLAkBB7Os0LQAAQQJxBEBB8Os0EFUNAQsCQAJAIABB9AFNBEBBsOg0KAIAIgFBECAAQQtqQXhxIABBC0kbIgVBA3YiA3YiAkEDcQRAAkAgAkF/c0EBcSADaiIDQQN0IgBB2Og0aiICIABB4Og0aigCACIGKAIIIgBGBEBBsOg0IAFBfiADd3E2AgAMAQsgACACNgIMIAIgADYCCAsgBkEIaiEEIAYgA0EDdCIAQQNyNgIEIAAgBmoiACAAKAIEQQFyNgIEDAMLIAVBuOg0KAIAIgRNDQEgAgRAAkBBAiADdCIAQQAgAGtyIAIgA3RxaCIDQQN0IgBB2Og0aiICIABB4Og0aigCACIKKAIIIgBGBEBBsOg0IAFBfiADd3EiATYCAAwBCyAAIAI2AgwgAiAANgIICyAKIAVBA3I2AgQgBSAKaiICIANBA3QiACAFayIDQQFyNgIEIAAgCmogAzYCACAEBEAgBEF4cUHY6DRqIQVBxOg0KAIAIQYCfyABQQEgBEEDdnQiAHFFBEBBsOg0IAAgAXI2AgAgBQwBCyAFKAIICyEAIAUgBjYCCCAAIAY2AgwgBiAFNgIMIAYgADYCCAsgCkEIaiEEQcToNCACNgIAQbjoNCADNgIADAMLQbToNCgCACIGRQ0BAn8gBmhBAnRB4Oo0aigCACICKAIEQXhxIAVrIQcgAiEAA0ACQCAAKAIQIgFFBEAgACgCFCIBRQ0BCyABKAIEQXhxIAVrIgAgByAAIAdJIgAbIQcgASACIAAbIQIgASEADAELC0EAIAVBAEwNABogAigCGCEKAkAgAiACKAIMIgNHBEBBwOg0KAIAGiACKAIIIgAgAzYCDCADIAA2AggMAQsCQCACQRRqIgAoAgAiAUUEQCACKAIQIgFFDQEgAkEQaiEACwNAIAAhBCABIgNBFGoiACgCACIBDQAgA0EQaiEAIAMoAhAiAQ0ACyAEQQA2AgAMAQtBACEDCwJAIApFDQACQCACKAIcIgFBAnRB4Oo0aiIAKAIAIAJGBEAgACADNgIAIAMNAUG06DQgBkF+IAF3cTYCAAwCCyAKQRBBFCAKKAIQIAJGG2ogAzYCACADRQ0BCyADIAo2AhggAigCECIABEAgAyAANgIQIAAgAzYCGAsgAigCFCIARQ0AIAMgADYCFCAAIAM2AhgLAkAgB0EPTQRAIAIgBSAHaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBUEDcjYCBCACIAVqIgMgB0EBcjYCBCADIAdqIAc2AgBBuOg0KAIAIgAEQCAAQXhxQdjoNGohBkHE6DQoAgAhBAJ/QbDoNCgCACIBQQEgAEEDdnQiAHFFBEBBsOg0IAAgAXI2AgAgBgwBCyAGKAIICyEAIAYgBDYCCCAAIAQ2AgwgBCAGNgIMIAQgADYCCAtBxOg0IAM2AgBBuOg0IAc2AgALIAJBCGoLIgQNAgwBC0F/IQUgAEG/f0sNACAAQQtqIgBBeHEhBUG06DQoAgAiCUUNAEEAIAVrIQQCQAJAAkACf0EAIAVBgAJJDQAaQR8gBUH///8HSw0AGiAFQSYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIKQQJ0QeDqNGooAgAiA0UEQEEAIQAMAQtBACEAIAVBGSAKQQF2a0EAIApBH0cbdCEBA0ACQCADKAIEQXhxIAVrIgYgBE8NACADIQIgBiIEDQBBACEEIAIhAAwDCyAAIAMoAhQiBiAGIAMgAUEddkEEcWooAhAiA0YbIAAgBhshACABQQF0IQEgAw0ACwsgACACckUEQEEAIQJBAiAKdCIAQQAgAGtyIAlxIgBFDQMgAGhBAnRB4Oo0aigCACEACyAARQ0BCwNAIAAoAgRBeHEgBWsiASAESSEDIAEgBCADGyEEIAAgAiADGyECIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIAJFDQAgBEG46DQoAgAgBWtPDQAgAigCGCEKAkAgAiACKAIMIgFHBEBBwOg0KAIAGiACKAIIIgAgATYCDCABIAA2AggMAQsCQCACQRRqIgMoAgAiAEUEQCACKAIQIgBFDQEgAkEQaiEDCwNAIAMhBiAAIgFBFGoiAygCACIADQAgAUEQaiEDIAEoAhAiAA0ACyAGQQA2AgAMAQtBACEBCwJAIApFDQACQCACKAIcIgNBAnRB4Oo0aiIAKAIAIAJGBEAgACABNgIAIAENAUG06DQgCUF+IAN3cSIJNgIADAILIApBEEEUIAooAhAgAkYbaiABNgIAIAFFDQELIAEgCjYCGCACKAIQIgAEQCABIAA2AhAgACABNgIYCyACKAIUIgBFDQAgASAANgIUIAAgATYCGAsCQCAEQQ9NBEAgAiAEIAVqIgBBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQMAQsgAiAFQQNyNgIEIAIgBWoiBiAEQQFyNgIEIAQgBmogBDYCACAEQf8BTQRAIARBeHFB2Og0aiEDAn9BsOg0KAIAIgFBASAEQQN2dCIAcUUEQEGw6DQgACABcjYCACADDAELIAMoAggLIQAgAyAGNgIIIAAgBjYCDCAGIAM2AgwgBiAANgIIDAELQR8hACAEQf///wdNBEAgBEEmIARBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyAGIAA2AhwgBkIANwIQIABBAnRB4Oo0aiEBAkACQCAJQQEgAHQiA3FFBEBBtOg0IAMgCXI2AgAgASAGNgIADAELIARBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBQNAIAUiASgCBEF4cSAERg0CIABBHXYhAyAAQQF0IQAgASADQQRxaiIDKAIQIgUNAAsgAyAGNgIQCyAGIAE2AhggBiAGNgIMIAYgBjYCCAwBCyABKAIIIgAgBjYCDCABIAY2AgggBkEANgIYIAYgATYCDCAGIAA2AggLIAJBCGohBAwBCyAFQbjoNCgCACIATQRAQcToNCgCACECAkAgACAFayIDQRBPBEAgAiAFaiIBIANBAXI2AgQgACACaiADNgIAIAIgBUEDcjYCBAwBCyACIABBA3I2AgQgACACaiIAIAAoAgRBAXI2AgRBACEBQQAhAwtBuOg0IAM2AgBBxOg0IAE2AgAgAkEIaiEEDAELIAVBvOg0KAIAIgBJBEBBvOg0IAAgBWsiATYCAEHI6DRByOg0KAIAIgIgBWoiADYCACAAIAFBAXI2AgQgAiAFQQNyNgIEIAJBCGohBAwBC0EAIQRBmOg0KAIARQRAEPEDC0Gg6DQoAgAiACAFQS9qIgpqQQAgAGtxIgMgBU0NAEHo6zQoAgAiAgRAQeDrNCgCACIBIANqIgAgAU0NASAAIAJLDQELAkACQAJAAkACQAJAAkACQEHs6zQtAABBBHFFBEACQAJAAkACQEHI6DQoAgAiAgRAQYjsNCEAA0AgAiAAKAIAIgFPBEAgASAAKAIEaiACSw0DCyAAKAIIIgANAAsLQaDsNBBVGkEAELsBIgFBf0YNAyADIQJBnOg0KAIAIgRBAWsiACABcQRAIAIgAWsgACABakEAIARrcWohAgsgAiAFTQ0DQejrNCgCACIGBEBB4Os0KAIAIgQgAmoiACAETQ0EIAAgBksNBAsgAhC7ASIAIAFHDQEMBQtBoOw0EFUaQaDoNCgCACIBIApBvOg0KAIAa2pBACABa3EiAhC7ASIBIAAoAgAgACgCBGpGDQEgASEACyAAQX9GDQEgBUEwaiACSwRAQaDoNCgCACIBIAogAmtqQQAgAWtxIgEQuwFBf0YNAiABIAJqIQILIAAhAQwDCyABQX9HDQILQezrNEHs6zQoAgBBBHI2AgBBoOw0EFAaC0Gg7DQQVRogAxC7ASEBQQAQuwEhAEGg7DQQUBogAUF/Rg0CIABBf0YNAiAAIAFNDQIgACABayICIAVBKGpNDQIMAQtBoOw0EFAaC0Hg6zRB4Os0KAIAIAJqIgA2AgBB5Os0KAIAIABJBEBB5Os0IAA2AgALAkACQAJAQcjoNCgCACIIBEBBiOw0IQADQCABIAAoAgAiBCAAKAIEIgNqRg0CIAAoAggiAA0ACwwCC0HA6DQoAgAiAEEAIAAgAU0bRQRAQcDoNCABNgIAC0EAIQBBjOw0IAI2AgBBiOw0IAE2AgBB0Og0QX82AgBB1Og0QZjoNCgCADYCAEGU7DRBADYCAANAIABBA3QiBEHg6DRqIARB2Og0aiIDNgIAIARB5Og0aiADNgIAIABBAWoiAEEgRw0AC0G86DQgAkEoayIDQXggAWtBB3EiAGsiAjYCAEHI6DQgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRBzOg0QajoNCgCADYCAAwCCyABIAhNDQAgBCAISw0AIAAoAgxBCHENACAAIAIgA2o2AgRByOg0IAhBeCAIa0EHcSIAaiIDNgIAQbzoNEG86DQoAgAgAmoiASAAayIANgIAIAMgAEEBcjYCBCABIAhqQSg2AgRBzOg0QajoNCgCADYCAAwBC0HA6DQoAgAgAUsEQEHA6DQgATYCAAsgASACaiEDQYjsNCEAAkACQAJAA0AgAyAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0GI7DQhAANAIAggACgCACIDTwRAIAMgACgCBGoiBiAISw0DCyAAKAIIIQAMAAsACyAAIAE2AgAgACAAKAIEIAJqNgIEIAFBeCABa0EHcWoiCiAFQQNyNgIEIANBeCADa0EHcWoiCSAFIApqIgdrIQAgCCAJRgRAQcjoNCAHNgIAQbzoNEG86DQoAgAgAGoiADYCACAHIABBAXI2AgQMCAtBxOg0KAIAIAlGBEBBxOg0IAc2AgBBuOg0QbjoNCgCACAAaiIANgIAIAcgAEEBcjYCBCAAIAdqIAA2AgAMCAsgCSgCBCIEQQNxQQFHDQYgBEF4cSEGIARB/wFNBEAgCSgCDCICIAkoAggiAUYEQEGw6DRBsOg0KAIAQX4gBEEDdndxNgIADAcLIAEgAjYCDCACIAE2AggMBgsgCSgCGCEFIAkgCSgCDCIBRwRAIAkoAggiAiABNgIMIAEgAjYCCAwFCyAJQRRqIgMoAgAiBEUEQCAJKAIQIgRFDQQgCUEQaiEDCwNAIAMhAiAEIgFBFGoiAygCACIEDQAgAUEQaiEDIAEoAhAiBA0ACyACQQA2AgAMBAtBvOg0IAJBKGsiBEF4IAFrQQdxIgBrIgM2AgBByOg0IAAgAWoiADYCACAAIANBAXI2AgQgASAEakEoNgIEQczoNEGo6DQoAgA2AgAgCCAGQScgBmtBB3FqQS9rIgAgACAIQRBqSRsiA0EbNgIEIANBkOw0KQIANwIQIANBiOw0KQIANwIIQZDsNCADQQhqNgIAQYzsNCACNgIAQYjsNCABNgIAQZTsNEEANgIAIANBGGohAANAIABBBzYCBCAAQQhqIQsgAEEEaiEAIAsgBkkNAAsgAyAIRg0AIAMgAygCBEF+cTYCBCAIIAMgCGsiBEEBcjYCBCADIAQ2AgAgBEH/AU0EQCAEQXhxQdjoNGohAgJ/QbDoNCgCACIBQQEgBEEDdnQiAHFFBEBBsOg0IAAgAXI2AgAgAgwBCyACKAIICyEAIAIgCDYCCCAAIAg2AgwgCCACNgIMIAggADYCCAwBC0EfIQAgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgCCAANgIcIAhCADcCECAAQQJ0QeDqNGohAQJAAkBBtOg0KAIAIgNBASAAdCICcUUEQEG06DQgAiADcjYCACABIAg2AgAMAQsgBEEZIABBAXZrQQAgAEEfRxt0IQAgASgCACECA0AgAiIBKAIEQXhxIARGDQIgAEEddiECIABBAXQhACABIAJBBHFqIgMoAhAiAg0ACyADIAg2AhALIAggATYCGCAIIAg2AgwgCCAINgIIDAELIAEoAggiACAINgIMIAEgCDYCCCAIQQA2AhggCCABNgIMIAggADYCCAtBvOg0KAIAIgAgBU0NAEG86DQgACAFayIBNgIAQcjoNEHI6DQoAgAiAiAFaiIANgIAIAAgAUEBcjYCBCACIAVBA3I2AgQgAkEIaiEEDAYLIwNBHGpBMDYCAEEAIQQMBQtBACEBCyAFRQ0AAkAgCSgCHCIDQQJ0QeDqNGoiAigCACAJRgRAIAIgATYCACABDQFBtOg0QbToNCgCAEF+IAN3cTYCAAwCCyAFQRBBFCAFKAIQIAlGG2ogATYCACABRQ0BCyABIAU2AhggCSgCECICBEAgASACNgIQIAIgATYCGAsgCSgCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAAgBmohACAGIAlqIgkoAgQhBAsgCSAEQX5xNgIEIAcgAEEBcjYCBCAAIAdqIAA2AgAgAEH/AU0EQCAAQXhxQdjoNGohAgJ/QbDoNCgCACIBQQEgAEEDdnQiAHFFBEBBsOg0IAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwBC0EfIQQgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohBAsgByAENgIcIAdCADcCECAEQQJ0QeDqNGohAwJAAkBBtOg0KAIAIgJBASAEdCIBcUUEQEG06DQgASACcjYCACADIAc2AgAgByADNgIYDAELIABBGSAEQQF2a0EAIARBH0cbdCEEIAMoAgAhAQNAIAEiAigCBEF4cSAARg0CIARBHXYhASAEQQF0IQQgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwBCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLIApBCGohBAtB7Os0LQAAQQJxRQ0AQfDrNBBQGgsgBAsGACAAEC8LgQEBAn8CQAJAIAJBBE8EQCAAIAFyQQNxDQEDQCAAKAIAIAEoAgBHDQIgAUEEaiEBIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELA0AgAC0AACIDIAEtAAAiBEYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyADIARrDwtBAAvFCgIFfxF+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhGUIAIQEgGVAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQZUEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQZSAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCAC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LQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrC4oDAgN/AXwjAEEQayIBJAACQCAAvCIDQf////8HcSICQdqfpPoDTQRAIAJBgICAzANJDQEgALsQggEhAAwBCyACQdGn7YMETQRAIAC7IQQgAkHjl9uABE0EQCADQQBIBEAgBEQYLURU+yH5P6AQgwGMIQAMAwsgBEQYLURU+yH5v6AQgwEhAAwCC0QYLURU+yEJwEQYLURU+yEJQCADQQBOGyAEoJoQggEhAAwBCyACQdXjiIcETQRAIAJB39u/hQRNBEAgALshBCADQQBIBEAgBETSITN/fNkSQKAQgwEhAAwDCyAERNIhM3982RLAoBCDAYwhAAwCC0QYLURU+yEZQEQYLURU+yEZwCADQQBIGyAAu6AQggEhAAwBCyACQYCAgPwHTwRAIAAgAJMhAAwBCwJAAkACQAJAIAAgAUEIahCaBEEDcQ4DAAECAwsgASsDCBCCASEADAMLIAErAwgQgwEhAAwCCyABKwMImhCCASEADAELIAErAwgQgwGMIQALIAFBEGokACAAC8EBAQN/IwBBEGsiBSQAAkAgAiAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgQCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiA2tNBEAgAkUNAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgQgA2ogASACEHggACACIANqIgEQmAEgBUEAOgAPIAEgBGogBS0ADzoAAAwBCyAAIAQgAiAEayADaiADIANBACACIAEQwQELIAVBEGokACAACy4BAX8jAEEQayIDJAAgAyACNgIMIABBnAFqQcAAIAEgAhC8ARogA0EQaiQAIAALCgAgAEHE7jQQegsEAEEAC4wCAgJ/AnwgALwiAUGAgID8A0YEQEMAAAAADwsCQCABQYCAgPwHa0H///+HeE0EQCABQQF0IgJFBEAjAEEQayIBQwAAgL84AgwgASoCDEMAAAAAlQ8LIAFBgICA/AdGDQEgAkGAgIB4SSABQQBOcUUEQCAAIACTIgAgAJUPCyAAQwAAAEuUvEGAgIDcAGshAQtB4IQCKwMAIAEgAUGAgMz5A2siAUGAgIB8cWu+uyABQQ92QfABcSICQdiCAmorAwCiRAAAAAAAAPC/oCIDIAOiIgSiQeiEAisDACADokHwhAIrAwCgoCAEoiABQRd1t0HYhAIrAwCiIAJB4IICaisDAKAgA6CgtiEACyAACy0AIAJFBEAgACgCBCABKAIERg8LIAAgAUYEQEEBDwsgACgCBCABKAIEEJ4BRQvhAgIGfwF+IABCADcCBCAAIABBBGoiBTYCACABKAIEIgIEQCABKAIAIgYgAkEDdGohBwNAIAAoAgQhBAJAAkACQCAFIgEgACgCAEYNACABIQICQCAEIgMEQANAIAMiASgCBCIDDQAMAgsACwNAIAIoAggiASgCACACRiEIIAEhAiAIDQALCyAGKAIAIgMgASgCEEoNACAFIgIhASAERQ0BA0AgBCIBKAIQIgIgA0oEQCABIQIgASgCACIEDQEMAwsgAiADTg0DIAEoAgQiBA0ACyABQQRqIQIMAQsgAUEEaiAFIAQbIgIoAgANASABIAUgBBshAQtBGBAxIQMgBikCACEJIAMgATYCCCADQgA3AgAgAyAJNwIQIAIgAzYCACAAKAIAKAIAIgEEQCAAIAE2AgAgAigCACEDCyAAKAIEIAMQlwEgACAAKAIIQQFqNgIICyAGQQhqIgYgB0cNAAsLIAAL1gEBAn8jAEEQayIEJAACQAJAIAJBC0kEQCAAIgMgAC0AC0GAAXEgAnI6AAsgACAALQALQf8AcToACwwBCyACQe////8HSw0BIARBCGogACACQQtPBH8gAkEQakFwcSIDIANBAWsiAyADQQtGGwVBCgtBAWoQugEgBCgCDBogACAEKAIIIgM2AgAgACAAKAIIQYCAgIB4cSAEKAIMQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAI2AgQLIAMgASACQQFqEHggBEEQaiQADwsQSwALUgEBfyABQQFrIgJBEE0EfyACQQJ0QcyNA2ooAgAFQeMgCyECIABB2JkDNgIAIABB3JoDNgIAIABBBGogAhDyAiAAIAE2AgggAEGYhQM2AgAgAAvHCQIEfwZ+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEQgBSDQAgASEDIAIhBAwBCyADIAEgASADVCAJIApWIAkgClEbIggbIQogBCACIAgbIgtC////////P4MhCSACIAQgCBsiAkIwiKdB//8BcSEHIAtCMIinQf//AXEiBUUEQCAGQeAAaiAKIAkgCiAJIAlQIgUbeSAFQQZ0rXynIgVBD2sQZSAGKQNoIQkgBikDYCEKQRAgBWshBQsgASADIAgbIQMgAkL///////8/gyEEIAdFBEAgBkHQAGogAyAEIAMgBCAEUCIHG3kgB0EGdK18pyIHQQ9rEGVBECAHayEHIAYpA1ghBCAGKQNQIQMLIARCA4YgA0I9iIRCgICAgICAgASEIQEgCUIDhiAKQj2IhCEOIAIgC4UhDQJ+IANCA4YiAiAFIAdGDQAaIAUgB2siB0H/AEsEQEIAIQFCAQwBCyAGQUBrIAIgAUGAASAHaxBlIAZBMGogAiABIAcQqAEgBikDOCEBIAYpAzAgBikDQCAGKQNIhEIAUq2ECyEJIA5CgICAgICAgASEIQwgCkIDhiEKAkAgDUIAUwRAQgAhA0IAIQQgCSAKhSABIAyFhFANAiAKIAl9IQIgDCABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5IAdBBnStfKdBDGsiBxBlIAUgB2shBSAGKQMoIQQgBikDICECDAELIAkgCnwiAiAJVK0gASAMfHwiBEKAgICAgICACINQDQAgCUIBgyAEQj+GIAJCAYiEhCECIAVBAWohBSAEQgGIIQQLIAtCgICAgICAgICAf4MhASAFQf//AU4EQCABQoCAgICAgMD//wCEIQRCACEDDAELQQAhBwJAIAVBAEoEQCAFIQcMAQsgBkEQaiACIAQgBUH/AGoQZSAGIAIgBEEBIAVrEKgBIAYpAwAgBikDECAGKQMYhEIAUq2EIQIgBikDCCEECyACp0EHcSIFQQRLrSAEQj2GIAJCA4iEIgJ8IgMgAlStIARCA4hC////////P4MgB61CMIaEIAGEfCEEAkAgBUEERgRAIAQgA0IBgyIBIAN8IgMgAVStfCEEDAELIAVFDQELCyAAIAM3AwAgACAENwMIIAZB8ABqJAALCgAgAEHM7jQQegs4AgN/AX4jAEEQayIAJAAgABDQASAAKQMAIQMgACgCCCECIABBEGokACACQegHbawgA0LAhD1+fAtkACACKAIEQbABcSICQSBGBEAgAQ8LAkAgAkEQRw0AAkACQCAALQAAIgJBK2sOAwABAAELIABBAWoPCyABIABrQQJIDQAgAkEwRw0AIAAtAAFBIHJB+ABHDQAgAEECaiEACyAACz0BAn8CfyAALQALQQd2BEAgACgCAAwBCyAACyEBIwBBEGsiACQAIAAgATYCDCAAKAIMIQIgAEEQaiQAIAILfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAnMgAmsiAq1CACACZyICQdEAahBlIAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQACwwAIAEgAiAAEO8DGguJAgEHfyABIAAoAggiAyAAKAIEIgJrQQJ1TQRAIAAgAQR/IAJBACABQQJ0IgD8CwAgACACagUgAgs2AgQPCwJAIAIgACgCACIFa0ECdSIHIAFqIgRBgICAgARJBEBB/////wMgAyAFayIDQQF1IgggBCAEIAhJGyADQfz///8HTxsiAwRAIANBgICAgARPDQIgA0ECdBAxIQYLIAdBAnQgBmoiBEEAIAFBAnQiAfwLACABIARqIQEgAiAFRwRAA0AgBEEEayIEIAJBBGsiAioCADgCACACIAVHDQALCyAAIAYgA0ECdGo2AgggACABNgIEIAAgBDYCACAFBEAgBRAvCw8LEEEACxBRAAsnACAAKAIAIgAgARBJIgEQlgNFBEAQRwALIAAoAgggAUECdGooAgALjwQBA38gAkGABE8EQCAAIAEgAvwKAAAgAA8LIAAgAmohBAJAIAAgAXNBA3FFBEACfyAAIABBA3FFDQAaIAAgAkUNABogACABIABBf3MiAiAEIABBAWoiAyADIARJG2oiAyACQQNxIgIgAiADSxtBAWoiAvwKAAAgASACaiEBIAAgAmoLIQICQCAEQXxxIgNBwABJDQAgAiADQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiADTw0BIAIgASACQX9zIAMgAkEEaiIFIAMgBUsbakF8cUEEaiID/AoAACABIANqIQEgAiADaiECDAELIARBBEkEQCAAIQIMAQsgACAEQQRrIgNLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIANNDQALCyACIARJBEAgAiABIAQgAmv8CgAACyAAC1ACAn4BfyAAKQMoIgEgADUCPH4iAiAAKAIAQSRsIgNBmOoAajUCACAAKQMgIAApAxggACkDECABfn5+fiADQZTqAGo0AgB/IgEgASACUxunCyAAIwBBEGsiASQAIABCADcCACAAQQA2AgggAUEQaiQAC/ACAQZ/An8jAEFAaiIEJAAgASkDKCABKQMgIAEpAxggASkDEH5+fiACKQMoIAIpAyAgAikDGCACKQMQfn5+UQRAIAJBEGohAwJAIAEoAmhFBEAgAigCaEUNAQtBASEGCyAAIAIoAgAgAigCCCADIAIoApgBEEAhCCAEIAJBnAFqIgc2AiAgCEGlwwAgBEEgahBqIgMgAigCMDYCMCADIAIoAjQ2AjQgAyACKAI4NgI4IAMgAigCPDYCPCABQZwBaiEFAkAgAi0AnAEEQCAEIAU2AhQgBCAHNgIQIANBy8sAIARBEGoQahoMAQsgBCAFNgIAIANBm8MAIAQQahoLIANBGzYCQEEAIQUgBgRAIAAgAygCACADKAIIIANBEGpBABBAIQULIAMgATYCbCADIAU2AmggAyACNgJwIARBQGskACADDAELIARB2c0ANgI4IARB3i82AjQgBEHoJDYCMEHopwIoAgAgBEEwahAwEAAACwsSACAAKAIAIgAEQCAAEMwDGgsLEQAgACABKAIAEMwDNgIAIAALRwECfyAAIAE3A3AgACAAKAIsIAAoAgQiA2usNwN4IAAoAgghAgJAIAFQDQAgAiADa6wgAVcNACADIAGnaiECCyAAIAI2AmgLSwECfCAAIACiIgEgAKIiAiABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAUSy+26JEBGBP6JEd6zLVFVVxb+goiAAoKC2C08BAXwgACAAoiIAIAAgAKIiAaIgAERpUO7gQpP5PqJEJx4P6IfAVr+goiABREI6BeFTVaU/oiAARIFeDP3//9+/okQAAAAAAADwP6CgoLYLdgEBfyMAQRBrIgIkACAALQALQQd2BEAgACAAKAIAIAAoAghB/////wdxENcBCyAAIAEoAgg2AgggACABKQIANwIAIAEgAS0AC0GAAXE6AAsgASABLQALQf8AcToACyACQQA2AgwgASACKAIMNgIAIAJBEGokAAuyAgEEfyMAQRBrIgckACAHIAE2AgxBACEBQQYhBQJAAkAgACAHQQxqED4NAEEEIQUgA0HAAAJ/IAAoAgAiBigCDCIIIAYoAhBGBEAgBiAGKAIAKAIkEQEADAELIAgoAgALIgYgAygCACgCDBEDAEUNACADIAZBACADKAIAKAI0EQMAIQEDQAJAIAAQXBogAUEwayEBIAAgB0EMahA+DQAgBEECSA0AIANBwAACfyAAKAIAIgUoAgwiBiAFKAIQRgRAIAUgBSgCACgCJBEBAAwBCyAGKAIACyIFIAMoAgAoAgwRAwBFDQMgBEEBayEEIAMgBUEAIAMoAgAoAjQRAwAgAUEKbGohAQwBCwtBAiEFIAAgB0EMahA+RQ0BCyACIAIoAgAgBXI2AgALIAdBEGokACABC9gCAQR/IwBBEGsiByQAIAcgATYCDEEAIQFBBiEFAkACQCAAIAdBDGoQPw0AQQQhBQJ/IAAoAgAiBigCDCIIIAYoAhBGBEAgBiAGKAIAKAIkEQEADAELIAgtAAAL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IAVBf3MgAmohDCACIAVrQQNxIgQEQEEAIQEDQCADQQFrIgMgAkEBayICLQAAOgAAIAFBAWoiASAERw0ACwsgDEEDSQ0AA0AgA0EBayACQQFrLQAAOgAAIANBAmsgAkECay0AADoAACADQQNrIAJBA2stAAA6AAAgA0EEayIDIAJBBGsiAi0AADoAACACIAVHDQALCyAAKAIAIQILIAAgCDYCCCAAIAk2AgQgACAHNgIAIAIEQCACEC8LDwsQQQALHwBBCBBhIAAQ8QIiAEHAmwM2AgAgAEHgmwNBBxACAAuUBAEEfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBEUNACAELQAMDQAMAgsCQCABIAIoAgBGBEAgAiEBDAELIAIgAigCBCIBKAIAIgA2AgQgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQILIAFBAToADCADQQA6AAwgAyACKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIINgIIIAMoAggiACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCwJAIARFDQAgBC0ADA0ADAELAkAgASACKAIARwRAIAIhAQwBCyACIAEoAgQiADYCACABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIEIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIEIgAoAgAiATYCBCABBEAgASADNgIICyAAIAMoAgg2AgggAygCCCIBIAEoAgAgA0dBAnRqIAA2AgAgACADNgIAIAMgADYCCAwCCyAEQQxqIQUgAkEBOgAMIAMgACADRjoADCAFQQE6AAAgAyIBIABHDQALCws0ACAALQALQQd2BEAgACABNgIEDwsgACAALQALQYABcSABcjoACyAAIAAtAAtB/wBxOgALCwwAIABBgoaAIDYAAAtfAQJ/An8gAC0AC0EHdgRAIAAoAgAMAQsgAAsCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQtBAnRqIQEjAEEQayIAJAAgACAB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IAZB/////wNPGyIEBH8gBBAxBUEACyIFaiIDIAE6AAAgBCAFaiEIIANBAWohCQJAIAIgB0YEQCADIQUMAQsCQAJAIAZBEEkNACAHIAIgBWprIAJqQRBJDQAgA0EQayEKIAJBEGshCyACIAZBcHEiBGshAiADIARrIQNBACEBA0AgCiABayALIAFr/QAAAP0LAAAgAUEQaiIBIARHDQALIAQgBkYNAQsgB0F/cyACaiEOIAIgB2tBA3EiBARAQQAhAQNAIANBAWsiAyACQQFrIgItAAA6AAAgAUEBaiIBIARHDQALCyAOQQNJDQADQCADQQFrIAJBAWstAAA6AAAgA0ECayACQQJrLQAAOgAAIANBA2sgAkEDay0AADoAACADQQRrIgMgAkEEayICLQAAOgAAIAIgB0cNAAsLIAAoAhQhAgsgACAINgIcIAAgCTYCGCAAIAU2AhQgAkUNAQsgAhAvCw8LEEEACxBBAAsgAiABOgAAIAAgAkEBajYCGAsTACABQQF0QcCOA2pBAiAAEO8DC3YBAX8jAEEQayICJAAgAiAANgIMAkAgACABRg0AA0AgAiABQQFrIgE2AgggACABTw0BIAIoAgwiAC0AACEBIAAgAigCCCIALQAAOgAAIAAgAToAACACIAIoAgxBAWoiADYCDCACKAIIIQEMAAsACyACQRBqJAALlgQBBn8jAEHQAGsiAyQAIABBiIADaiEFIAFB0cAAcCIGIQICQANAIAUgAkECdGoiBygCACIERQ0BIAEgBEYNASACQQFqIgJBACACQdHAAEcbIgIgBkcNAAsgA0GrHzYCSCADQeGCATYCRCADQegkNgJAQeinAigCACADQUBrEDAQAAALAkACQAJAIAEgBEYNACAHIAE2AgAgASgCbCICBEAgACACEKUBCyABKAJwIgIEQCAAIAIQpQELIAEoAnQiAgRAIAAgAhClAQsgASgCeCICBEAgACACEKUBCyABKAJ8IgIEQCAAIAIQpQELIAEoAoABIgIEQCAAIAIQpQELAkAgASgCQA0AIAEoAmgNACAAKAIEIgJBgCBODQIgAS0AnAFFBEAgAyACNgIAIAFBhyQgAxBqGiAAKAIEIQILIAAgAkECdGpBiIACaiABNgIAIAAgAkEBajYCBAwBCyAAKAIAIgJBgCBODQIgAS0AnAFFBEAgAyACNgIgIAFBjyQgA0EgahBqGiAAKAIAIQILIAAgAkECdGoiBCABNgIIIARBiIABaiABKAJoNgIAIAAgAkEBajYCAAsgA0HQAGokAA8LIANBzyk2AhggA0GEgwE2AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAACyADQfApNgI4IANBjYMBNgI0IANB6CQ2AjBB6KcCKAIAIANBMGoQMBAAAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEBBfyEEIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPC0F/IQQgACACViABIANVIAEgA1EbDQAgACAChSABIAOFhEIAUiEECyAECx8BAX8jAEEQayICJAAgACABIAEQZxDwAiACQRBqJAALUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F04bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhMG0GSD2ohAQsgACABQf8Haq1CNIa/oguoAQEBfyMAQSBrIgMkAAJAIAEoAmhFBEAgACABKAIAIAEoAgggAUEQakEAEEAiAEUNASAAIAE2AmwgAEEANgJoIABBEzYCQCAAIAI4AkQgA0EgaiQAIAAPCyADQasfNgIYIANBoC02AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAACyADQdkqNgIIIANBpiQ2AgQgA0HoJDYCAEHopwIoAgAgAxAwEAAAC8ECAgN/Bn4jAEEwayIDJAACfwJAAkAgAikDECABKQMQUg0AIAEpAxgiBiACKQMYIgeBQgBSDQAgASkDICIIIAIpAyAi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An8CQCABKwMgIgogACsDIGRFBEBBACAJIApkRQ0CGiADIAEtAAg6ADggAyABKQMANwMwIAEoAhQhBSABKAIQIQYgAUIANwMQIAEoAhghByABQQA2AhggAyABKAJENgIoIAMgASkCPDcDICADIAH9AAIs/QsDECADIAH9AAIc/QsDACABIAIpAwA3AwAgASACLQAIOgAIIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAJBADYCECACQQA2AhggASACKAJENgJEIAEgAikCPDcCPCABIAL9AAIs/QsCLCABIAL9AAIc/QsCHCACIAMpAzA3AwAgAiADLQA4OgAIIAIoAhAiBARAIAIgBDYCFCAEEC8LIAIgBzYCGCACIAU2AhQgAiAGNgIQIAIgAygCKDYCRCACIAMpAyA3AjwgAiAD/QADEP0LAiwgAiAD/QADAP0LAhxBASABKwMgIAArAyBkRQ0CGiADIAAtAAg6ADggAyAAKQMANwMwIAAoAhQhAiAAKAIQIQQgAEIANwMQIAAoAhghBSAAQQA2AhggAyAAKAJENgIoIAMgACkCPDcDICADIAD9AAIs/QsDECADIAD9AAIc/QsDACAAIAEpAwA3AwAgACABLQAIOgAIIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAFBADYCECABQQA2AhggACABKAJENgJEIAAgASkCPDcCPCAAIAH9AAIs/QsCLCAAIAH9AAIc/QsCHCABIAMtADg6AAggASADKQMwNwMAIAEoAhAiAARAIAEgADYCFCAAEC8LIAEgBTYCGCABIAI2AhQgASAENgIQIAEgAygCKDYCRCABIAMpAyA3AjwgASAD/QADEP0LAiwgASAD/QADAP0LAhwMAQsgCSAKZARAIAMgAC0ACDoAOCADIAApAwA3AzAgACgCECEBIAAoAhQhBCAAQgA3AxAgACgCGCEFIABBADYCGCADIAAoAkQ2AiggAyAAKQI8NwMgIAMgAP0AAiz9CwMQIAMgAP0AAhz9CwMAIAAgAi0ACDoACCAAIAIpAwA3AwAgACACKAIQNgIQIAAgAigCFDYCFCAAIAIoAhg2AhggAkEANgIQIAJBADYCGCAAIAIoAkQ2AkQgACACKQI8NwI8IAAgAv0AAiz9CwIsIAAgAv0AAhz9CwIcIAIgAykDMDcD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BCADUg0ACyADIgIgB1ENAQsDQCA/IAKnQQJ0aiC5ATgCACACQgF8IgIgB1INAAsLIAlCAXwiCSAGUg0ACwwBCwNAIAAgCacgTmxBAnRqIT9CACEEQgAhAgJAIAdCBFoEQANAID8gBKdBAnRq/Qz//3////9/////f////3///QsCACAEQgR8IgQgA1INAAsgAyICIAdRDQELA0AgPyACp0ECdGpB////ezYCACACQgF8IgIgB1INAAsLIAlCAXwiCSAGUg0ACwsgACABaiEAIDwgPmoiPCBKSQ0ACwwCCyA+KAI4IT4CQAJAIEAOAgEAAwsgB0J8gyEDQwAAAAAgugGVIrkB/RMhyQEDQEIAIQkDQCAAIAmnIE5sQQJ0aiEBQgAhBEIAIQICQCAHQgRaBEADQCABIASnQQJ0aiDJAf0LAgAgBEIEfCIEIANSDQALIAMiAiAHUQ0BCwNAIAEgAqdBAnRqILkBOAIAIAJCAXwiAiAHUg0ACwsgCUIBfCIJIAZSDQALIAAgS0ECdGohACA8ID5qIjwgSkkNAAsMAgsgB0J8gyEDA0BCACEJA0AgACAJpyBObEECdGohAUIAIQRCACECAkAgB0IEWgRAA0AgASAEp0ECdGr9DP//f////3////9/////f//9CwIAIARCBHwiBCADUg0ACyADIgIgB1ENAQsDQCABIAKnQQJ0akH///97NgIAIAJCAXwiAiAHUg0ACwsgCUIBfCIJIAZSDQALIAAgS0ECdGohACA8ID5qIjwgSkkNAAsMAQsgPigCOCE+AkACQCBADgIBAAILIAdCfIMhA0MAAAAAILoBlSK5Af0TIckBA0BCACEJA0AgACAJpyBObEECdGohAUIAIQRCACECAkAgB0IEWgRAA0AgASAEp0ECdGogyQH9CwIAIARCBHwiBCADUg0ACyADIgIgB1ENAQsDQCABIAKnQQJ0aiC5ATgCACACQgF8IgIgB1INAAsLIAlCAXwiCSAGUg0ACyAAIEtBAnRqIQAgPCA+aiI8IEpJDQALDAELIAdCfIMhAwNAQgAhCQNAIAAgCacgTmxBAnRqIQFCACEEQgAhAgJAIAdCBFoEQANAIAEgBKdBAnRq/Qz//3////9/////f////3///QsCACAEQgR8IgQgA1INAAsgAyICIAdRDQELA0AgASACp0ECdGpB////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AAAAAAAAAAAA/QsACyAB/QwAAAAAAAAAAAAAAAAAAAAA/QsAGyABQgA3ACggAkUNASACQQNxDQILQQBBAf4lAvC5NBogA0FAayQAIAEPCyADQegqNgIIIANBuiI2AgQgA0HoJDYCAEHopwIoAgAgAxAwEAAACyADQak5NgIYIANBvCI2AhQgA0HoJDYCEEHopwIoAgAgA0EQahAwEAAAC0kBAn8gACgCBCIFQQh1IQYgACgCACIAIAEgBUEBcQR/IAYgAigCAGooAgAFIAYLIAJqIANBAiAFQQJxGyAEIAAoAgAoAhgRCwALewEBfyMAQRBrIgMkAAJAIAJBCk0EQCAAIAAtAAtBgAFxIAJyOgALIAAgAC0AC0H/AHE6AAsgACABIAIQeCADQQA6AA8gACACaiADLQAPOgAADAELIABBCiACQQprIAAtAAtB/wBxIgBBACAAIAIgARDBAQsgA0EQaiQAC3gBAn8jAEEQayIEJAACQCACIAAoAghB/////wdxIgNJBEAgACgCACEDIAAgAjYCBCADIAEgAhB4IARBADoADyACIANqIAQtAA86AAAMAQsgACADQQFrIAIgA2tBAWogACgCBCIAQQAgACACIAEQwQELIARBEGokAAsJACAAIAEQhAMLBABBBAukAQEBfwJAQbzuNP4SAABBAXENAEG87jQQVEUNAAJAQbDuNP4SAABBAXENAEGw7jQQVEUNABC8BUGo7jRBmPs0NgIAQazuNEGo7jQ2AgBBsO40EFMLQbTuNEGs7jQoAgAoAgAiATYCACABQQRqQQH+HgIAGkG47jRBtO40NgIAQbzuNBBTCyAAQbjuNCgCACgCACIBNgIAIAFBBGpBAf4eAgAaIAALRwEBfyMAQRBrIgIkAAJAIAEtAAtBB3ZFBEAgACABKAIINgIIIAAgASkCADcCAAwBCyAAIAEoAgAgASgCBBBwCyACQRBqJAALCABB/////wcLBQBB/wALdgEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCIAKAIAIQEgACACKAIIIgAoAgA2AgAgACABNgIAIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAv2BAEIfyMAQRBrIgskACAGEGshCSALQQRqIgcgBhC1ASII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ADAgAiABKQIoNwIoIAQgA0E0bGohAyACQTRqIQUgACgCBCIBIAAoAgAiBEYNAgNAIAJBNGsiAiABQTRrIgH9AAIA/QsCACACQQA2AhggAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAUEANgIYIAFCADcCECACQQA2AiQgAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAUEANgIkIAFCADcCHCACIAEtADA6ADAgAiABKQIoNwIoIAEgBEcNAAsgACADNgIIIAAoAgQhAyAAIAU2AgQgACgCACEBIAAgAjYCACABIANGDQMDQCADQTRrIgAoAhwiAgRAIANBFGsgAjYCACACEC8LIANBJGsoAgAiAgRAIANBIGsgAjYCACACEC8LIAAiAyABRw0ACwwDCxBBAAsQUQALIAAgAzYCCCAAIAU2AgQgACACNgIACyABBEAgARAvCwupBQEIfyABIAAoAggiAyAAKAIAIgRrQQxtTQRAAkAgACgCBCIFIARrQQxtIgggASABIAhLGyIHRQ0AIAQhAyAHIQYgB0EDcSIJBEADQCADIAIoAgA2AgAgAyACKAIENgIEIAMgAi0ACDoACCAGQQFrIQYgA0EMaiEDIApBAWoiCiAJRw0ACwsgB0EESQ0AA0AgAyACKAIANgIAIAMgAigCBDYCBCADIAItAAg6AAggAyACKAIANgIMIAMgAigCBDYCECADIAItAAg6ABQgAyACKAIANgIYIAMgAigCBDYCHCADIAItAAg6ACAgAyACKAIANgIkIAMgAigCBDYCKCADIAItAAg6ACwgA0EwaiEDIAZBBGsiBg0ACwsgASAISwRAIAUgASAIa0EMbGohAQNAIAUgAikCADcCACAFIAIoAgg2AgggBUEMaiIFIAFHDQALIAAgATYCBA8LIAAgBCABQQxsajYCBA8LIAQEQCAAIAQ2AgQgBBAvIABBADYCCCAAQgA3AgBBACEDCwJAIAFB1qrVqgFPDQBB1arVqgEgA0EMbSIDQQF0IgQgASABIARJGyADQarVqtUATxsiA0HWqtWqAU8NACAAIANBDGwiAxAxIgQ2AgQgACAENgIAIAAgAyAEajYCCCAEIQMgAUEMbCIBQQxrIgZBDG5BAWpBA3EiBwRAA0AgAyACKQIANwIAIAMgAigCCDYCCCADQQxqIQMgBUEBaiIFIAdHDQALCyABIARqIQEgBkEkTwRAA0AgAyACKQIANwIAIAMgAigCCDYCCCADIAIoAgg2AhQgAyACKQIANwIMIAMgAigCCDYCICADIAIpAgA3AhggAyACKQIANwIkIAMgAigCCDYCLCADQTBqIgMgAUcNAAsLIAAgATYCBA8LEEEACxMAQQwQYUEGEHFBwI0DQSsQAgALAgAL/QcBB38gACgCECEHIAAoAiQhCAJAIAIgASIDRg0AAkACQCADLAAAIgRBJGsOWQIBAQECAAICAQECAQEBAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAQsgACgCGA0BCyAAIAQQWCADQQFqIQMLAkACQAJAAkACQCABIANHDQACfwJAIAIgASIDRg0AIANBAWoiBSACRg0AIAMtAABB3ABHDQACQAJAIAUsAAAiBEEkaw5aAAEBAQAAAAABAQABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQsgACAEEFggA0ECagwCCyAAKAIMQfAHcUHAAEYEQCAAIAUgAkEAEMUCDAILIANBAkEAAn9BACEFAkACQCAEQXhxQTBHIARB/gFxQThHcQ0AIARB/wFxIgRBMWtBCEsNACAEQTBrIgQgACgCEEsNASAAIAQQyAJBASEFCyAFDAELEPUBAAsbaiEDCyADCyIDIAFHDQACQCABIAJGDQAgAS0AAEEuRw0AQQgQMSEDIAAoAiQiBCgCBCEFIANB9J8BNgIAIAMgBTYCBCAEIAM2AgQMAgsgACABIAIQ0AIhAwsCQAJAIAEgA0cNACACIANGDQACQAJAIAEsAAAiA0Ekaw4FAwYGBgEACyADQd4ARw0FQQwQMSEDIAAoAgwhBCAAKAIkIgUoAgQhBiADQcSUATYCACADIAY2AgQgAyAEQfAPcUGADEY6AAggBSADNgIEDAMLAkAgAC0ADEECcQRAIAAoAhAhBAwBC0EMEDEhAyAAIAAoAhBBAWoiBDYCECAAKAIkIgUoAgQhBiADIAQ2AgggA0GQnAE2AgAgAyAGNgIEIAUgAzYCBCAAIAAoAiQoAgQ2AiQLIAAgACgCGEEBajYCGCAAIAFBAWogAhD8ASIFIAJGDQUgBS0AAEEpRw0FIAAtAAxBAnFFBEBBDBAxIQMgACgCJCIGKAIEIQkgAyAENgIIIANB4JwBNgIAIAMgCTYCBCAGIAM2AgQgACAAKAIkKAIENgIkCyAAIAAoAhhBAWs2AhggBUEBaiEDCyABIANHDQIMAwtBDBAxIQMgACgCDCEEIAAoAiQiBSgCBCEGIANBjJUBNgIAIAMgBjYCBCADIARB8A9xQYAMRjoACCAFIAM2AgQLIAAgACgCJCgCBDYCJCABQQFqIQMLIAAgAyACIAggB0EBaiAAKAIQQQFqENECIQELIAEPCxD5AQALsQIBBH8gACgCJCEGAkAgACABIAIQ+wEiAyABRg0AA0AgACADIgQgAhD7ASIDIARHDQALIAEgBEYNACACIARHBEADQCAELQAAQfwARwRAIAQPCyAAKAIkIQUgACAEQQFqIgEgAhD7ASIDIAFGDQIDQCAAIAMiBCACEPsBIgMgBEcNAAsgASAERg0CQQwQMSEDIAYoAgQhASADIAUoAgQ2AgggAyABNgIEIANB7J4BNgIAIAYgAzYCBCAFQQA2AgRBCBAxIQMgACgCJCgCBCEBIANBmJMBNgIAIAMgATYCBCAFIAM2AgQgACgCJEEANgIEQQgQMSEDIAUoAgQhASADQayfATYCACADIAE2AgQgACgCJCADNgIEIAAgBSgCBDYCJCACIARHDQALCyACDwsQsAQAC/ABAgR/AX4jAEFAaiICJAAgAiABQsD8FX8iBj4CACACIAZCgKOkfn4gAUIKfnwiAULg1AN/IgY+AgQgAiAGQqCrfH4gAXwiAULoB38iBj4CCCACIAZCmPj//w9+IAF8PgIQIAJBrcIANgIMIAJBIGoiBEEgQfIjIAIQtAIaIAQQZyIDQfD///8HSQRAAkAgA0EKTQRAIAAgAzoACwwBCyADQQ9yQQFqIgUQMSEEIAAgBUGAgICAeHI2AgggACAENgIAIAAgAzYCBCAEIQALIAAgAkEgaiAD/AoAACAAIANqQQA6AAAgAkFAayQADwsQSwAL3AEBBn8CQAJAIAAoAgQiAEUNACABKAIAIAEgAS0ACyICwEEASCIDGyEFIAEoAgQgAiADGyEBA0ACQAJAAkACQAJAIAAoAhQgAC0AGyICIALAQQBIIgQbIgIgASABIAJLIgYbIgMEQCAFIAAoAhAgAEEQaiAEGyIEIAMQRSIHRQRAIAEgAkkNAgwDCyAHQQBODQIMAQsgASACTw0CCyAAKAIAIgANBAwFCyAEIAUgAxBFIgINAQsgBg0BDAQLIAJBAE4NAwsgACgCBCIADQALC0GIIhCWAQALIABBHGoLMQAgAQRAIAAgASgCABD/ASAAIAEoAgQQ/wEgASwAG0EASARAIAEoAhAQLwsgARAvCwsxACABBEAgACABKAIAEIACIAAgASgCBBCAAiABLAAbQQBIBEAgASgCEBAvCyABEC8LCzEAIAEEQCAAIAEoAgAQgQIgACABKAIEEIECIAEsAB9BAEgEQCABKAIUEC8LIAEQLwsLzwcBBH8gACgClCkiAQRAIABBmClqIAE2AgAgARAvCyAALAD7KEEASARAIAAoAvAoEC8LIAAoApwVIgEEQCAAQaAVaiABNgIAIAEQLwsgACgCkBUiAQRAIABBlBVqIAE2AgAgARAvCyAAKAKEFSIDBEAgAEGIFWooAgAiASADIgJHBEADQCABQTBrIgIoAhwiBARAIAFBEGsgBDYCACAEEC8LIAFBFWssAABBAEgEQCABQSBrKAIAEC8LIAIiASADRw0ACyAAKAKEFSECCyAAIAM2AogVIAIQLwsgACgC+BQiAQRAIABB/BRqIAE2AgAgARAvCyAAQagUaigCACIBBEAgAEGsFGogATYCACABEC8LIABBnBRqKAIAIgEEQCAAQaAUaiABNgIAIAEQLwsgAEGQFGooAgAiAQRAIABBlBRqIAE2AgAgARAvCyAAQYQUaigCACIBBEAgAEGIFGogATYCACABEC8LIABB+BNqKAIAIgEEQCAAQfwTaiABNgIAIAEQLwsgAEHsE2ooAgAiAQRAIABB8BNqIAE2AgAgARAvCyAAQeATaigCACIBBEAgAEHkE2ogATYCACABEC8LIABB1BNqKAIAIgEEQCAAQdgTaiABNgIAIAEQLwsgAEHIE2ooAgAiAQRAIABBzBNqIAE2AgAgARAvCyAAQbwTaigCACIBBEAgAEHAE2ogATYCACABEC8LIABBsBNqKAIAIgEEQCAAQbQTaiABNgIAIAEQLwsgAEGkE2ooAgAiAQRAIABBqBNqIAE2AgAgARAvCyAAQZgTaigCACIBBEAgAEGcE2ogATYCACABEC8LIABBjBNqKAIAIgEEQCAAQZATaiABNgIAIAEQLwsgAEGAE2ooAgAiAQRAIABBhBNqIAE2AgAgARAvCyAAKAL0EiIBBEAgAEH4EmogATYCACABEC8LIAAoAugSIgEEQCAAQewSaiABNgIAIAEQLwsgAEHoEmohASAAQegAaiEEA0AgAUGQAWsiAygChAEiAgRAIAFBCGsgAjYCACACEC8LIAFBGGsoAgAiAgRAIAFBFGsgAjYCACACEC8LIAFBJGsoAgAiAgRAIAFBIGsgAjYCACACEC8LIAFBMGsoAgAiAgRAIAFBLGsgAjYCACACEC8LIAFB8ABrKAIAIgIEQCABQewAayACNgIAIAIQLwsgAUGEAWsoAgAiAgRAIAFBgAFrIAI2AgAgAhAvCyADIgEgBEcNAAsgACgCXCIBBEAgACABNgJgIAEQLwsgAEFAaygCACIBBEAgACABNgJEIAEQLwsgAAsrACABBEAgACABKAIAEIMCIAAgASgCBBCDAiABQRRqIAEoAhgQUiABEC8LCxUAIABB3JoDNgIAIABBBGoQ4AIgAAsMACAAEOECGiAAEC8LSwECfyAAKAIEIgZBCHUhByAAKAIAIgAgASACIAZBAXEEfyAHIAMoAgBqKAIABSAHCyADaiAEQQIgBkECcRsgBSAAKAIAKAIUEQwAC5oBACAAQQE6ADUCQCAAKAIEIAJHDQAgAEEBOgA0AkAgACgCECICRQRAIABBATYCJCAAIAM2AhggACABNgIQIANBAUcNAiAAKAIwQQFGDQEMAgsgASACRgRAIAAoAhgiAkECRgRAIAAgAzYCGCADIQILIAAoAjBBAUcNAiACQQFGDQEMAgsgACAAKAIkQQFqNgIkCyAAQQE6ADYLC10BAX8gACgCECIDRQRAIABBATYCJCAAIAI2AhggACABNgIQDwsCQCABIANGBEAgACgCGEECRw0BIAAgAjYCGA8LIABBAToANiAAQQI2AhggACAAKAIkQQFqNgIkCwtDACABBEAgACABKAIAEIkCIAAgASgCBBCJAiABLAArQQBIBEAgASgCIBAvCyABLAAbQQBIBEAgASgCEBAvCyABEC8LC5oBAQJ/An9BuJEDLgEAIgFFBEAjA0EcakEcNgIAQX8MAQsCQAJAIAFBfkoNAEHpoAwhAAJAAkACQAJAAkACQAJAIAFB/wFxQQFrDgsIAAECAwQEBQUGAwcLQYCACAwIC0GAgAIMBwtBgIAEDAYLQf////8HDAULEBkMBAsQGEEQdgwDC0EADAILIAEhAAsgAAsiAEEAIABBAEobCx0AIAAgAUHAhD1uIgAQowEgASAAQcCEPWxrEIwCCx0AIAAgAUGQzgBuIgAQowEgASAAQZDOAGxrEI0CCxsAIAAgAUHkAG4iABCjASABIABB5ABsaxCjAQv7AQEDfyMAQRBrIgIkACACIAE2AgwCQAJAAn8gAC0ACyIDQQd2IgRFBEBBASEBIANB/wBxDAELIAAoAghB/////wdxQQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARDsAgJ/IAAtAAtBB3YEQCAAKAIADAELQQALGgwBCwJ/IAAtAAtBB3YEQCAAKAIADAELQQALGiAEDQAgACIBIANBAWogAC0AC0GAAXFyOgALIAAgAC0AC0H/AHE6AAsMAQsgACgCACEBIAAgA0EBajYCBAsgASADQQJ0aiIAIAIoAgw2AgAgAkEANgIIIAAgAigCCDYCBCACQRBqJAAL+AEBA38jAEEQayICJAAgAiABOgAPAkACQAJ/IAAtAAsiA0EHdiIERQRAQQohASADQf8AcQwBCyAAKAIIQf////8HcUEBayEBIAAoAgQLIgMgAUYEQCAAIAFBASABIAEQkgICfyAALQALQQd2BEAgACgCAAwBC0EACxoMAQsCfyAALQALQQd2BEAgACgCAAwBC0EACxogBA0AIAAiASADQQFqIAAtAAtBgAFxcjoACyAAIAAtAAtB/wBxOgALDAELIAAoAgAhASAAIANBAWo2AgQLIAEgA2oiACACLQAPOgAAIAJBADoADiAAIAItAA46AAEgAkEQaiQAC4gBAQF/IAAtAAtBB3YEfyAAKAIIQf////8HcUEBawVBCgsiAyACTwRAAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsiAyABIAL8CgAAIAAgAyACEIUDDwsgACADIAIgA2sCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiAEEAIAAgAiABEMEBCz0BAX8jAEEQayIDJAAgAyACOgAPA0AgAQRAIAAgAy0ADzoAACABQQFrIQEgAEEBaiEADAELCyADQRBqJAALwwIBBX8jAEEQayIFJAAgAkHv////ByABa00EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQYgBUEEaiIHIAAgAUHn////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIwBBEGsiAiQAIAcoAgAgBUEMaiIIKAIASSEJIAJBEGokACAIIAcgCRsoAgAiAkELTwR/IAJBEGpBcHEiAiACQQFrIgIgAkELRhsFQQoLQQFqBUHv////BwsQugEgBSgCBCECIAUoAggaIAQEQCACIAYgBBB4CyADIARHBEAgAiAEaiAEIAZqIAMgBGsQeAsgAUEBaiIBQQtHBEAgACAGIAEQ5AELIAAgAjYCACAAIAAoAghBgICAgHhxIAUoAghB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAVBEGokAA8LEEsACzAAIAAoAgBFBEAgAEF/EIMEDwsgACgCDARAIABBCGoiAEEB/h4CABogABDuAQtBAAsNACAAIAEgAkJ/EMsDC5BFBBd+F38EewF9IwBBkAFrIiIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIwIh4gASgCACIbQSRsIhpBmOoAaigCAEciJA0AIAE1AjQiAyABKQMQIB6tfiAaQZTqAGo0AgB/Ug0AIAE1AjgiBiABKQMYIAN+Ug0AIAE1AjwgASkDICAGflINACACKAIwIhogAigCACIcQSRsIh1BmOoAaigCAEcNACACNQI0IgMgAikDECAarX4gHUGU6gBqNAIAf1INACACNQI4IgYgAikDGCADflINACAbIBxHDQAgAjUCPCACKQMgIAZ+UQ0BCwJAAkACQCAbDgICAAELIAIpAygiEiACKQMgIg8gAikDGCIQIAIpAxAiC35+fiABKQMoIg0gASkDICIKIAEpAxgiDiABKQMQIgh+fn5RBEACQCAAKAIADgMNAA0ACyACKAI8ISEgAigCOCEgIAIoAjQhIyABKAI8ISggASgCOCEpIAEoAjQhJSAAKAIIIRsgACgCBCEmIAIoAjAhGgJAICQNACAlrSIDIAggHq1+Ug0AICmtIgYgAyAOflINACAorSAGIAp+Ug0AIBogAigCACIcQSRsIh1BmOoAaigCAEcNACAjrSIDIAsgGq1+IB1BlOoAajQCAH9SDQAgIK0iBiADIBB+Ug0AICGtIAYgD35SDQAgHEEBRg0ECyAOpyIcIBtqQQFrIBttIicgJmwiGyAnaiIdIBwgHCAdShshHSACKAIAIR8CQCAkDQAgCCALUg0AIB9BAUcNACAaIB5HDQAgDUIAVw0NIApCAFcNDSAbIB1ODQ0gHiALp2whACAdrCEMIBusIQYDQCAoIAWnIhtsIRogGyAhbCEbQgAhBwNAICkgB6ciHGwhHiAcICBsIRwgBiEDA0AgAigCmAEgIyADpyIdbGogHGogG2ogASgCmAEgHSAlbGogHmogGmogAPwKAAAgA0IBfCIDIAxSDQALIAdCAXwiByAKUg0ACyAFQgF8IgUgDVINAAsMDQsgGiAfQSRsIiRBmOoAaigCAEcNCCAjrSIDIAsgGq1+ICRBlOoAajQCACIGf1INCCAgrSIMIAMgEH5SDQggIa0gDCAPflINCCAeQQJHDQkCQCAfDgIMAAsLIA1CAFcNDCAKQgBXDQwgAigCmAEhHyAbIAinIgBBAXQiHmwhICAcIB1rIB5sISMgCqcgGyAcaiAda2wgAGxBAXQhJCAbICVsISYgHSAba0EBcSEnQQAhAkIAIQsgHSAbQQFqIgBGISoDQAJAIBsgHUgEQCAoIAunbCEcQgAhAwNAIAIgIGohGiApIAOnbCEhICcEfyAaIB9qIAEoApgBICZqICFqIBxqIB78CgAAIBogHmohGiAABSAbCyECICpFBEADQCAaIB9qIAEoApgBIAIgJWxqICFqIBxqIB78CgAAIB8gGiAeaiIaaiABKAKYASACQQFqICVsaiAhaiAcaiAe/AoAACAaIB5qIRogAkECaiICIB1HDQALCyAaICNqIQIgA0IBfCIDIApSDQALDAELIAIgJGohAgsgC0IBfCILIA1SDQALDAwLICJB89AANgJIICJB1D42AkQgIkHoJDYCQEHopwIoAgAgIkFAaxAwDAwLICJBqx82AgggIkHrwgA2AgQgIkHoJDYCAEHopwIoAgAgIhAwDAsLIAIpAygiEiACKQMgIg8gAikDGCIQIAIpAxAiCn5+fiABKQMoIg4gASkDICINIAEpAxgiAyABKQMQIgV+fn5SDQICQCAAKAIADgMKAAoACyACKAI8IRwgAigCOCEfIAIoAjQhISABKAI8ISggASgCOCEpIAEoAjQhJSAAKAIIIRogACgCBCEjIAIoAjAhGyAkDQEgJa0iBiAFIB6tflINASAprSIMIAMgBn5SDQEgKK0gDCANflINASAbIAIoAgAiHUEkbCIgQZjqAGooAgBHDQEgIa0iBiAKIButfiAgQZTqAGo0AgB/Ug0BIB+tIgwgBiAQflINASAcrSAMIA9+Ug0BIB0NAQsgACABIAIQ+QIMCAsgA6ciICAaakEBayAabSImICNsIgAgJmoiGiAgIBogIEgbIR0gAigCACEaAkAgJA0AIAUgClINACAaDQAgGyAeRw0AIA5CAFcNCCANQgBXDQggACAdTg0IIB4gCqdsIRsgHawhDCAArCEGQgAhBQNAICggBaciAGwhGiAAIBxsIQBCACEHA0AgKSAHpyIebCEdIB4gH2whHiAGIQMDQCACKAKYASAhIAOnIiBsaiAeaiAAaiABKAKYASAgICVsaiAdaiAaaiAb/AoAACADQgF8IgMgDFINAAsgB0IBfCIHIA1SDQALIA4gBUIBfCIFUg0ACwwICwJAIBsgGkEkbCIkQZjqAGooAgBHDQAgIa0iBiAKIButfiAkQZTqAGo0AgAiDH9SDQAgH60iCCAGIBB+Ug0AIBytIAggD35SDQAgHkEERgRAIBpFBEAgDkIAVw0KIA1CAFcNCiAAIB1ODQogAigCmAEhHiAAIAWnQQJ0IhxsISMgICAdayAcbCEgIAAgJWwhJCAdIABrQQFxISZBACECIB0gAEEBaiIbRiEnA0AgKCALp2whH0IAIQMDQCACICNqIRogKSADp2whISAmBH8gGiAeaiABKAKYASAkaiAhaiAfaiAc/AoAACAaIBxqIRogGwUgAAshAiAnRQRAA0AgGiAeaiABKAKYASACICVsaiAhaiAfaiAc/AoAACAeIBogHGoiGmogASgCmAEgAkEBaiAlbGogIWogH2ogHPwKAAAgGiAcaiEaIAJBAmoiAiAdRw0ACwsgGiAgaiECIANCAXwiAyANUg0ACyAOIAtCAXwiC1INAAsMCgtBsfgfIBp2QQFxRQRAIAUgDH8hAyAOQgBXDQogDUIAVw0KIAAgHU4NCiAaQSRsQaTqAGooAgAhHiACKAKYASEfIBsgA6dsIhwgAGwhJCAcICAgHWtsISYgBachISAAQQFqIRsgACAlbCEnIB0gAGsiKkEBcSErQQAhGgNAICggC6dsISBCACEDA0AgGiAkaiECICkgA6dsISMgKwR/IAEoApgBICdqICNqICBqIAIgH2ogISAeEQUAIAIgHGohAiAbBSAACyEaICpBAUcEQANAIAEoApgBIBogJWxqICNqICBqIAIgH2ogISAeEQUAIAEoApgBIBpBAWogJWxqICNqICBqIB8gAiAcaiICaiAhIB4RBQAgAiAcaiECIBpBAmoiGiAdRw0ACwsgAiAmaiEaIANCAXwiAyANUg0ACyAOIAtCAXwiC1INAAsMCgsgIkGrHzYCWCAiQbPBADYCVCAiQegkNgJQQeinAigCACAiQdAAahAwDAoLAkACQAJAIBoOAgABAgsgDkIAVw0KIA1CAFcNCiAAIB1ODQogBUIAVw0KIAAgBaciG2whJCADIB2tfSAFfqchJyAeQQFGIAVCC1ZxISogBUIDgyEIIAIoApgBIh8gG0ECdGohKyAFQnyDIgynIS0gIyAlbCAmbCICrSEHIAIgG2pBA2qtIQkgKa0hCiAorSERIAEoApgBISFBACEBQgAhBgNAIAYgEX4iAyAJfCEPIAMgB3whECAhICggBqdsaiEjQgAhBANAIAEgJGohAiAjICkgBKdsaiEmIA8gBCAKfiIDfKchLCADIBB8pyEuQQAhHCAAIQEDQCAmIAEgJWxqIRpCACELAkACQCAqRQRAQgAhAwwBCwJAIB8gAkECdCIbaiAhIBwgJWwiICAsampPDQAgISAgIC5qaiAbICtqTw0AQgAhAwwBCyACIC1qIS/9DAAAAAABAAAAAgAAAAMAAAAhMUIAIQMDQCAfIAIgA6dqQQJ0aiAaIDH9GwBq/QkCACAaIDH9GwFqKgIA/SABIBogMf0bAmoqAgD9IAIgGiAx/RsDaioCAP0gA/0LAgAgMf0MBAAAAAQAAAAEAAAABAAAAP2uASExIANCBHwiAyAMUg0ACyAvIQIgDCIDIAVRDQELIAUgA0J/hXwhFyAIQgBSBEADQCAfIAJBAnRqIBogHiADp2xqKgIAOAIAIANCAXwhAyACQQFqIQIgC0IBfCILIAhSDQALCyAXQgNUDQADQCAfIAJBAnRqIhsgGiAeIAOnIiBsaioCADgCACAbIBogHiAgQQFqbGoqAgA4AgQgGyAaIB4gIEECamxqKgIAOAIIIBsgGiAeICBBA2psaioCADgCDCACQQRqIQIgA0IEfCIDIAVSDQALCyAcQQFqIRwgAUEBaiIBIB1HDQALIAIgJ2ohASAEQgF8IgQgDVINAAsgDiAGQgF8IgZSDQALDAoLIA5CAFcNCSAFQgBXDQkgDUIAVw0JIAAgHU4NCSACKAKYASEbIAAgBadsIR8gAyAdrX0gBX6nISEgHkEBRiAFQgNWcSEgIAVCfIMiBqchIyABKAKYASEkQQAhAQNAICQgKCAEp2xqISZCACEHA0AgASAfaiEBICYgKSAHp2xqIScgACEcA0AgJyAcICVsaiECQgAhAwJAAkAgIEUEQCABIRoMAQsgASAjaiEa/QwAAAAAAQAAAAIAAAADAAAAITEDQCAbIAEgA6dqQQF0av0MAH4AAAB+AAAAfgAAAH4AACACIDH9GwBq/QkCACACIDH9GwFqKgIA/SABIAIgMf0bAmoqAgD9IAIgAiAx/RsDaioCAP0gAyIy/eAB/QwAAIB3AACAdwAAgHcAAIB3/eYB/QwAAIAIAACACAAAgAgAAIAI/eYBIDJBAf2rASIz/QwAAAD/AAAA/wAAAP8AAAD//U79DAAAAHEAAABxAAAAcQAAAHH9uQFBAf2tAf0MAACABwAAgAcAAIAHAACAB/2uAf3kASI0QQ39rQH9DAB8AAAAfAAAAHwAAAB8AAD9TiA0/Qz/DwAA/w8AAP8PAAD/DwAA/U79rgEgM/0MAAAA/wAAAP8AAAD/AAAA//08/VIgMkEQ/a0B/QwAgAAAAIAAAACAAAAAgAAA/U79UCAx/Q0AAQQFCAkMDQABAAEAAQAB/VsBAAAgMf0MBAAAAAQAAAAEAAAABAAAAP2uASExIANCBHwiAyAGUg0ACyAaIQEgBiIDIAVRDQELIBohAQNAIBsgAUEBdGpBgPwBIAIgHiADp2xqKgIAIjWLQwAAgHeUQwAAgAiUQYCAgIgHIDW8IhpBAXQiKkGAgIB4cSIrICtBgICAiAdNG0EBdkGAgIA8ar6SvCIrQQ12QYD4AXEgK0H/H3FqICpBgICAeEsbIBpBEHZBgIACcXI7AQAgAUEBaiEBIANCAXwiAyAFUg0ACwsgHEEBaiIcIB1HDQALIAEgIWohASAHQgF8IgcgDVINAAsgDiAEQgF8IgRSDQALDAkLICJBqx82AmggIkHdwQA2AmQgIkHoJDYCYEHopwIoAgAgIkHgAGoQMAwJCwJAIBoOAgMAAgsgDkIAVw0HIAVCAFcNByANQgBXDQcgACAdTg0HIAUgAKwiCH4hEyADIB2sIhR9IAV+IRUgAigCmAEhACABKAKYASEBQgAhAwNAIAEgKCARp2xqIQJCACEMA0AgCiADIBN8IgNXBEADQAJAIAdCAXwiByAQUg0AQgAhByAJQgF8IgkgD1INACAEQgF8IgZCACAGIBJSGyEEQgAhCQsgAyAKfSIDIApZDQALCyACICkgDKdsaiEaIAghBgNAIBogJSAGp2xqIR1CACELA0AgACAbIAOnbGogISAHp2xqIB8gCadsaiAcIASnbGpBgPwBIB0gHiALp2xqKgIAIjWLQwAAgHeUQwAAgAiUQYCAgIgHIDW8IiBBAXQiI0GAgIB4cSIkICRBgICAiAdNG0EBdkGAgIA8ar6SvCIkQQ12QYD4AXEgJEH/H3FqICNBgICAeEsbICBBEHZBgIACcXI7AQACQCADQgF8IgMgClINAEIAIQMgB0IBfCIHIBBSDQAgDyAJQgF8IglSBEBCACEHDAELIARCAXwiB0IAIAcgElIbIQRCACEHQgAhCQsgC0IBfCILIAVSDQALIAZCAXwiBiAUUg0ACyAKIAMgFXwiA1cEQANAAkAgB0IBfCIHIBBSDQBCACEHIAlCAXwiCSAPUg0AIARCAXwiBkIAIAYgElIbIQRCACEJCyADIAp9IgMgClkNAAsLIAxCAXwiDCANUg0ACyAOIBFCAXwiEVINAAsMBwsgIkHz0AA2AogBICJB48AANgKEASAiQegkNgKAAUHopwIoAgAgIkGAAWoQMAwHCyAiQasfNgJ4ICJB1MIANgJ0ICJB6CQ2AnBB6KcCKAIAICJB8ABqEDAMBgsgDkIAVw0EIAVCAFcNBCANQgBXDQQgACAdTg0EIAUgAKwiCH4hEyADIB2sIhR9IAV+IRVCACEDA0AgKCARp2whAEIAIQwDQCAKIAMgE3wiA1cEQANAAkAgB0IBfCIHIBBSDQBCACEHIAlCAXwiCSAPUg0AIARCAXwiBkIAIAYgElIbIQRCACEJCyADIAp9IgMgClkNAAsLICkgDKdsIRogCCEGA0AgJSAGp2whHUIAIQsDQCACKAKYASAbIAOnbGogISAHp2xqIB8gCadsaiAcIASnbGogASgCmAEgHiALp2xqIB1qIBpqIABqKAAANgAAAkAgA0IBfCIDIApSDQBCACEDIAdCAXwiByAQUg0AIA8gCUIBfCIJUgRAQgAhBwwBCyAEQgF8IgdCACAHIBJSGyEEQgAhB0IAIQkLIAtCAXwiCyAFUg0ACyAGQgF8IgYgFFINAAsgCiADIBV8IgNXBEADQAJAIAdCAXwiByAQUg0AQgAhByAJQgF8IgkgD1INACAEQgF8IgZCACAGIBJSGyEEQgAhCQsgAyAKfSIDIApZDQALCyAMQgF8IgwgDVINAAsgDiARQgF8IhFSDQALDAQLAkACQAJAIB8OAgACAQsgDUIAVw0FIAhCAFcNBSAKQgBXDQUgGyAdTg0FIAggG6wiDH4hEyAOIB2sIhR9IAh+IRUgAigCmAEhACABKAKYASEBQgAhAwNAIAEgKCARp2xqIQJCACEOA0AgCyADIBN8IgNXBEADQAJAIARCAXwiBCAQUg0AQgAhBCAFQgF8IgUgD1INACAJQgF8IgZCACAGIBJSGyEJQgAhBQsgAyALfSIDIAtZDQALCyACICkgDqdsaiEbIAwhBgNAIBsgJSAGp2xqIRxCACEHA0AgACAaIAOnbGogIyAEp2xqICAgBadsaiAhIAmnbGogHCAeIAenbGovAQBBAnRB8LkEaioCADgCAAJAIANCAXwiAyALUg0AQgAhAyAEQgF8IgQgEFINACAPIAVCAXwiBVIEQEIAIQQMAQsgCUIBfCIEQgAgBCASUhshCUIAIQRCACEFCyAHQgF8IgcgCFINAAsgBkIBfCIGIBRSDQALIAsgAyAVfCIDVwRAA0ACQCAEQgF8IgQgEFINAEIAIQQgBUIBfCIFIA9SDQAgCUIBfCIGQgAgBiASUhshCUIAIQULIAMgC30iAyALWQ0ACwsgDkIBfCIOIApSDQALIBFCAXwiESANUg0ACwwFCyAiQasfNgI4ICJB28AANgI0ICJB6CQ2AjBB6KcCKAIAICJBMGoQMAwFCyANQgBXDQMgCEIAVw0DIApCAFcNAyAbIB1ODQMgCCAbrCIGfiEUIA4gHawiFX0gCH4hFkIAIQMDQCAoIBGnbCEAQgAhEwNAIAsgAyAUfCIDVwRAA0ACQCAEQgF8IgQgEFINAEIAIQQgBUIBfCIFIA9SDQAgCUIBfCIMQgAgDCASUhshCUIAIQULIAMgC30iAyALWQ0ACwsgKSATp2whGyAGIQwDQCAlIAynbCEcQgAhBwNAIAIoApgBIBogA6dsaiAjIASnbGogICAFp2xqICEgCadsaiABKAKYASAeIAenbGogHGogG2ogAGovAAA7AAACQCADQgF8IgMgCFINAEIAIQMgBEIBfCIEIA5SDQAgCiAFQgF8IgVSBEBCACEEDAELIAlCAXwiBEIAIAQgDVIbIQlCACEEQgAhBQsgB0IBfCIHIAhSDQALIAxCAXwiDCAVUg0ACyALIAMgFnwiA1cEQANAAkAgBEIBfCIEIBBSDQBCACEEIAVCAXwiBSAPUg0AIAlCAXwiDEIAIAwgElIbIQlCACEFCyADIAt9IgMgC1kNAAsLIBNCAXwiEyAKUg0ACyARQgF8IhEgDVINAAsMAwsCQAJAAkAgHw4CAAIBCyANQgBXDQQgCkIAVw0EIAIoApgBIR8gGyAIpyIAbCEhIA4gHa19IAh+pyEgIB5BAUYgCEIDVnEhIyAIQgGDIQcgCqcgGyAcaiAda2wgAGwhJCAIQnyDIganISZBACECA0ACQAJAIBsgHU4NACAIQgBXDQAgASgCmAEgKCAEp2xqISdCACEJA0AgAiAhaiEaICcgKSAJp2xqISogGyEcA0AgKiAcICVsaiECQgAhAwJAAkAgI0UEQCAaIQAMAQsgGiAmaiEA/QwAAAAAAQAAAAIAAAADAAAAITEDQCAfIBogA6dqQQJ0aiACIDH9GwNqIAIgMf0bAmogAiAx/RsBaiACIDH9GwBq/QgBAP1VAQAB/VUBAAL9VQEAA/2pASIy/RsAQQJ0QfC5BGr9CQIAIDL9GwFBAnRB8LkEaioCAP0gASAy/RsCQQJ0QfC5BGoqAgD9IAIgMv0bA0ECdEHwuQRqKgIA/SAD/QsCACAx/QwEAAAABAAAAAQAAAAEAAAA/a4BITEgA0IEfCIDIAZSDQALIAAhGiAGIgMgCFENAQsgA0IBhCEMIAdQBH8gAAUgHyAAQQJ0aiACIB4gA6dsai8BAEECdEHwuQRqKgIAOAIAIAwhAyAAQQFqCyEaIAggDFENAANAIB8gGkECdGoiACACIB4gA6ciK2xqLwEAQQJ0QfC5BGoqAgA4AgAgACACIB4gK0EBamxqLwEAQQJ0QfC5BGoqAgA4AgQgGkECaiEaIANCAnwiAyAIUg0ACwsgHEEBaiIcIB1HDQALIBogIGohAiAKIAlCAXwiCVINAAsMAQsgAiAkaiECCyAEQgF8IgQgDVINAAsMBAsgIkGrHzYCKCAiQeY/NgIkICJB6CQ2AiBB6KcCKAIAICJBIGoQMAwECyANQgBXDQIgCkIAVw0CIBsgHU4NAiAIQgBXDQIgGyAIpyIAbCEjIA4gHa19IAh+pyEkIB5BAUYgCEIPVnEhKiAIQgODIQkgAigCmAEiHyAAQQF0aiErIAhCeIMiBqchLSAlICZsICdsIgKtIQUgACACakEBaq0hCyAprSEOICitIREgASgCmAEhIUEAIQFCACEMA0AgDCARfiIDIAt8IQ8gAyAFfCEQICEgKCAMp2xqISZCACEEA0AgASAjaiECICYgKSAEp2xqIScgDyAEIA5+IgN8pyEsIAMgEHynIS5BACEcIBshAQNAICcgASAlbGohGkIAIQcCQAJAICpFBEBCACEDDAELAkAgHyACQQF0IgBqICEgHCAlbCIgICxqak8NACAhICAgLmpqIAAgK2pPDQBCACEDDAELIAIgLWohMP0MBAAAAAUAAAAGAAAABwAAACEx/QwAAAAAAQAAAAIAAAADAAAAITJCACEDA0AgHyACIAOnakEBdGogGiAx/RsDaiAaIDH9GwJqIBogMf0bAWogGiAx/RsAaiAaIDL9GwNqIBogMv0bAmogGiAy/RsBaiAaIDL9GwBq/QgBAP1VAQAB/VUBAAL9VQEAA/1VAQAE/VUBAAX9VQEABv1VAQAH/QsBACAy/QwIAAAACAAAAAgAAAAIAAAA/a4BITIgMf0MCAAAAAgAAAAIAAAACAAAAP2uASExIANCCHwiAyAGUg0ACyAwIQIgBiIDIAhRDQELIAggA0J/hXwhGCAJQgBSBEADQCAfIAJBAXRqIBogHiADp2xqLwEAOwEAIANCAXwhAyACQQFqIQIgB0IBfCIHIAlSDQALCyAYQgNUDQADQCAfIAJBAXRqIgAgGiAeIAOnIiBsai8BADsBACAAIBogHiAgQQFqbGovAQA7AQIgACAaIB4gIEECamxqLwEAOwEEIAAgGiAeICBBA2psai8BADsBBiACQQRqIQIgA0IEfCIDIAhSDQALCyAcQQFqIRwgAUEBaiIBIB1HDQALIAIgJGohASAEQgF8IgQgClINAAsgDEIBfCIMIA1SDQALDAILQbH4HyAfdkEBcUUEQCAIIAZ/IRkgDUIAVw0CIApCAFcNAiAfQSRsQaTqAGooAgAhISAAKAIQICYgCKciIEEQamxBAnRqIR4gAigCmAEhIyAZpyIAIBsgHGogHWsgGiAKp2xsbCEqIAAgGmwiHyAbbCEkIB8gHCAda2whJiAIQnyDIQYgHSAbayIAQQNxISdBACEaIABBAWtBA0khKwNAAkAgGyAdTgRAIBogKmohGgwBC0IAIQQgCEIAVQRAICggBadsIS0DQCAaICRqIRwgKSAEp2whGiAbIQADQCABKAKYASAAICVsaiAaaiAtaiECQgAhAwJAIAhCBFoEQANAIB4gA6ciLEECdGogAiAsQQF0av0EAQAiMf0bAEECdEHwuQRq/QkCACAx/RsBQQJ0QfC5BGoqAgD9IAEgMf0bAkECdEHwuQRqKgIA/SACIDH9GwNBAnRB8LkEaioCAP0gA/0LAgAgA0IEfCIDIAZSDQALIAYiAyAIUQ0BCwNAIB4gA6ciLEECdGogAiAsQQF0ai8BAEECdEHwuQRqKgIAOAIAIANCAXwiAyAIUg0ACwsgHiAcICNqICAgIREFACAcIB9qIRwgAEEBaiIAIB1HDQALIBwgJmohGiAEQgF8IgQgClINAAsMAQsDQCAaICRqIRpBACEcIBshAiAnBEADQCAeIBogI2ogICAhEQUAIAJBAWohAiAaIB9qIRogHEEBaiIcICdHDQALCyArRQRAA0AgHiAaICNqICAgIREFACAeICMgGiAfaiIAaiAgICERBQAgHiAjIAAgH2oiAGogICAhEQUAIB4gIyAAIB9qIgBqICAgIREFACAAIB9qIRogAkEEaiICIB1HDQALCyAaICZqIRogBEIBfCIEIApSDQALCyAFQgF8IgUgDVINAAsMAgsgIkGrHzYCGCAiQbw/NgIUICJB6CQ2AhBB6KcCKAIAICJBEGoQMAwCCyANQgBXDQAgCkIAVw0AIBsgHU4NACACKAKYASECIBsgCKciAGwhHiAOIB2tfSAIfqchHyAKpyAbIBxqIB1rbCAAbCEhIAhCfIMiBqchICABKAKYASEjQQAhGgNAAkAgCEIAVQRAICMgKCAFp2xqISRCACEEA0AgGiAeaiEaICQgKSAEp2xqISYgGyEcA0AgJiAcICVsaiEBQgAhAwJAAkAgCEIEVARAIBohAAwBCyAaICBqIQADQCACIBogA6ciJ2pBAnRqIAEgJ0EBdGr9BAEAIjH9GwBBAnRB8LkEav0JAgAgMf0bAUECdEHwuQRqKgIA/SABIDH9GwJBAnRB8LkEaioCAP0gAiAx/RsDQQJ0QfC5BGoqAgD9IAP9CwIAIANCBHwiAyAGUg0ACyAAIRogBiIDIAhRDQELIAAhGgNAIAIgGkECdGogASADp0EBdGovAQBBAnRB8LkEaioCADgCACAaQQFqIRogA0IBfCIDIAhSDQALCyAcQQFqIhwgHUcNAAsgGiAfaiEaIARCAXwiBCAKUg0ACwwBCyAaICFqIRoLIAVCAXwiBSANUg0ACwsgIkGQAWokAA8LEAAACxcAIAAoAggQQkcEQCAAKAIIEM4DCyAACzkBAn8jAEEQayIDJAAgAyACNgIMIANBCGogA0EMahCAASEEIAAgARCwAiEAIAQQfyADQRBqJAAgAAsEAEEBCzcBAn8jAEEQayICJAAgAiAAKAIANgIMIAIgAigCDCABQQJ0ajYCDCACKAIMIQMgAkEQaiQAIAMLNAECfyMAQRBrIgIkACACIAAoAgA2AgwgAiACKAIMIAFqNgIMIAIoAgwhAyACQRBqJAAgAwsxACACKAIAIQIDQAJAIAAgAUcEfyAAKAIAIAJHDQEgAAUgAQsPCyAAQQRqIQAMAAsAC/oEAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABFDQFBACEAIAFBADoAACAEIAQoAgAiAUEBajYCACABQS46AAACfyAHLQALQQd2BEAgBygCBAwBCyAHLQALQf8AcQtFDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkAgACAGRw0AAn8gBy0AC0EHdgRAIAcoAgQMAQsgBy0AC0H/AHELRQ0AIAEtAABFDQFBACEAIAkoAgAiASAIa0GfAUoNAiAKKAIAIQAgCSABQQRqNgIAIAEgADYCAEEAIQAgCkEANgIADAILQX8hACALIAtBgAFqIAxBDGoQmwIgC2siBkH8AEoNASAGQQJ1QcDOAmosAAAhBQJAAkAgBkF7cSIAQdgARwRAIABB4ABHDQEgAyAEKAIAIgFHBEBBfyEAIAFBAWssAAAiA0HfAHEgAyADQeEAa0EaSRsgAiwAACICQd8AcSACIAJB4QBrQRpJG0cNBQsgBCABQQFqNgIAIAEgBToAAEEAIQAMBAsgAkHQADoAAAwBCyAFQd8AcSAFIAVB4QBrQRpJGyIAIAIsAABHDQAgAiAAQSByIAAgAEHBAGtBGkkbOgAAIAEtAABFDQAgAUEAOgAAAn8gBy0AC0EHdgRAIAcoAgQMAQsgBy0AC0H/AHELRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAFOgAAQQAhACAGQdQASg0BIAogCigCAEEBajYCAAwBC0F/IQALIAxBEGokACAAC6YBAQJ/IwBBEGsiBiQAIAZBDGoiBSABKAIcIgE2AgAgAUEEakEB/h4CABogBRBrIgFBwM4CQeDOAiACIAEoAgAoAjARBwAaIAMgBRC1ASIBIAEoAgAoAgwRAQA2AgAgBCABIAEoAgAoAhARAQA2AgAgACABIAEoAgAoAhQRAgAgBSgCACIAQQRqQX/+HgIARQRAIAAgACgCACgCCBEAAAsgBkEQaiQACzEAIAItAAAhAgNAAkAgACABRwR/IAAtAAAgAkcNASAABSABCw8LIABBAWohAAwACwAL7gQBAX8jAEEQayIMJAAgDCAAOgAPAkACQCAAIAVGBEAgAS0AAEUNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAAAJ/IActAAtBB3YEQCAHKAIEDAELIActAAtB/wBxC0UNAiAJKAIAIgEgCGtBnwFKDQIgCigCACECIAkgAUEEajYCACABIAI2AgAMAgsCQCAAIAZHDQACfyAHLQALQQd2BEAgBygCBAwBCyAHLQALQf8AcQtFDQAgAS0AAEUNAUEAIQAgCSgCACIBIAhrQZ8BSg0CIAooAgAhACAJIAFBBGo2AgAgASAANgIAQQAhACAKQQA2AgAMAgtBfyEAIAsgC0EgaiAMQQ9qEJ4CIAtrIgZBH0oNASAGQcDOAmosAAAhBQJAAkACQAJAIAZBfnFBFmsOAwECAAILIAMgBCgCACIBRwRAIAFBAWssAAAiA0HfAHEgAyADQeEAa0EaSRsgAiwAACICQd8AcSACIAJB4QBrQRpJG0cNBQsgBCABQQFqNgIAIAEgBToAAEEAIQAMBAsgAkHQADoAAAwBCyAFQd8AcSAFIAVB4QBrQRpJGyIAIAIsAABHDQAgAiAAQSByIAAgAEHBAGtBGkkbOgAAIAEtAABFDQAgAUEAOgAAAn8gBy0AC0EHdgRAIAcoAgQMAQsgBy0AC0H/AHELRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAFOgAAQQAhACAGQRVKDQEgCiAKKAIAQQFqNgIADAELQX8hAAsgDEEQaiQAIAALpgEBAn8jAEEQayIGJAAgBkEMaiIFIAEoAhwiATYCACABQQRqQQH+HgIAGiAFEHMiAUHAzgJB4M4CIAIgASgCACgCIBEHABogAyAFELcBIgEgASgCACgCDBEBADoAACAEIAEgASgCACgCEBEBADoAACAAIAEgASgCACgCFBECACAFKAIAIgBBBGpBf/4eAgBFBEAgACAAKAIAKAIIEQAACyAGQRBqJAAL0BMCD38CfiMAQbCAAWsiBiQAIwBB4ABrIgUkACAGQRxqIglBDGpBAEGIgAH8CwBBBCACIAJBAEwbIQICQAJAAkAgASIIKAIAIg1BAEwNACACQQJ0IQogAkEEdCEOIAJBA3QhDyACQQF0IRACQAJAAkACQAJAA0ACQEEBIQECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCCALQQJ0IhFqKAIIIgQoAkBBAWsORAABAQIUAxQUFBQUFBQUFBQEAwMDAwMEBBQUABQUFBQUFBQUBQUFBQUFFBQGBwgUFAkKCwwUFBQFExQUFBQUDQ4PEBESFAtBACEBQcwHIAQoAgB2QQFxBEAgCiAEKAIQbCEBCyADIAEgASADSRshAyACIQEMEwtBACEBQcwHIAQoAmwiBCgCAHZBAXEEQCAKIAQoAhBsIQELIAMgASABIANJGyEDIAIhAQwSC0EAIQFBzAcgBCgCbCgCAHZBAXEEQCAKIAQoAnAoAhBsIQELIAMgASABIANJGyEDCyACIQEMEAtBACEBIAQoAmwoAgBBJGxBsOoAaigCACIHIAQoAnAiBCgCAEcEQCAEKQMoIAQpAyAgBCkDGCAEKQMQIAdBJGwiAUGY6gBqNQIAfn5+fiABQZTqAGo0AgB/pyEBCyADIAEgASADSRshAwsgAiEBDA4LIAQoAmwiBykDKEIBUg0OIAQoAnAiASkDIEIBUg0QIAEpAyhCAVINESAHKQMQIRMCfwJAAkAgBygCAA4CAQAVCyABKAIADRRC4P///wchEkEBDAELIAEoAgANE0Lg////AyESQQILIQQgAyAHKQMgIBN+IAcpAxhCH3wgEoN+IAEpAxggASkDECATp0ECbUEBdK18fnynIAR0IgEgASADSRshAyACIQEMDQsgBCgCcCEBAn8CQAJAIAQoAmwiBygCAA4CAQAVCyABKAIADRQgBCkDGCAEKQMQIAcpAyAgBykDGCAHKQMQfn5+fiESQQEMAQsgASgCAA0TIAEpAyAgASkDGCABKQMQfn4hEkECCyEBIAMgEqcgAXQiASABIANJGyEDIAIhAQwMCyADIAQoAnAiASkDECABKQMYfiABKQMgfkIBhiAEKAJsIgEpAxAgASkDGH4gASkDIH4gASkDKH5CAYZ8pyIBIAEgA0kbIQMLIAIhAQwKCyADIBAgBCgCcCIBKAIYQQJ0QQxqQfD///8HcWxBACABKAIAQQJJGyIBIAEgA0kbIQMgAiEBDAkLQQAhASAEKAJwIgQoAgBBAU0EQCAPIAQoAhhsIQELIAMgASABIANJGyEDIAIhAQwICyADIA4gBCgCbCkDECISIAQoAnAiASkDGEIghkKAgICAMHxCIIdCfIMiEyASIBNVG6dsQQAgASgCAEECSRsiASABIANJGyEDIAIhAQwHCyACIAQoAkgiASACIAEgAkgbIAFBf0YbIQEMBgsgAiAEKAJIIgEgAiABIAJIGyABQX9GGyEBDAULIAIgBCgCSCIBIAIgASACSBsgAUF/RhshAQwECyADIAQoAmwoAhBBAWogBCgCAEEkbEGY6gBqKAIAIAJsbCIBIAEgA0kbIQMgAiEBDAMLIAMgBCgCbCgCECAEKAIAQSRsQZjqAGooAgAgAmxsIgEgASADSRshAyACIQEMAgsgBUGrHzYCCCAFQZSJATYCBCAFQegkNgIAQeinAigCACAFEDAMCgtBASACIAQoAkRBB2tBA08bIQELIAkgEWogATYCDCANIAtBAWoiC0cNAQwGCwsgBUG4NjYCWCAFQcSHATYCVCAFQegkNgJQQeinAigCACAFQdAAahAwDAYLIAVB0TY2AkggBUHFhwE2AkQgBUHoJDYCQEHopwIoAgAgBUFAaxAwDAULIAVBnzY2AjggBUHGhwE2AjQgBUHoJDYCMEHopwIoAgAgBUEwahAwDAQLIAVBqx82AiggBUHYhwE2AiQgBUHoJDYCIEHopwIoAgAgBUEgahAwDAMLIAVBqx82AhggBUH8hwE2AhQgBUHoJDYCEEHopwIoAgAgBUEQahAwDAILIANFDQAgAkEGdCADakFAaiEMCyAJQQA2AgQgCSAMNgIAIAkgAjYCCCAFQeAAaiQADAELEAAACwJAIAAoAgAiASAGKAIcQQNqQXxxIgQgACgCFCICBH8gAigCBCACKAIAagVBAAsiA2oiBUEUak8EQCAAKAIEIgUgA2oiAUEANgIQIAFCgICAgCA3AgggASAENgIEIAEgA0EUaiIDNgIAIAMgBWpBA3ENASACQQhqIABBEGogAhsgATYCACAAIAE2AhQgBiAAKAIEIANqNgIgQQAhASMAQZABayIAJAACQAJAAkACQAJAIAZBHGoiAgRAIAIoAggiA0EATA0BIAIoAgAEQCACKAIERQ0DCyAIKAIAIgRBAEoEQANAIAggAUECdCIFaigCCCgCQARAIAIgBWooAgxBAEwNBgsgAUEBaiIBIARHDQALCyAAIAI2AmQgACAINgJgIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwNoIABBADYCiAEgAEL/////DzcDgAEgACADNgJ8IAAgAzYCeEEBIQEgACADQQxsQQ9qQXBxayICJAACQCADQQFKBEACQANAAkAgAiABQQxsaiIEIAE2AgQgBEEANgIAIAQgAEHgAGo2AgggBEEKIAQQgQQNACADIAFBAWoiAUcNAQwCCwsgAEHiODYCKCAAQc+JATYCJCAAQegkNgIgQeinAigCACAAQSBqEDAMBwsgAkEANgIEIAIgAEHgAGo2AgggAhCjAhpBASEBA0AgAiABQQxsaigCABCABEUEQCABQQFqIgEgA0cNAQwDCwsgAEHiODYCGCAAQeSJATYCFCAAQegkNgIQQeinAigCACAAQRBqEDAMBgsgAkEANgIEIAIgAEHgAGo2AgggAhCjAhoLIAggCCgCzIIFQQFqNgLMggUgAEGQAWokAAwFCyAAQeAXNgIIIABBqIkBNgIEIABB6CQ2AgBB6KcCKAIAIAAQMAwDCyAAQZM4NgJYIABBqYkBNgJUIABB6CQ2AlBB6KcCKAIAIABB0ABqEDAMAgsgAEHkJTYCSCAAQayJATYCRCAAQegkNgJAQeinAigCACAAQUBrEDAMAQsgAEGoODYCOCAAQbGJATYCNCAAQegkNgIwQeinAigCACAAQTBqEDALEAAACyAGQbCAAWokAA8LIAYgATYCCCAGIAU2AgQgBkGzDzYCAEHN4gAgBhCfAQALIAZB6jg2AhggBkHHIzYCFCAGQegkNgIQQeinAigCACAGQRBqEDAQAAALfwICfwJ+IwBBoAFrIgQkACAEIAE2AjwgBCABNgIUIARBfzYCGCAEQRBqIgVCABCBASAEIAUgA0EBENUDIAQpAwghBiAEKQMAIQcgAgRAIAIgASAEKAIUIAQoAogBaiAEKAI8a2o2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAvBBQEKfyMAQSBrIgMkACAAKAIIIgIoAgQiBUEMaiEHIAIoAhghCSACKAIAIQZBfyEBA0ACQAJAIAUoAoyAASICRQRAIAAoAgghAgwBCyAFKAKQgAEgAhEBACEKIAAoAgghAiAKRQ0AQQEhASACQQH+HgIgGgwBCwJAIAJBAf4lAhxBAUYEQCADQQA2AhQgA0ICNwIMIAMgBSgCADYCGCADIAUoAgQ2AhwgAUF/RwRAIAFBAnQiCCAAKAIIIgQoAgBqKAIIIgIoAkBB0Lo0ai0AAARAIAMgByAIaigCADYCFCADQQxqIAIQxgEgACgCCCEECyACIAIoAoQBQQFqNgKEASACIAL9AAOIASAE/QADCP3RAf0LA4gBCwJAIAFBAWoiAiAGKAIATg0AA0AgBiACQQJ0IgRqKAIIIQEgBCAHaigCACEEIAAoAgj9DAAAAAAAAAAAAAAAAAAAAAD9CwMIIAMgBDYCFCABKAJAQYC6NGotAAAEQCADQQA2AgwgA0EMaiABEMYBCyAEQQFHDQEgA0EBNgIMIANBDGoiBCABEMYBIAEoAkBB0Lo0ai0AAARAIANBAjYCDCAEIAEQxgELIAAoAgghBCABIAEoAoQBQQFqNgKEASABIAH9AAOIASAE/QADCP3RAf0LA4gBIAUoAoyAASIBBEAgBSgCkIABIAERAQANAgsgAkEBaiICIAYoAgBIDQALCyAAKAIIIAn+FwIcIAAoAgggAv4XAiAMAQsDQCAAKAII/hACICICIAFGDQALCyAGKAIAIAJMBEBBACEBDAELIAYgAkECdCIBaigCCCEIIAEgB2ooAgAhASADQQE2AgwgACgCBCEEIAMgATYCFCADIAQ2AhAgAyAFKAIANgIYIAMgBSgCBDYCHCABIARKBEAgA0EMaiAIEMYBCyACIQEMAQsLIANBIGokACABC9sBAQh/IAAgAEE9EPwDIgFGBEBBAA8LAkAgACABIABrIgVqLQAADQBBvOw0KAIAIgJFDQAgAigCACIBRQ0AA0ACQAJ/IAAhBEEAIAUiBkUNABogAC0AACIDBH8CQANAIAMgAS0AACIHRw0BIAdFDQEgBkEBayIGRQ0BIAFBAWohASAELQABIQMgBEEBaiEEIAMNAAtBACEDCyADBUEACyABLQAAawtFBEAgAigCACAFaiIBLQAAQT1GDQELIAIoAgQhASACQQRqIQIgAQ0BDAILCyABQQFqIQgLIAgLRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQciAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALhAEBAn8gAEGcsAI2AgAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAKAIcIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAAKAIgEC8gACgCJBAvIAAoAjAQLyAAKAI8EC8gAAsgACAAIAAoAhhFIAFyIgE2AhAgACgCFCABcQRAEEcACwtGACMAQRBrIgEkACABIAM2AgwgBCACIAMgAmsiAvwKAAAgASACIARqNgIIIAAgASgCDDYCACAAIAEoAgg2AgQgAUEQaiQACzYBAX8jAEEQayIDJAAgAyABNgIMIAMgAjYCCCAAIAMoAgw2AgAgACADKAIINgIEIANBEGokAAutAQEGfyMAQRBrIgMkACABKAJoIQcgACABKAIAIAEoAgggAUEQaiABKAKYARBAIQYgAyABQZwBajYCACAGQaXDACADEGoiAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggASgCPCEFIAJBJjYCQCACIAU2AjwgBwR/IAAgAigCACACKAIIIAJBEGpBABBABUEACyEAIAIgATYCbCACIAA2AmggA0EQaiQAIAILOwEBfyAAQeSuAigCACIBNgIAIAAgAUEMaygCAGpB8K4CKAIANgIAIABBCGoQ5QEaIABB7ABqEK4CIAAL5wEBBn8jAEEgayIEJAAgASgCaCEHIAAgASgCACABKAIIIAFBEGogASgCmAEQQCEGIAQgAUGcAWoiAjYCECAGQaXDACAEQRBqEGoiAyABKAIwNgIwIAMgASgCNDYCNCADIAEoAjg2AjggAyABKAI8NgI8IAQgAjYCACADQePMACAEEGoiAiABKQMYNwMQIAIgASkDEDcDGCADIAEoAjQ2AjAgAyABKAIwNgI0IAJBIDYCQCAHBH8gACACKAIAIAIoAgggAkEQakEAEEAFQQALIQAgAiABNgJsIAIgADYCaCAEQSBqJAAgAgsMACAAQQhqEK4CIAALCAAgABCmAhoL0gMCAn4CfyMAQSBrIgQkAAJAIAFC////////////AIMiA0KAgICAgIDAgDx9IANCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEDIABC//////////8PgyIAQoGAgICAgICACFoEQCADQoGAgICAgICAwAB8IQIMAgsgA0KAgICAgICAgEB9IQIgAEKAgICAgICAgAhSDQEgAiADQgGDfCECDAELIABQIANCgICAgICAwP//AFQgA0KAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgA0L///////+//8MAVg0AQgAhAiADQjCIpyIFQZH3AEkNACAEQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiAiAFQYH3AGsQZSAEIAAgAkGB+AAgBWsQqAEgBCkDCEIEhiAEKQMAIgBCPIiEIQIgBCkDECAEKQMYhEIAUq0gAEL//////////w+DhCIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECCyAEQSBqJAAgAiABQoCAgICAgICAgH+DhL8LiAIAAkAgAAR/IAFB/wBNDQECQCMDKAJgKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGA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ASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAFBADYCECABQQA2AhggACABKAJENgJEIAAgASkCPDcCPCAAIAH9AAIs/QsCLCAAIAH9AAIc/QsCHCABIAUtADg6AAggASAFKQMwNwMAIAEoAhAiAARAIAEgADYCFCAAEC8LIAEgBDYCGCABIAI2AhQgASADNgIQIAEgBSgCKDYCRCABIAUpAyA3AjwgASAF/QADEP0LAiwgASAF/QADAP0LAhwgBkEEaiEGCyAFQUBrJAAgBguUCAEGfyMAQUBqIgQkACAAIAEgAhDAASEFAkAgAysDICACKwMgZEUNACAEIAItAAg6ADggBCACKQMANwMwIAIoAhQhByACKAIQIQggAkIANwMQIAIoAhghCSACQQA2AhggBCACKAJENgIoIAQgAikCPDcDICAEIAL9AAIs/QsDECAEIAL9AAIc/QsDACACIAMpAwA3AwAgAiADLQAIOgAIIAIgAygCEDYCECACIAMoAhQ2AhQgAiADKAIYNgIYIANBADYCECADQQA2AhggAiADKAJENgJEIAIgAykCPDcCPCACIAP9AAIs/QsCLCACIAP9AAIc/QsCHCADIAQpAzA3AwAgAyAELQA4OgAIIAMoAhAiBgRAIAMgBjYCFCAGEC8LIAMgCTYCGCADIAc2AhQgAyAINgIQIAMgBCgCKDYCRCADIAQpAyA3AjwgAyAE/QADEP0LAiwgAyAE/QADAP0LAhwgAisDICABKwMgZEUEQCAFQQFqIQUMAQsgBCABLQAIOgA4IAQgASkDADcDMCABKAIUIQYgASgCECEHIAFCADcDECABKAIYIQggAUEANgIYIAQgASgCRDYCKCAEIAEpAjw3AyAgBCAB/QACLP0LAxAgBCAB/QACHP0LAwAgASACKQMANwMAIAEgAi0ACDoACCABIAIoAhA2AhAgASACKAIUNgIUIAEgAigCGDYCGCACQQA2AhAgAkEANgIYIAEgAigCRDYCRCABIAIpAjw3AjwgASAC/QACLP0LAiwgASAC/QACHP0LAhwgAiAELQA4OgAIIAIgBCkDMDcDACACKAIQIgMEQCACIAM2AhQgAxAvCyACIAg2AhggAiAGNgIUIAIgBzYCECACIAQoAig2AkQgAiAEKQMgNwI8IAIgBP0AAxD9CwIsIAIgBP0AAwD9CwIcIAErAyAgACsDIGRFBEAgBUECaiEFDAELIAQgAC0ACDoAOCAEIAApAwA3AzAgACgCFCECIAAoAhAhAyAAQgA3AxAgACgCGCEGIABBADYCGCAEIAAoAkQ2AiggBCAAKQI8NwMgIAQgAP0AAiz9CwMQIAQgAP0AAhz9CwMAIAAgASkDADcDACAAIAEtAAg6AAggACABKAIQNgIQIAAgASgCFDYCFCAAIAEoAhg2AhggAUEANgIQIAFBADYCGCAAIAEoAkQ2AkQgACABKQI8NwI8IAAgAf0AAiz9CwIsIAAgAf0AAhz9CwIcIAEgBC0AODoACCABIAQpAzA3AwAgASgCECIABEAgASAANgIUIAAQLwsgASAGNgIYIAEgAjYCFCABIAM2AhAgASAEKAIoNgJEIAEgBCkDIDcCPCABIAT9AAMQ/QsCLCABIAT9AAMA/QsCHCAFQQNqIQULIARBQGskACAFC0gBAX8gAEGQngE2AgAgACgCCCIBBEAgASABKAIAKAIEEQAACyAAQayUATYCACAAKAIEIgEEQCABIAEoAgAoAgQRAAALIAAQLwuLCQEKfwJAAkACQAJAAkACQCAALQBZBEAgACgCDCIDIAEgAygCACgCFBEEACEFIAAoAgwiASACIAEoAgAoAhQRBAAhCCAAKAI8IgMgAEFAaygCACIESQRAIAMgBUH/AXEgCEEIdHI7AAAMBwsgAyAAKAI4IgFrIgJBfUwNAkH/////ByAEIAFrIgQgAkEBdSIJQQFqIgcgBCAHSxsgBEH+////B08bIgcEfyAHQQBIDQQgB0EBdBAxBUEACyEGIAYgCUEBdGoiBCAFQf8BcSAIQQh0cjsAACAEQQJqIQggASADRwRAAkACQCACQQJrIgVBHkkNACADIAJBfnEgBmprQRBJDQAgBEEQayEJIANBEGshCiAEIAVBAXZBAWoiC0F4cSIFQQF0IgJrIQQgAyACayEDQQAhAgNAIAkgAkEBdCIMayAKIAxr/QAAAP0LAAAgAkEIaiICIAVHDQALIAUgC0YNAQsDQCAEQQJrIgQgA0ECayIDLwAAOwAAIAEgA0cNAAsLIAAoAjghAwsgACAGIAdBAXRqNgJAIAAgCDYCPCAAIAQ2AjggA0UNASADEC8PCyAAQUBrKAIAIQQgACgCPCEDAkAgAC0AWgRAIAMgBEkNBiADIAAoAjgiB2siBkF9TA0FQf////8HIAQgB2siBCAGQQF1IglBAWoiBSAEIAVLGyAEQf7///8HTxsiBQR/IAVBAEgNBSAFQQF0EDEFQQALIQggCCAJQQF0aiIEIAFB/wFxIAJBCHRyOwAAIARBAmohCSADIAdHBEACQAJAIAZBAmsiAUEeSQ0AIAMgBkF+cSAIamtBEEkNACAEQRBrIQYgA0EQayEKIAQgAUEBdkEBaiILQXhxIgFBAXQiAmshBCADIAJrIQNBACECA0AgBiACQQF0IgxrIAogDGv9AAAA/QsAACACQQhqIgIgAUcNAAsgASALRg0BCwNAIARBAmsiBCADQQJrIgMvAAA7AAAgAyAHRw0ACwsgACgCOCEDCyAAIAggBUEBdGo2AkAgACAJNgI8IAAgBDYCOCADDQEMAgsgAyAESQ0FIAMgACgCOCIHayIGQX1MDQRB/////wcgBCAHayIEIAZBAXUiCUEBaiIFIAQgBUsbIARB/v///wdPGyIFBH8gBUEASA0EIAVBAXQQMQVBAAshCCAIIAlBAXRqIgQgAUH/AXEgAkEIdHI7AAAgBEECaiEJIAMgB0cEQAJAAkAgBkECayIBQR5JDQAgAyAGQX5xIAhqa0EQSQ0AIARBEGshBiADQRBrIQogBCABQQF2QQFqIgtBeHEiAUEBdCICayEEIAMgAmshA0EAIQIDQCAGIAJBAXQiDGsgCiAMa/0AAAD9CwAAIAJBCGoiAiABRw0ACyABIAtGDQELA0AgBEECayIEIANBAmsiAy8AADsAACADIAdHDQALCyAAKAI4IQMLIAAgCCAFQQF0ajYCQCAAIAk2AjwgACAENgI4IANFDQELIAMQLwsPCxBBAAsQUQALEEEACyADIAFB/wFxIAJBCHRyOwAACyAAIANBAmo2AjwL6wMBA38CQAJAIAEgAkYNAAJAAkACQAJAAkACQAJAAkACQCABLAAAIgRBImsOVQAICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAECCAgIAwgICAgICAgECAgIBQgGCAcICwJAIAMEQCADIAQQWQwBCyAAIAQQWAsMCQsCQCADBEAgA0EHEFkMAQsgAEEHEFgLDAgLAkAgAwRAIANBCBBZDAELIABBCBBYCwwH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AgAgAysDECIMIAMrAwAiDWRFDQYgAyANOQMQIAMgDDkDACADKAIIIQAgAyADKAIYNgIIIAMgADYCGA8LIAwgDWQEQCADIAw5AwAgACAOOQMADAoLIAMgDjkDECADIA05AwAgAygCCCECIAMgA0EYaigCADYCCCADIAI2AhggACsDACIMIA5kRQ0FIAMgDDkDECAAIA45AwAgAyABQQhrIgAoAgA2AhggACACNgIADwsgAyADQRBqIANBIGogA0EwahDRARogAUEQayIAKwMAIgwgAysDMCINZEUNBCADIAw5AzAgACANOQMAIANBOGooAgAhACADIAFBCGsiASgCADYCOCABIAA2AgAgAysDMCIMIAMrAyAiDWRFDQQgAyANOQMwIAMgDDkDICADQShqKAIAIQEgAyADKAI4IgA2AiggAyABNgI4IAwgAysDECINZEUNBCADIA05AyAgAyAMOQMQIANBGGooAgAhASADIAA2AhggAyABNgIoIAwgAysDACINZEUNBCADIA05AxAgAyAMOQMAIAMoAgghASADIAA2AgggAyABNgIYDwsgB0HvAEwEQCADKwMgIQwCQCADKwMQIg4gAysDACINZEUEQCAMIA5kRQ0BIAMgDjkDICADIAw5AxAgA0EYaigCACEAIAMgA0EoaigCACICNgIYIAMgADYCKCAMIA1kRQ0BIAMgDTkDECADIAw5AwAgAygCCCEAIAMgAjYCCCADIAA2AhgMAQsgDCAOZARAIAMgDTkDICADIAw5AwAgAygCCCEAIAMgA0EoaigCADYCCCADIAA2AigMAQsgAyANOQMQIAMgDjkDACADKAIIIQAgAyADQRhqKAIANgIIIAMgADYCGCAMIA1kRQ0AIAMgDTkDICADIAw5AxAgA0EoaigCACECIAMgADYCKCADIAI2AhgLIANBMGoiAiABRg0EIANBIGohBQNAIAIrAwAiDSAFKwMAIgxkBEAgAigCCCEIIAIhBANAAkAgBCAMOQMAIAQgBSIAKAIINgIIIAAgA0YEQCADIQAMAQsgACEEIA0gAEEQayIFKwMAIgxkDQELCyAAIAg2AgggACANOQMACyACIgVBEGoiACECIAAgAUcNAAsMBAsgAkUEQCABIANGDQQgCUECa0EBdiIGIQADQAJAIAYgACIISA0AIAMgAEEEdGohAiADIABB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CywAAAVBfwshEUEAIQ9BACEQA0AgBCAHRwRAAkAgDyARRwRAIA8hEgwBCyACIAIoAgAiEkEEajYCACASIAo2AgBBACESAn8gCy0AC0EHdgRAIAsoAgQMAQsgCy0AC0H/AHELIBBBAWoiEE0EQCAPIREMAQsCfyALLQALQQd2BEAgCygCAAwBCyALCyAQai0AAEH/AEYEQEF/IREMAQsCfyALLQALQQd2BEAgCygCAAwBCyALCyAQaiwAACERCyAHQQRrIgcoAgAhDyACIAIoAgAiGEEEajYCACAYIA82AgAgEkEBaiEPDAELCyACKAIAIQcLIBogBxDdAQsgFEEBaiEUDAELCwvnAwEBfyMAQRBrIgokACAJAn8gAARAIAIQowMhAAJAIAEEQCAKQQRqIgEgACAAKAIAKAIsEQIAIAMgCigCBDYAACABIAAgACgCACgCIBECAAwBCyAKQQRqIgEgACAAKAIAKAIoEQIAIAMgCigCBDYAACABIAAgACgCACgCHBECAAsgCCABEIQBIAEQTBogBCAAIAAoAgAoAgwRAQA2AgAgBSAAIAAoAgAoAhARAQA2AgAgCkEEaiIBIAAgACgCACgCFBECACAGIAEQZCABEDIaIAEgACAAKAIAKAIYEQIAIAcgARCEASABEEwaIAAgACgCACgCJBEBAAwBCyACEKIDIQACQCABBEAgCkEEaiIBIAAgACgCACgCLBECACADIAooAgQ2AAAgASAAIAAoAgAoAiARAgAMAQsgCkEEaiIBIAAgACgCACgCKBECACADIAooAgQ2AAAgASAAIAAoAgAoAhwRAgALIAggARCEASABEEwaIAQgACAAKAIAKAIMEQEANgIAIAUgACAAKAIAKAIQEQEANgIAIApBBGoiASAAIAAoAgAoAhQRAgAgBiABEGQgARAyGiABIAAgACgCACgCGBECACAHIAEQhAEgARBMGiAAIAAoAgAoAiQRAQALNgIAIApBEGokAAvdAQEIfyMAQRBrIgUkACMAQSBrIgMkACADQRhqIAAgARCDAyADQRBqIANBDGogAygCGCADKAIcIAIQqAIgAygCECEEIwBBEGsiASQAIAEgADYCDCABQQxqIgAhCiAEIQcgACgCACEEIwBBEGsiACQAIAAgBDYCDCAKIAchCSAAKAIMIQYgAEEQaiQAIAkgBmsQmgIh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QTBqIg1CADcCACANQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBJGoiDEIANwIAIAxBADYCCCABQRBqJAAjAEEQayIBJAAgC0EYaiIQQgA3AgAgEEEANgIIIAFBEGokACMAQRBrIgokACALAn8gAgRAIApBBGoiAiADEKMDIgEgASgCACgCLBECACALIAooAgQ2AFwgAiABIAEoAgAoAiARAgAgDCACEIQBIAIQTBogAiABIAEoAgAoAhwRAgAgDSACEIQBIAIQTBogCyABIAEoAgAoAgwRAQA2AlggCyABIAEoAgAoAhARAQA2AlQgAiABIAEoAgAoAhQRAgAgDyACEGQgAhAyGiACIAEgASgCACgCGBECACAOIAIQhAEgAhBMGiABIAEoAgAoAiQRAQAMAQsgCkEEaiICIAMQogMiASABKAIAKAIsEQIAIAsgCigCBDYAXCACIAEgASgCACgCIBECACAMIAIQhAEgAhBMGiACIAEgASgCACgCHBECACANIAIQhAEgAhBMGiALIAEgASgCACgCDBEBADYCWCALIAEgASgCACgCEBEBADYCVCACIAEgASgCACgCFBECACAPIAIQZCACEDIaIAIgASABKAIAKAIYEQIAIA4gAhCEASACEEwaIAEgASgCACgCJBEBAAs2AhQgCkEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahA+DQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLAAADgUBAAQDBQkLIANBA0YNByAHQQECfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAEKAIACyAHKAIAKAIMEQMABEAgC0EMaiAAEKQDIBAgCygCDBCOAgwCCyAFIAUoAgBBBHI2AgBBACEADAYLIANBA0YNBgsDQCAAIAtBjARqED4NBiAHQQECfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAEKAIACyAHKAIAKAIMEQMARQ0GIAtBDGogABCkAyAQIAsoAgwQjgIMAAsACwJAAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELRQ0AAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAQAMAQsgBCgC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AxCoAyIBIAEoAgAoAiwRAgAgCyAKKAIENgBcIAIgASABKAIAKAIgEQIAIAwgAhBkIAIQMhogAiABIAEoAgAoAhwRAgAgDSACEGQgAhAyGiALIAEgASgCACgCDBEBADoAWyALIAEgASgCACgCEBEBADoAWiACIAEgASgCACgCFBECACAPIAIQZCACEDIaIAIgASABKAIAKAIYEQIAIA4gAhBkIAIQMhogASABKAIAKAIkEQEADAELIApBBGoiAiADEKcDIgEgASgCACgCLBECACALIAooAgQ2AFwgAiABIAEoAgAoAiARAgAgDCACEGQgAhAyGiACIAEgASgCACgCHBECACANIAIQZCACEDIaIAsgASABKAIAKAIMEQEAOgBbIAsgASABKAIAKAIQEQEAOgBaIAIgASABKAIAKAIUEQIAIA8gAhBkIAIQMhogAiABIAEoAgAoAhgRAgAgDiACEGQgAhAyGiABIAEoAgAoAiQRAQALNgIYIApBEGokACAJIAgoAgA2AgAgBEGABHEhEkEAIQNBACEBA0AgASECAkACQAJAAkAgA0EERg0AIAAgC0GMBGoQPw0AQQAhCgJAAkACQAJAAkACQCALQdwAaiADaiwAAA4FAQAEAwUJCyADQQNGDQcCfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAELQAAC8AiAUEATgR/IAcoAgggAUH/AXFBAnRqKAIAQQFxBUEACwRAIAtBEGogABCqAyAQIAssABAQjwIMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahA/DQYCfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAELQAAC8AiAUEATgR/IAcoAgggAUH/AXFBAnRqKAIAQQFxBUEAC0UNBiALQRBqIAAQqgMgECALLAAQEI8CDAALAAsCQAJ/IA0tAAtBB3YEQCANKAIEDAELIA0tAAtB/wBxC0UNAAJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAQtAAALwEH/AXECfyANLQALQQd2BEAgDSgCAAwBCyANCy0AAEcNACAAEF0aIAZBADoAACANIAICfyANLQALQQd2BEAgDSgCBAwBCyANLQALQf8AcQtBAUsbIQEMBgsCQAJ/IAwtAAtBB3YEQCAMKAIEDAELIAwtAAtB/wBxC0UNAAJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAQtAAALwEH/AXECfyAMLQALQQd2BEAgDCgCAAwBCyAMCy0AAEcNACAAEF0aIAZBAToAACAMIAICfyAMLQALQQd2BEAgDCgCBAwBCyAMLQALQf8AcQtBAUsbIQEMBgsCQAJ/IA0tAAtBB3YEQCANKAIEDAELIA0tAAtB/wBxC0UNAAJ/IAwtAAtBB3YEQCAMKAIEDAELIAwtAAtB/wBxC0UNACAFIAUoAgBBBHI2AgBBACEADAQLAn8gDS0AC0EHdgRAIA0oAgQMAQsgDS0AC0H/AHELRQRAAn8gDC0AC0EHdgRAIAwoAgQMAQsgDC0AC0H/AHELRQ0FCyAGAn8gDC0AC0EHdgRAIAwoAgQMAQsgDC0AC0H/AHELRToAAAwECwJAIANBAkkNACACDQAgEg0AQQAhASADQQJGIAstAF9BAEdxRQ0FCyALIA4QdjYCDCALIAsoAgw2AhACQCADRQ0AIAMgC2otAFtBAUsNAANAAkAgCyAOEJwBNgIMIAsoAhAiASALKAIMRg0AIAEsAAAiAUEATgR/IAcoAgggAUH/AXFBAnRqKAIAQQFxBUEAC0UNACALIAsoAhBBAWo2AhAMAQsLIAsgDhB2NgIMAn8gEC0AC0EHdgRAIBAoAgQMAQsgEC0AC0H/AHELIAsoAhAgC0EMaiIBKAIAayIETwRAIAsgEBCcATYCDCABQQAgBGsQmgIhBCAQEJwBIQogDhB2IRMjAEEQayIBJAAgASAKNgIIIAEgBDYCDCABIBM2AgQDQAJAIAEoAgwiBCABKAIIRyIKRQ0AIAQtAAAgASgCBC0AAEcNACABIARBAWo2AgwgASABKAIEQQFqNgIEDAELCyABQRBqJAAgCkUNAQsgCyAOEHY2AgggCyALKAIINgIMIAsgCygCDDYCEAsgCyALKAIQNgIMA0ACQCALIA4QnAE2AgggCygCDCALKAIIRg0AIAAgC0GMBGoQPw0AAn8gACgCACIBKAIMIgQgASgCEEYEQCABIAEoAgAoAiQRAQAMAQsgBC0AAAvAQf8BcSALKAIMLQAARw0AIAAQXRogCyALKAIMQQFqNgIMDAELCyASRQ0DIAsgDhCcATYCCCALKAIMIAsoAghGDQMgBSAFKAIAQQRyNgIAQQAhAAwCCwNAAkAgACALQYwEahA/DQACfwJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAQtAAALwCIBQQBOBH8gBygCCCABQf8BcUECdGooAgBBwABxBUEACwRAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQqQMgCSgCACEECyAJIARBAWo2AgAgBCABOgAAIApBAWoMAQsCfyAPLQALQQd2BEAgDygCBAwBCyAPLQALQf8AcQtFDQEgCkUNASALLQBaIAFB/wFxRw0BIAsoAmQiASALKAJgRgRAIBEgC0HkAGogC0HgAGoQswEgCygCZCEBCyALIAFBBGo2AmQgASAKNgIAQQALIQogABBdGgwBCwsCQCALKAJkIgEgESgCAEYNACAKRQ0AIAsoAmAgAUYEQCARIAtB5ABqIAtB4ABqELMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqED9FBEACfyAAKAIAIgEoAgwiBCABKAIQRgRAIAEgASgCACgCJBEBAAwBCyAELQAAC8BB/wFxIAstAFtGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAEF0aIAsoAhhBAEwNAQJAIAAgC0GMBGoQP0UEQAJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAQtAAALwCIBQQBOBH8gBygCCCABQf8BcUECdGooAgBBwABxBUEACw0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEKkDCwJ/IAAoAgAiASgCDCIEIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAQtAAALwCEBIAkgCSgCACIEQQFqNgIAIAQgAToAACALIAsoAhhBAWs2AhgMAAsACyACIQEgCCgCACAJKAIARw0DIAUgBSgCAEEEcjYCAEEAIQAMAQsCQCACRQ0AQQEhCgNAAn8gAi0AC0EHdgRAIAIoAgQMAQsgAi0AC0H/AHELIApNDQECQCAAIAtBjARqED9FBEACfyAAKAIAIgEoAgwiAyABKAIQRgRAIAEgASgCACgCJBEBAAwBCyADLQAAC8BB/wFxAn8gAi0AC0EHdgRAIAIoAgAMAQsgAgsgCmotAABGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABBdGiAKQQFqIQoMAAsAC0EBIQAgESgCACALKAJkRg0AQQAhACALQQA2AhAgDyARKAIAIAsoAmQgC0EQahBjIAsoAhAEQCAFIAUoAgBBBHI2AgAMAQtBASEACyAQEDIaIAwQMhogDRAyGiAOEDIaIA8QMhogESgCACEBIBFBADYCACABBEAgASARKAIEEQAACwwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRC2AxoLDAAgAEEBQS0QuAMaC20BAX8jAEEQayIGJAAgBkEAOgAPIAYgBToADiAGIAQ6AA0gBkElOgAMIAUEQCAGLQANIQQgBiAGLQAOOgANIAYgBDoADgsgAiABIAIoAgAgAWsgBkEMaiADIAAoAgAQGiABajYCACAGQRBqJAALQgAgASACIAMgBEEEEIUBIQEgAy0AAEEEcUUEQCAAIAFB0A9qIAFB7A5qIAEgAUHkAEgbIAFBxQBIG0HsDms2AgALC0AAIAIgAyAAQQhqIAAoAggoAgQRAQAiACAAQaACaiAFIARBABDhASAAayIAQZ8CTARAIAEgAEEMbUEMbzYCAAsLQAAgAiADIABBCGogACgCCCgCABEBACIAIABBqAFqIAUgBEEAEOEBIABrIgBBpwFMBEAgASAAQQxtQQdvNgIACwtCACABIAIgAyAEQQQQhgEhASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASBsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEBACIAIABBoAJqIAUgBEEAEOIBIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQEAIgAgAEGoAWogBSAEQQAQ4gEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCwQAQQILuQIBBX8jAEEQayIHJAAjAEEQayIDJAACQCABQe////8DTQRAAkAgAUECSQRAIAAgAC0AC0GAAXEgAXI6AAsgACAALQALQf8AcToACyAAIQQMAQsgA0EIaiAAIAFBAk8EfyABQQRqQXxxIgQgBEEBayIEIARBAkYbBUEBC0EBahCxASADKAIM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IAItAAAMAQsgARA7C0EoRgRAQQEhBgwBC0KAgICAgIDg//8AIRUgASkDcEIAUw0DIAEgASgCBEEBazYCBAwDCwNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARA7CyIJQcEAayECAkACQCAJQTBrQQpJDQAgAkEaSQ0AIAlB3wBGDQAgCUHhAGtBGk8NAQsgBkEBaiEGDAELC0KAgICAgIDg//8AIRUgCUEpRg0CIAEpA3AiGEIAWQRAIAEgASgCBEEBazYCBAsCQCADBEAgBg0BDAQLDAELA0AgGEIAWQRAIAEgASgCBEEBazYCBAsgBkEBayIGDQALDAILIwNBHGpBHDYCACABQgAQgQELQgAhFQsgACAWNwMAIAAgFTcDCCAOQTBqJAALygYCBX8EfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABCmAUUNAAJ/IARC////////P4MhCwJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAuEUBsMAgsgAyALhFALCyEJIAJCMIinIghB//8BcSIHQf//AUYNACAJDQELIAVBEGogASACIAMgBBBGIAUgBSkDECICIAUpAxgiASACIAEQ1wMgBSkDCCECIAUpAwAhBAwBCyABIAJC////////////AIMiCyADIARC////////////AIMiChCmAUEATARAIAEgCyADIAoQpgEEQCABIQQMAgsgBUHwAGogASACQgBCABBGIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB//8BcSEGIAcEfiABBSAFQeAAaiABIAtCAEKAgICAgIDAu8AAEEYgBSkDaCILQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAKQgBCgICAgICAwLvAABBGIAUpA1giCkIwiKdB+ABrIQYgBSkDUCEDCyAKQv///////z+DQoCAgICAgMAAhCEMIAtC////////P4NCgICAgICAwACEIQsgBiAHSARAA0ACfiALIAx9IAMgBFatfSIKQgBZBEAgCiAEIAN9IgSEUARAIAVBIGogASACQgBCABBGIAUpAyghAiAFKQMgIQQMBQsgCkIBhiAEQj+IhAwBCyALQgGGIARCP4iECyELIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAsgDH0gAyAEVq19IgpCAFMEQCALIQoMAQsgCiAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEEYgBSkDOCECIAUpAzAhBAwBCyAKQv///////z9YBEADQCAEQj+IIQ0gB0EBayEHIARCAYYhBCANIApCAYaEIgpCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIApC////////P4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxBGIAUpA0ghAiAFKQNAIQQMAQsgCkL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC6oPAgV/D34jAEHQAmsiBSQAIARC////////P4MhCyACQv///////z+DIQogAiAEhUKAgICAgICAgIB/gyENIARCMIinQf//AXEhCAJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAhB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQ0MAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhDSADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCADIAJCgICAgICAwP//AIWEUARAQgAhAUKAgICAgIDg//8AIQ0MAwsgDUKAgICAgIDA//8AhCENQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAQgAhAQwCCyABIAyEUARAQoCAgICAgOD//wAgDSACIAOEUBshDUIAIQEMAgsgAiADhFAEQCANQoCAgICAgMD//wCEIQ1CACEBDAILIAxC////////P1gEQCAFQcACaiABIAogASAKIApQIgYbeSAGQQZ0rXynIgZBD2sQZUEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIHG3kgB0EGdK18pyIHQQ9rEGUgBiAHakEQayEGIAUpA7gCIQsgBSkDsAIhAwsgBUGgAmogC0KAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQXyAFQZACakIAIAUpA6gCfUIAIARCABBfIAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAEF8gBUHwAWogBEIAQgAgBSkDiAJ9QgAQXyAFQeABaiAFKQP4AUIBhiAFKQPwAUI/iIQiBEIAIAJCABBfIAVB0AFqIARCAEIAIAUpA+gBfUIAEF8gBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQXyAFQbABaiAEQgBCACAFKQPIAX1CABBfIAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI/iIRCAX0iAkIAEF8gBUGQAWogA0IPhkIAIAJCABBfIAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIgwgBSkDmAF8IgQgDFStfCAEQgFWrXx9QgAQXyAFQYABakIBIAR9QgAgAkIAEF8gBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIMQiCIIgsgECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig5WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL/////D4MiFCAKfiIRIAIgC358Ig8gEVStIA8gDyATIAxC/v///w+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiALIBR+fCILQiCIIAIgC1atQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL/////////AFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhBfIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+/wBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASEF8gAUIwhiAFKQNofSAFKQNgIgxCAFKtfSEKQgAgDH0hCyABIQwgBkH//wBqCyIGQf//AU4EQCANQoCAgICAgMD//wCEIQ1CACEBDAELAn4gBkEASgRAIApCAYYgC0I/iIQhCiAEQv///////z+DIAatQjCGhCEMIAtCAYYMAQsgBkGPf0wEQEIAIQEMAgsgBUFAayACIARBASAGaxCoASAFQTBqIAwgFSAGQfAAahBlIAVBIGogAyASIAUpA0AiAiAFKQNIIgwQXyAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiAVStfSEKIAQgAX0LIQQgBUEQaiADIBJCA0IAEF8gBSADIBJCBUIAEF8gDCACIAIgAyACQgGDIgEgBHwiA1QgCiABIANWrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA//8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD//wBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCANhCENCyAAIAE3AwAgACANNwMIIAVB0AJqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEEYgBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQRkH9/wIgAyADQf3/Ak4bQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQRiAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARBMGogASACQgBCgICAgICAgDkQRkHogX0gAyADQeiBfUwbQZr+AWohAyAEKQM4IQIgBCkDMCEBCyAEIAEgAkIAIANB//8Aaq1CMIYQRiAAIAQpAwg3AwggACAEKQMANwMAIARB0ABqJAALNQAgACABNwMAIAAgAkL///////8/gyAEQjCIp0GAgAJxIAJCMIinQf//AXFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwtLAQJ/IAAoAgAiAQRAAn8gASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQEADAELIAIoAgALQX9HBEAgACgCAEUPCyAAQQA2AgALQQELSwECfyAAKAIAIgEEQAJ/IAEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEBAAwBCyACLQAAC0F/RwRAIAAoAgBFDwsgAEEANgIAC0EBC5UDAgJ/AX4CfyABKQMQIgZCAn+nIQUjAEHgAGsiBCQAAkACQAJAAkAgAikDIEIBUg0AIAIpAyhCAVINACABKQMYIAIpAxhSDQEgASgCaA0CIAIoAmgNAiAEIAIpAxAgBUEBdKx8IAZCAX1Cf4V8IAOsf0IBfDcDQCABKQMgIQYgBP0MAQAAAAAAAAABAAAAAAAAAP0LBFAgBCAGNwNIIABBAEECIARBQGtBABBAIgBFDQMgACADNgJEIAAgATYCbCAAQQA2AmggAEEsNgJAIABBATYCTCAAIAU2AkggACACNgJwIARB4ABqJAAgAAwECyAEQcfNADYCOCAEQcE2NgI0IARB6CQ2AjBB6KcCKAIAIARBMGoQMBAAAAsgBEHSJzYCKCAEQcI2NgIkIARB6CQ2AiBB6KcCKAIAIARBIGoQMBAAAAsgBEGrHzYCGCAEQcY2NgIUIARB6CQ2AhBB6KcCKAIAIARBEGoQMBAAAAsgBEHZKjYCCCAEQaYkNgIEIARB6CQ2AgBB6KcCKAIAIAQQMBAAAAsLpAEBA38gAUEISwRAQQQgASABQQRNGyEBQQEgACAAQQFNGyEAA0ACQCAAIAFqQQFrQQAgAWtxIgIgACAAIAJJGyEDQQAhBCMAQRBrIgIkAAJAIAFBA3ENACADIAFwDQAgAkEMaiABIAMQ8AMhA0EAIAIoAgwgAxshBAsgAkEQaiQAIAQiAg0AQdz9NP4QAgAiA0UNACADEQkADAELCyACDwsgABAxCwkAIAFBARDeAwsTACABQQhLBEAgABAvDwsgABAvC4YBAQN/IwBBEGsiBCQAIwBBIGsiAyQAIANBGGogACABEKkCIANBEGogA0EMaiADKAIYIAMoAhwgAhCoAiADIAAgAygCECAAa2o2AgwgAyACIAMoAhQgAmtqNgIIIAQgAygCDDYCCCAEIAMoAgg2AgwgA0EgaiQAIAQoAgwhBSAEQRBqJAAgBQsJACAAEKsCEC8L+QECBX8BfiMAQSBrIgMkAAJAIAEpAyBCAVINACABKQMoQgFSDQAgAikDGEIBUg0AIAIpAyBCAVINACACKQMoQgFSDQAgAigCAEESRw0AAn8CQCABKAJoDQAgAigCaA0AQQAMAQtBAQshByABKQMQIQggAyACKQMQNwMYIAMgCDcDECAAQQBBAiADQRBqQQAQQCIEQSE2AkAgBwRAIAAgBCgCACAEKAIIIARBEGpBABBAIQULIAQgATYCbCAEIAU2AmggBCACNgJwIANBIGokACAEDwsgA0HQMzYCCCADQZszNgIEIANB6CQ2AgBB6KcCKAIAIAMQMBAAAAulAQEHfyMAQRBrIgIkACAAKAJAIgEEfyACQY4BNgIEIAJBCGogASACQQRqEE0hASAAIAAoAgAoAhgRAQAhBCABKAIAIQYgAUEANgIAIAYQmAQhBSAAQQA2AkAgAEEAQQAgACgCACgCDBEDABogASgCACEDIAFBADYCACADBEAgAyABQQRqKAIAEQEAGgtBACAAIAQgBXIbBUEACyEHIAJBEGokACAHCwoAIABB1O40EHoLhgIBA38jAEEQayIEJAAgAiABayIFQe////8HTQRAAkAgBUELSQRAIAAgAC0AC0GAAXEgBXI6AAsgACAALQALQf8AcToACyAAIQMMAQsgBEEIaiAAIAVBC08EfyAFQRBqQXBxIgMgA0EBayIDIANBC0YbBUEKC0EBahC6ASAEKAIMGiAAIAQoAggiAzYCACAAIAAoAghBgICAgHhxIAQoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgBTYCBAsDQCABIAJHBEAgAyABLQAAOgAAIANBAWohAyABQQFqIQEMAQsLIARBADoAByADIAQtAAc6AAAgBEEQaiQADwsQSwALVAECfwJAIAAoAgAiAkUNAAJ/IAIoAhgiAyACKAIcRgRAIAIgASACKAIAKAI0EQQADAELIAIgA0EEajYCGCADIAE2AgAgAQtBf0cNACAAQQA2AgALCzEBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIoEQEADwsg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Q6IgARD3AyEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC7gBAQF/IAFBAEchAgJAAkACQCAAQQNxRQ0AIAFFDQADQCAALQAARQ0CIAFBAWsiAUEARyECIABBAWoiAEEDcUUNASABDQALCyACRQ0BAkAgAC0AAEUNACABQQRJDQADQCAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQIgAEEEaiEAIAFBBGsiAUEDSw0ACwsgAUUNAQsDQCAALQAARQRAIAAPCyAAQQFqIQAgAUEBayIBDQALC0EACx0AIAAgABCOBDYCeCAAQQH+FwJ8IABBAP4XAoABC98CAgZ/A34jAEFAaiIEJAACQAJAIAEoAjAiBSABKAIAIgdBJGwiBkGY6gBqKAIARw0AIAE1AjQiCiABKQMQIgwgBa1+IAZBlOoAajQCAH9SDQAgATUCOCILIAogASkDGCIKflINACABNQI8IAsgASkDICILflINACABKQMoIAogDH4gC35+IAIgA35SDQEgASgCaCEJIAQgAzcDOCAEIAI3AzAgACAHQQIgBEEwaiABKAKYARBAIQggBCABQZwBajYCACAIQfPMACAEEGoiBUEdNgJAIAkEfyAAIAUoAgAgBSgCCCAFQRBqQQAQQAVBAAshACAFIAE2AmwgBSAANgJoIARBQGskACAFDwsgBEHZzgA2AiggBEHiMDYCJCAEQegkNgIgQeinAigCACAEQSBqEDAQAAALIARBmzU2AhggBEHjMDYCFCAEQegkNgIQQeinAigCACAEQRBqEDAQAAALswECAX0CfyAAiyEBAkAgALwiA0H/////B3EiAkHVvrL4A08EQCACQYGAgIkETwRAQwAAAAAgAZVDAACAP5IhAQwCC0MAAIA/QwAAAEAgASABkhCzAkMAAABAkpWTIQEMAQsgAkH5iov0A08EQCABIAGSELMCIgAgAEMAAABAkpUhAQwBCyACQYCAgARJDQAgAUMAAADAlBCzAiIAjCAAQwAAAECSlSEBCyABjCABIANBAEgbC9oBAQJ/AkAgAUH/AXEiAwRAIABBA3EEQANAIAAtAAAiAkUNAyACIAFB/wFxRg0DIABBAWoiAEEDcQ0ACwsCQCAAKAIAIgJBf3MgAkGBgoQIa3FB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QcwSakGXHC0AADoAACAAQQU6ANMSIABBDDYCxBIgAEEAOgDNEiAAQZMcKAAANgLIEiAAQYgYaiAAQdwSaigCADYCACAAIAApAtQSNwOAGCAAQYwYakEMNgIAIABBmBhqIABB0BJqKAIANgIAIABBkBhqIAApAsgSNwMAIABBADoAuhIgAEHh5AE7AbgSIABBAjoAwxIgAEGwEmpB4SQvAAA7AQAgAEEGOgC3EiAAQQ02AqgSIABBADoAshIgAEHdJCgAADYCrBIgAEGkGGogAEHAEmooAgA2AgAgACAAKQK4EjcCnBggAEGoGGpBDTYCACAAQbQYaiAAQbQSaigCADYCACAAQawYaiAAKQKsEjcCACAAQQA6AJ4SIABB8+wBOwGcEiAAQQI6AKcSIABBkxJqQe8bKAAANgAAIABBBzoAmxIgAEEONgKMEiAAQQA6AJcSIABB7BsoAAA2ApASIABBwBhqIABBpBJqKAIANgIAIAAgACkCnBI3A7gYIABBxBhqQQ42AgAgAEHQGGogAEGYEmooAgA2AgAgAEHIGGogACkCkBI3AwAgAEEAOgCCEiAAQenoATsBgBIgAEECOgCLEiAAQfcRakHvGCgAADYAACAAQQc6AP8RIABBDzYC8BEgAEEAOgD7ESAAQewYKAAANgL0ESAAQdwYaiAAQYgSaigCADYCACAAIAApAoASNwLUGCAAQeAYakEPNgIAIABB7BhqIABB/BFqKAIANgIAIABB5BhqIAApAvQRNwIAIABBADoA5hEgAEHpyAE7AeQRIABBAjoA7xEgAEHgEWoiAkGZGC8AADsBACAAQYAUOwHiESAAQRA2AtQRIABBkRgpAAAiFDcC2BEgAEH4GGogAEHsEWooAgA2AgAgACAAKQLkETcD8BggAEH8GGpBEDYCACAAQYgZaiACKAIANgIAIABBgBlqIBQ3AwAgAEEAOgDKESAAQejSATsByBEgAEECOgDTESAAQcARakGLGy0AADoAACAAQQU6AMcRIABBETYCuBEgAEEAOgDBESAAQYcbKAAANgK8ESAAQZQZaiAAQdARaigCADYCACAAIAApAsgRNwKMGSAAQZgZakERNgIAIABBpBlqIABBxBFqKAIANgIAIABBnBlqIAApArwRNwIAIABBADoArhEgAEHm0gE7AawRIABBAjoAtxEgAEGjEWpB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aiAAQcgJaigCADYCACAAQaghaiAAKQLACTcDACAAQQA6ALIJIABB7dwBOwGwCSAAQQI6ALsJIABBrAlqIgJB6hgtAAA6AAAgAEEJOgCvCSAAQTc2AqAJIABBADoArQkgAEHiGCkAACIUNwKkCSAAQbwhaiAAQbgJaigCADYCACAAIAApArAJNwK0ISAAQcAhakE3NgIAIABBzCFqIAIoAgA2AgAgAEHEIWogFDcCACAAQQA6AJYJIABB4uYBOwGUCSAAQQI6AJ8JIABBiwlqQbMYKAAANgAAIABBBzoAkwkgAEE4NgKECSAAQQA6AI8JIABBsBgoAAA2AogJIABB2CFqIABBnAlqKAIANgIAIAAgACkClAk3A9AhIABB3CFqQTg2AgAgAEHoIWogAEGQCWooAgA2AgAgAEHgIWogACkCiAk3AwAgAEEAOgD6CCAAQevWATsB+AggAEECOgCDCSAAQfAIakGQHC8AADsBACAAQQY6APcIIABBOTYC6AggAEEAOgDyCCAAQYwcKAAANgLsCCAAQfQhaiAAQYAJaigCADYCACAAIAApAvgINwLsISAAQfghakE5NgIAIABBhCJqIABB9AhqKAIANgIAIABB/CFqIAApAuwINwIAIABBADoA3gggAEHz4gE7AdwIIABBAjoA5wggAEHYCGoiAkEAOgAAIABBCDoA2wggAEE6NgLMCCAAQuHYiYvmrdqw7gA3AtAIIABBkCJqIABB5AhqKAIANgIAIAAgACkC3Ag3A4giIABBlCJqQTo2AgAgAEGgImogAigCADYCACAAQZgiakLh2ImL5q3asO4ANwMAIABBADoAwgggAEHz7gE7AcAIIABBAjoAywggAEG3CGpB3RooAAA2AAAgAEEHOgC/CCAAQTs2ArAIIABBADoAuwggAEHaGigAADYCtAggAEGsImogAEHICGooAgA2AgAgACAAKQLACDcCpCIgAEGwImpBOzYCACAAQbwiaiAAQbwIaigCADYCACAAQbQiaiAAKQK0CDcCACAAQQA6AKYIIABB59gBOwGkCCAAQQI6AK8IIABBoAhqIgJBADoAACAAQQg6AKMIIABBPDYClAggAELnwrHLtqzasO4ANwKYCCAAQcgiaiAAQawIaigCADYCACAAIAApAqQINwPAIiAAQcwiakE8NgIAIABB2CJqIAIoAgA2AgAgAEHQImpC58Kxy7as2rDuADcDACAAQQA6AIoIIABB7eQBOwGICCAAQQI6AJMIIABB+xooAAA2AP8HIABBBzoAhwggAEE9NgL4ByAAQQA6AIMIIABB+BooAAA2AvwHIABB5CJqIABBkAhqKAIANgIAIAAgACkCiAg3AtwiIABB6CJqQT02AgAgAEH0ImogAEGECGooAgA2AgAgAEHsImogACkC/Ac3AgAgAEEAOgDuByAAQfDCATsB7AcgAEECOgD3ByAAQZAbKAAANgDjByAAQQc6AOsHIABBPjYC3AcgAEEAOgDnByAAQY0bKAAANgLgByAAQYAjaiAAKAL0BzYCACAAIAApAuwHNwP4IiAAQYQjakE+NgIAIABBkCNqIAAoAugHNgIAIABBiCNqIAApAuAHNwMAIABBADoA0gcgAEHz0gE7AdAHIABBAjoA2wcgAEGKJigAADYAxwcgAEEHOgDPByAAQT82AsAHIABBADoAywcgAEGHJigAADYCxAcgAEGcI2ogACgC2Ac2AgAgACAAKQLQBzcClCMgAEGgI2pBPzYCACAAQawjaiAAKALMBzYCACAAQaQjaiAAKQLEBzcCACAAQQA6ALYHIABB69oBOwG0ByAAQQI6AL8HIABBjhQtAAA6AKwHIABBBToAswcgAEHAADYCpAcgAEEAOgCtByAAQYoUKAAANgKoByAAQbgjaiAAKAK8BzYCACAAIAApArQHNwOwIyAAQbwjakHAADYCACAAQcgjaiAAKAKwBzYCACAAQcAjaiAAKQKoBzcDACAAQQA6AJoHIABB89wBOwGYByAAQQI6AKMHIABB/yUtAAA6AJAHIABBBToAlwcgAEHBADYCiAcgAEEAOgCRByAAQfslKAAANgKMByAAQdQjaiAAKAKgBzYCACAAIAApApgHNwLMIyAAQdgjakHBADYCACAAQeQjaiAAKAKUBzYCACAAQdwjaiAAKQKMBzcCACAAQQA6AP4GIABB+d4BOwH8BiAAQQI6AIcHIABBqSYvAAA7AfQGIABBBjoA+wYgAEHCADYC7AYgAEEAOgD2BiAAQaUmKAAANgLwBiAAQfAjaiAAKAKEBzYCACAAIAApAvwGNwPoIyAAQfQjakHCADYCACAAQYAkaiAAKAL4BjYCACAAQfgjaiAAKQLwBjcDACAAQQA6AOIGIABB894B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OgDnAkEQEDEiDkEAOgANIA5B4xspAAA3AAUgDkHeGykAADcAACAAQaQoakHWADYCACAAQaAoaiAAKALkAjYCACAAIAApAtwCNwOYKCAAQagoaiAOQQ0QcCAAQQA6ANICIABB7fIBOwHQAiAAQQI6ANsCIABBxBQoAAA2AMcCIABBwChqQdcANgIAIABBvChqIAAoAtgCNgIAIABBwRQoAAA2AsQCIABBADoAywIgAEHEKGogACkCxAI3AgAgAEEHOgDPAiAAQcwoaiAAKALMAjYCACAAQdcANgLAAiAAIAApAtACNwK0KCAAQQA6ALYCIABB4t4BOwG0AiAAQQI6AL8CIABB0BcoAAA2AKsCIABBBzoAswIgAEHYADYCpAIgAEEAOgCvAiAAQc0XKAAANgKoAiAAQdgoaiAAKAK8AjYCACAAIAApArQCNwPQKCAAQdwoakHYADYCACAAQegoaiAAKAKwAjYCACAAQeAoaiAAKQKoAjcDACAAQQA6AJoCIABB9NgBOwGYAiAAQQI6AKMCIABBsxwoAAA2AI8CIABBBzoAlwIgAEHZADYCiAIgAEEAOgCTAiAAQbAcKAAANgKMAiAAQfQoaiAAKAKgAjYCACAAIAApApgCNwLsKCAAQfgoakHZADYCACAAQYQpaiAAKAKUAjYCACAAQfwoaiAAKQKMAjcCACAAQQA6AP4BIABB7c4BOwH8ASAAQQI6AIcCIABBADoA+AEgAEEIOgD7ASAAQdoANgLsASAAQu3CsYv2rNi5+QA3AvABIABBkClqIAAoAoQCNgIAIAAgACkC/AE3A4gpIABBlClqQdoANgIAIABBoClqIAAoAvgBNgIAIABBmClqQu3CsYv2rNi5+QA3AwAgAEEAOgDiASAAQeHmATsB4AEgAEECOgDrASAAQQA6ANwBIABBCDoA3wEgAEHbADYC0AEgAELh5s2L1q3ZueUANwLUASAAQawpaiAAKALoATYCACAAIAApAuABNwKkKSAAQbApakHbADYCACAAQbwpaiAAKALcATYCACAAQbQpakLh5s2L1q3ZueUANwIAIABBADoAxgEgAEH06AE7AcQBIABBAjoAzwEgAEG/FC0AADoAvAEgAEEFOgDDASAAQdwANgK0ASAAQQA6AL0BIABBuxQoAAA2ArgBIABByClqIAAoAswBNgIAIAAgACkCxAE3A8ApIABBzClqQdwANgIAIABB2ClqIAAoAsABNgIAIABB0ClqIAApArgBNwMAIABBAzoAswEgAEEAOgCrASAAQcYKLQAAOgCqASAAQcQKLwAAOwGoASAAQQA6AKQBIABBCDoApwEgAEHdADYCmAEgAELowt2Llq3asO4ANwKcASAAQeQpaiAAKAKwATYCACAAIAApAqgBNwLcKSAAQegpakHdADYCACAAQfQpaiAAKAKkATYCACAAQewpakLowt2Llq3asO4ANwIAIABBADoAjgEgAEHs3AE7AYwBIABBAjoAlwEgAEGSJigAADYAgwEgAEEHOgCLASAAQd4ANgJ8IABBADoAhwEgAEGPJigAADYCgAEgAEGAKmogACgClAE2AgAgACAAKQKMATcD+CkgAEGEKmpB3gA2AgAgAEGQKmogACgCiAE2AgAgAEGIKmogACkCgAE3AwAgAEEAOgByIABB6MIBOwFwIABBAjoAeyAAQfklLQAAOgBoIABBBToAbyAAQd8ANgJgIABBADoAaSAAQfUlKAAANgJkIABBnCpqIAAoAng2AgAgACAAKQJwNwKUKiAAQaAqakHfADYCACAAQawqaiAAKAJsNgIAIABBpCpqIAApAmQ3AgAgAEEAOgBWIABB4sIBOwFUIABBAjoAXyAAQfkTKAAANgBLIABBBzoAUyAAQeAANgJEIABBADoATyAAQfYTKAAANgJIIABBuCpqIAAoAlw2AgAgACAAKQJUNwOwKiAAQbwqakHgADYCACAAQcgqaiAAKAJQNgIAIABBwCpqIAApAkg3AwAgAEEAOgA6IABB6u4BOwE4IABBAjoAQyAAQQA6ADQgAEEIOgA3IABB4QA2AiggAELqwtmL5q3ZueUANwIsIABB1CpqIABBQGsoAgA2AgAgACAAKQI4NwLMKiAAQdgqakHhADYCACAAQeQqaiAAKAI0NgIAIABB3CpqQurC2Yvmrdm55QA3AgAgAEEAOgAeIABB8+oBOwEcIABBAjoAJyAAQdwfLQAAOgAYIABBCToAGyAAQeIANgIMIABBADoAGSAAQdQfKQAAIhQ3AhAgAEHwKmogACgCJDYCACAAIAApAhw3A+gqIABB9CpqQeIANgIAIABBgCtqIAAoAhg2AgAgAEH4KmogFDcDAEGYuzRCADcCAEGUuzRBmLs0NgIAA0AjAEEQayIIJAAgAEGIK2oiEQJ/IABBsBVqIARBHGxqIQVBmLs0KAIAIQYCQAJAAkBBmLs0IgNBlLs0KAIARg0AAkAgBkUEQEGYuzQhAgNAIAIoAggiAygCACACRiETIAMhAiATDQALDAELIAYhAgNAIAIiAygCBCICDQALCwJAIAUoAgQgBS0ACyICIALAIg9BAEgiCxsiByADKAIUIAMtABsiAiACwEEASCINGyICIAIgB0sbIhAEQCADKAIQIANBEGogDRsgBSgCACAFIAsbIBAQRSILDQELIAIgB0kNAQwCCyALQQBODQELIAZFDQEgCCADNgIMIANBBGoMAgtBmLs0KAIAIgJFDQAgBSgCACAFIA9BAEgbIQ9BmLs0IQYDQAJAAkACQAJAAkACQCACIgMoAhQgAi0AGyICIALAQQBIIg0bIgIgByACIAdJIhAbIgsEQCAPIAMoAhAgA0EQaiANGyINIAsQRSISRQRAIAIgB0sNAgwDCyASQQBODQIMAQsgAiAHTQ0CCyADIQYgAygCACICDQUMBAsgDSAPIAsQRSICDQELIBANAQwCCyACQQBODQELIANBBGohBiADKAIEIgINAQsLIAggAzYCDCAGDAELIAhBmLs0NgIMQZi7NAsiBigCACICBH9BAAVBLBAxIgJBEGohAwJAIAUsAAtBAE4EQCADIAUpAgA3AgAgAyAFKAIINgIIDAELIAMgBSgCACAFKAIEEHALIAIgBSgCDDYCHCACQSBqIQMCQCAFLAAbQQBOBEAgAyAFKQIQNwIAIAMgBSgCGDYCCAwBCyADIAUoAhAgBSgCFBBwCyACIAgoAgw2AgggAkIANwIAIAYgAjYCACACIQNBlLs0KAIAKAIAIgUEQEGUuzQgBTYCACAGKAIAIQMLQZi7NCgCACADEJcBQZy7NEGcuzQoAgBBAWo2AgBBAQs6AAQgESACNgIAIAhBEGokACAEQQFqIgRB4wBHDQALIABBhCtqIQQDQCAEQQFrLAAAQQBIBEAgBEEMaygCABAvCyAEQRxrIQIgBEERaywAAEEASARAIAIoAgAQLwsgAiIEIABBsBVqRw0ACyAALAAbQQBIBEAgACgCEBAvCyAALAAnQQBIBEAgACgCHBAvCyAALAA3QQBIBEAgACgCLBAvCyAALABDQQBIBEAgACgCOBAvCyAALABTQQBIBEAgACgCSBAvCyAALABfQQBIBEAgACgCVBAvCyAALABvQQBIBEAgACgCZBAvCyAALAB7QQBIBEAgACgCcBAvCyAALACLAUEASARAIAAoAoABEC8LIAAsAJcBQQBIBEAgACgCjAEQLwsgACwApwFBAEgEQCAAKAKcARAvCyAALACzAUEASARAIAAoAqgBEC8LIAAsAMMBQQBIBEAgACgCuAEQLwsgACwAzwFBAEgEQCAAKALEARAvCyAALADfAUEASARAIAAoAtQBEC8LIAAsAOsBQQBIBEAgACgC4AEQLwsgACwA+wFBAEgEQCAAKALwARAvCyAALACHAkEASARAIAAoAvwBEC8LIAAsAJcCQQBIBEAgACgCjAIQLwsgACwAowJBAEgEQCAAKAKYAhAvCyAALACzAkEASARAIAAoAqgCEC8LIAAsAL8CQQBIBEAgACgCtAIQLwsgACwAzwJBAEgEQCAAKALEAhAvCyAALADbAkEASARAIAAoAtACEC8LIA4QLyAALADnAkEASARAIAAoAtwCEC8LIAAsAPcCQQBIBEAgACgC7AIQLwsgACwAgwNBAEgEQCAAKAL4AhAvCyAALACTA0EASARAIAAoAogDEC8LIAAsAJ8DQQBIBEAgACgClAMQLwsgACwArwNBAEgEQCAAKAKkAxAvCyAALAC7A0EASARAIAAoArADEC8LIAAsAMsDQQBIBEAgACgCwAMQLwsgACwA1wNBAEgEQCAAKALMAxAvCyAALADnA0EASARAIAAoAtwDEC8LIAAsAPMDQQBIBEAgACgC6AMQLwsgChAvIAAsAP8DQQBIBEAgACgC9AMQLwsgACwAjwRBAEgEQCAAKAKEBBAvCyAALACbBEEASARAIAAoApAEEC8LIAAsAKsEQQBIBEAgACgCoAQQLwsgACwAtwRBAEgEQCAAKAKsBBAvCyAALADHBEEASARAIAAoArwEEC8LIAAsANMEQQBIBEAgACgCyAQQLwsgACwA4wRBAEgEQCAAKALYBBAvCyAALADvBEEASARAIAAoAuQEEC8LIAAsAP8EQQBIBEAgACgC9AQQLwsgACwAiwVBAEgEQCAAKAKABRAvCyAALACbBUEASARAIAAoApAFEC8LIAAsAKcFQQBIBEAgACgCnAUQLwsgACwAtwVBAEgEQCAAKAKsBRAvCyAALADDBUEA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AEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQZPUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe3TABA1IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBjLw0IAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBpGiAALAArQQBIBEAgACgCIBAvCyAALAAbQQBIBEAgACgCEBAvCyAALAAPQQBIBEAgACgCBBAvCyAAQQRqIgFBABA2IAAgAUHF1AAQNyIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHt0wAQNSIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQYy8NCAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaRogACwAK0EASARAIAAoAiAQLwsgACwAG0EASARAIAAoAhAQLwsgACwAD0EASARAIAAoAgQQLwsgAEEEaiIBQQAQNiAAIAFBstQAEDciASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7dMAEDUiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEGMvDQgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGkaIAAsACtBAEgEQCAAKAIgEC8LIAAsABtBAEgEQCAAKAIQEC8LIAAsAA9BAEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQbrUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe3TABA1IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBjLw0IAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBpGiAALAArQQBIBEAgACgCIBAvCyAALAAbQQBIBEAgACgCEBAvCyAALAAPQQBIBEAgACgCBBAvCyAAQQRqIgFBARA2IAAgAUGl1AAQNyIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHt0wAQNSIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQYy8NCAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaRogACwAK0EASARAIAAoAiAQLwsgACwAG0EASARAIAAoAhAQLwsgACwAD0EASARAIAAoAgQQLwsgAEEEaiIBQQAQNiAAIAFB/9MAEDciASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7dMAEDUiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEGMvDQgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGkaIAAsACtBAEgEQCAAKAIgEC8LIAAsABtBAEgEQCAAKAIQEC8LIAAsAA9BAEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQdHUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2AgggACAAQRBqQe3TABA1IgEoAgg2AiggACABKQIANwMgIAFCADcCACABQQA2AghBjLw0IAAoAiAgAEEgaiAALQArIgHAQQBIIgQbIAAoAiQgASAEGxBpGiAALAArQQBIBEAgACgCIBAvCyAALAAbQQBIBEAgACgCEBAvCyAALAAPQQBIBEAgACgCBBAvCyAAQQRqIgFBABA2IAAgAUHQ1AAQNyIBKAIINgIYIAAgASkCADcDECABQgA3AgAgAUEANgIIIAAgAEEQakHt0wAQNSIBKAIINgIoIAAgASkCADcDICABQgA3AgAgAUEANgIIQYy8NCAAKAIgIABBIGogAC0AKyIBwEEASCIEGyAAKAIkIAEgBBsQaRogACwAK0EASARAIAAoAiAQLwsgACwAG0EASARAIAAoAhAQLwsgACwAD0EASARAIAAoAgQQLwsgAEEEaiIBQQAQNiAAIAFB+NMAEDciASgCCDYCGCAAIAEpAgA3AxAgAUIANwIAIAFBADYCCCAAIABBEGpB7dMAEDUiASgCCDYCKCAAIAEpAgA3AyAgAUIANwIAIAFBADYCCEGMvDQgACgCICAAQSBqIAAtACsiAcBBAEgiBBsgACgCJCABIAQbEGkaIAAsACtBAEgEQCAAKAIgEC8LIAAsABtBAEgEQCAAKAIQEC8LIAAsAA9BAEgEQCAAKAIEEC8LIABBBGoiAUEAEDYgACABQZvUABA3IgEoAgg2AhggACABKQIANwMQIAFCADcCACABQQA2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ASACIAVBAWoQnQEgBEEQaiQADAELEEsACwsgA0EQaiQACwkAIAAgBRDaAQuOBwIEfwR7IAJBH0oEQCACQSBtIQYDQCABIAVBB3RqIgNBQGsgACAFQRZsaiIELwEAQQJ0QfC5BGr9CQIAIgcgBCgBAiICQQx2/REgAkENdv0cASACQQ52/RwCIAJBD3b9HAMiCf0MEAAAABAAAAAQAAAAEAAAAP1OIAT9XAAG/YkB/akBIghBBP2tAf1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCACADIAcgAkEEdP0RIAJBA3T9HAEgAkECdP0cAiACQQF0/RwD/QwQAAAAEAAAABAAAAAQAAAA/U4gCP0MDwAAAA8AAAAPAAAADwAAAP1O/VD9DPD////w////8P////D////9rgH9+gH95gH9CwIAIAMgByACQRB2/REgAkERdv0cASACQRJ2/RwCIAJBE3b9HAP9DBAAAAAQAAAAEAAAABAAAAD9TiAEQQpq/VwAAP2JAf2pASIIQQT9rQH9UP0M8P////D////w////8P////2uAf36Af3mAf0LAlAgAyAHIAJBBHb9ESACQQV2/RwBIAJBBnb9HAIgAkEHdv0cAyIKQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8AAAAPAAAA/U79UP0M8P////D////w////8P////2uAf36Af3mAf0LAhAgAyAHIAJBFHb9ESACQRV2/RwBIAJBFnb9HAIgAkEXdv0cA/0MEAAAABAAAAAQAAAAEAAAAP1OIARBDmr9XAAA/YkB/akBIghBBP2tAf1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCYCADIAcgCv0MEAAAABAAAAAQAAAAEAAAAP1OIAj9DA8AAAAPAAAADwAAAA8AAAD9Tv1Q/Qzw////8P////D////w/////a4B/foB/eYB/QsCICADIAcgAkEYdv0RIAJBGXb9HAEgAkEadv0cAiACQRt2/RwD/QwQAAAAEAAAABAAAAAQAAAA/U4gBEESav1cAAD9iQH9qQEiCEEE/a0B/VD9DPD////w////8P////D////9rgH9+gH95gH9CwJwIAMgByAJQQT9qwH9DBAAAAAQAAAAEAAAABAAAAD9TiAI/QwPAAAADwAAAA8A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AAALIABBwANqJAAgDAvQBAEEfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABBswE2AhAgAEHIAWogAEHQAWogAEEQaiIBEE0hByAAQcABaiIJIAQoAhwiCDYCACAIQQRqQQH+HgIAGiAJEGshCCAAQQA6AL8BAkAgAEHsBGogAiADIAkgBCgCBCAFIABBvwFqIAggByAAQcQBaiAAQeAEahClA0UNACAAQZoxKAAANgC3ASAAQZMxKQAANwOwASAIIABBsAFqIABBugFqIABBgAFqIAgoAgAoAjARBwAaIABBsgE2AhAgAEEIakEAIAEQTSEDIAEhBAJAIAAoAsQBIAcoAgBrIgFBiQNOBEAgAUECdUECahBDIQIgAygCACEBIAMgAjYCACABBEAgASADKAIEEQAACyADKAIAIgRFDQELIAAtAL8BBEAgBEEtOgAAIARBAWohBAsgBygCACECA0AgACgCxAEgAk0EQAJAIARBADoAACAAIAY2AgAgAEEQaiAAEM8DQQFHDQAgAygCACEBIANBADYCACABBEAgASADKAIEEQAACwwECwUgBCAAQbABaiAAQYABaiIBIAFBKGogAhCbAiABa0ECdWotAAA6AAAgBEEBaiEEIAJBBGohAgwBCwsQRwALEEcACyAAQewEaiAAQegEahA+BEAgBSAFKAIAQQJyNgIACyAAKALsBCEKIAAoAsABIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAHKAIAIQEgB0EANgIAIAEEQCABIAcoAgQRAAALIABB8ARqJAAgCgsLACAAIAEgAhC+AwveBgEGfyMAQZABayIAJAAgACACNgKIASAAIAE2AowBIABBswE2AhQgAEEYaiAAQSBqIABBFGoiCBBNIQkgAEEQaiIHIAQoAhwiATYCACABQQRqQQH+HgIAGiAHEHMhASAAQQA6AA8gAEGMAWogAiADIAcgBCgCBCAFIABBD2ogASAJIAggAEGEAWoQqwMEQCMAQRBrIgIkAAJAIAYtAAtBB3YEQCAGKAIAIQogAkEAOgAPIAogAi0ADzoAACAGQQA2AgQMAQsgAkEAOgAOIAYgAi0ADjoAACAGIAYtAAtBgAFxOgALIAYgBi0AC0H/AHE6AAsLIAJBEGokACAALQAPBEAgBiABQS0gASgCACgCHBEEABCPAgsg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dEHwuQRq/QkCACIDIAb9XAAC/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAgAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAgAgAiADIAZBBmr9XAAA/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAlAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAhAgAiADIAZBCmr9XAAA/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAmAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAiAgAiADIAZBDmr9XAAA/YkB/akBIgRBBP2tAf0M+P////j////4////+P////2uAf36Af3mAf0LAnAgAiADIAT9DA8AAAAPAAAADwAAAA8AAAD9Tv0M+P////j////4////+P////2uAf36Af3mAf0LAjAgBUEBaiIFIAdHDQALCwvLAQEHfyMAQdABayIAJAAQQiEFIAAgBDYCACAAQbABaiIHIAcgB0EUIAVBwBUgABBiIgpqIgUgAhB1IQggAEEQaiIEIAIoAhwiBjYCACAGQQRqQQH+HgIAGiAEEGshBiAEKAIAIglBBGpBf/4eAgBFBEAgCSAJKAIAKAIIEQAACyAGIAcgBSAEIAYoAgAoAjARBwAaIAEgBCAKQQJ0IARqIgEgCCAAa0ECdCAAakGwBWsgBSAIRhsgASACIAMQkgEhCyAAQdABaiQAIAsLkgUBCX8CfyMAQaADayIGJAAgBkIlNwOYAyAGQZgDaiIHQQFyQYUrIAIoAgQQ3wEhCCAGIAZB8AJqIgk2AuwCEEIhAAJ/IAgEQCACKAIIIQogBkFAayAFNwMAIAYgBDcDOCAGIAo2AjAgCUEeIAAgByAGQTBqEGIMAQsgBiAENwNQIAYgBTcDWCAGQfACakEeIAAgBkGYA2ogBkHQAGoQYgshACAGQbIBNgKAASAGQeQCakEAIAZBgAFqEE0hCSAGQfACaiIKIQcCQCAAQR5OBEAQQiEAAn8gCARA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DAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCzAELAn8gAEH8AmoiBigCACIDKAIMIgcgAygCEEYEQCADIAMoAgAoAiQRAQAMAQsgBygCAAsgAEEXaiAAQRZqIAIgAEHMAWogACgC7AEgACgC6AEgAEHcAWogAEEgaiAAQRxqIABBGGogAEHwAWoQnAINACAGEFwaDAELCwJAAn8gAC0A5wFBB3YEQCAAKALgAQwBCyAALQDnAUH/AHELRQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEL8DIAApAwAhCSAFIAApAwg3AwggBSAJNwMAIABB3AFqIABBIGogACgCHCAEEGMgAEH8AmogAEH4AmoQPgRAIAQgBCgCAEECcjYCAAsgACgC/AIhCCABEDIaIABB3AFqEDIaIABBgANqJAAgCAu5BQEDfyMAQfACayIAJAAgACACNgLoAiAAIAE2AuwCIABBzAFqIAMgAEHgAWogAEHcAWogAEHYAWoQnQIjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArwBIAAgAEEQajYCDCAAQQA2AgggAEEBOgAHIABBxQA6AAYDQAJAIABB7AJqIABB6AJqED4NACAAKAK8AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCvAELAn8gAEHsAmoiBigCACIDKAIMIgcgAygC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BEAgASgCAAwBCyABCyICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahA+DQAgACgCtAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDggASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArQBCwJ/IABBzAJqIggoAgAiAygCDCIJIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIAkoAgALIAYgAiAAQbQBaiAAQQhqIAAoAsQCIABBxAFqIABBEGogAEEMaiAHELQBDQAgCBBcGgwBCwsCQAJ/IAAtAM8BQQd2BEAgACgCyAEMAQsgAC0AzwFB/wBxC0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhDGAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBjIABBzAJqIABByAJqED4EQCAEIAQoAgBBAnI2AgALIAAoAswCIQogARAyGiAAQcQBahAyGiAAQdACaiQAIAoLmgUBBX8jAEHQAmsiACQAIAAgAjYCyAIgACABNgLMAiADEIgBIQYgAyAAQdABahDEASEHIABBxAFqIAMgAEHEAmoQwwEjAEEQayICJAAgAEG4AWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqED4NACAAKAK0AQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQOCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQOCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYC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CCAGKAIQRgRAIAYgBigCACgCJBEBAAwBCyAILQAAC8BBECABIABBtAFqIABBCGpBACADIABBEGogAEEMaiAAQdABahC2AQ0AIAcQXRoMAQsLIAIgACgCtAEgAWsQOAJ/IAItAAtBB3YEQCACKAIADAELIAILIQsQQiEJIAAgBTYCACALIAkgABC9A0EBRwRAIARBBDYCAAsgAEH8AWogAEH4AWoQPwRAIAQgBCgCAEECcjYCAAsgACgC/AEhCiACEDIaIAMQMhogAEGAAmokACAKC9EFAgN/AX4jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQdABaiADIABB4AFqIABB3wFqIABB3gFqEKACIwBBEGsiAiQAIABBxAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxA4IAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgLAASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWA0ACQCAAQYwCaiAAQYgCahA/DQAgACgCwAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EDggASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEDggACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2AsABCwJ/IABBjAJqIgYoAgAiAygCDCIHIAMoAhBGBEAgAyADKAIAKAIkEQEADAELIActAAALwCAAQRdqIABBFmogAiAAQcABaiAALADfASAALADeASAAQdABaiAAQSBqIABBHGogAEEYaiAAQeABahCfAg0AIAYQXRoMAQsLAkACfyAALQDbAUEHdgRAIAAoAtQBDAELIAAtANsBQf8AcQtFDQAgAC0AF0UNACAAKAIcIgMgAEEgamtBnwFKDQAgACADQQRqNgIcIAMgACgCGDYCAAsgACACIAAoAsABIAQQvwMgACkDACEJIAUgACkDCDcDCCAFIAk3AwAgAEHQAWogAEEgaiAAKAIcIAQQYyAAQYwCaiAAQYgCahA/BEAgBCAEKAIAQQJyNgIA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aiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAighBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakHbERA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCLCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQcsOEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIwIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB9BIQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAjQhBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGoDhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCOCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQdUSEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIAIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBpg0QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAgQhBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakH8ERA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCECEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQYcMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIUIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBkREQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAhghBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGxDBA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCHCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQYAOEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIgIQQgAUGwBGoiAiAGEDYgASACQao6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBsRIQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAgghBCABQbAEaiICIAYQNiABIAJBqjoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakHZDBA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCDCEEIAFBsARqIgIgBhA2IAEgAkGqOhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQbcREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyAGQQFqIgYgFUcNAAsLIAAgACgCpAFBACAMrCIvIDQQVjYCfCAAIAAoAqQBIBAgLyAxEFY2AoABIAAgACgCpAFBACAvEEg2AoQBIAAgACgCpAFBACAvEEg2AogBIAAoAnwhBCABQSAQMSICNgKABCABQpyAgICAhICAgH83AoQEIAJByx0oAAA2ABggAkHDHSkAADcAECACQbMd/QAAAP0LAAAgAkEAOgAcIAEgAUGABGoiAjYCsAQgAUHABGogByACIAFBsARqEDkgASgCwAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAAoAoABIQQgAUEgEDEiAjYCgAQgAUKegICAgISAgIB/NwKEBCACQd4NKQAANwAWIAJB2A0pAAA3ABAgAkHIDf0AAAD9CwAAIAJBADoAHiABIAFBgARqIgI2ArAEIAFBwARqIAcgAiABQbAEahA5IAEoAsAEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyAAKAKEASEEIAFBIBAxIgI2AoAEIAFCkYCAgICEgICAfzcChAQgAkHGDS0AADoAECACQbYN/QAAAP0LAAAgAkEAOgARIAEgAUGABGoiAjYCsAQgAUHABGogByACIAFBsARqEDkgASgCwAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAAoAogBIQQgAUEQEDEiAjYCgAQgAUKPgICAgIKAgIB/NwKEBCACQZESKQAANwAHIAJBihIpAAA3AAAgAkEAOgAPIAEgAUGABGoiAjYCsAQgAUHABGogByACIAFBsARqEDkgASgCwAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIBRBAEoEQCAMQQJ0rCExQQAhBgNAIAAoApgBIAZB4ABsaiIDIAAoAqQBQQAgLxBINgJIIAMgACgCpAFBACAvEEg2AkwgAyAAKAKkASAQIC8gMRBWNgJQIAMgACgCpAFBACAxEEg2AlQgAyAAKAKkASAQIDEgLxBWNgJYIAMgACgCpAFBACAvEEg2AlwgAyAAKAKkAUEAIC8QSDYCACADIAAoAqQBQQAgLxBINgIEIAMgACgCpAEgECAvIC8QVjYCECADIAAoAqQBQQAgLxBINgIUIAMgACgCpAEgECAvIC8QVjYCGCADIAAoAqQBIBAgLyAvEFY2AhwgAyAAKAKkAUEAIC8QSDYCICADIAAoAqQBIBAgLyAvEFY2AgggAyAAKAKkAUEAIC8QSDYCDCADIAAoAqQBQQAgLxBINgIkIAMgACgCpAFBACAvEEg2AiggAyAAKAKkASAQIC8gLxBWNgI0IAMgACgCpAFBACAvEEg2AjggAyAAKAKkASAQIC8gLxBWNgI8IAMgACgCpAEgECAvIC8QVjYCQCADIAAoAqQBQQAgLxBINgJEIAMgACgCpAEgECAvIC8QVjYCLCADIAAoAqQBQQAgLxBINgIwIAMoAkghBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGBDRA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCTCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQdsREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAJQIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpByw4QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAlQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakH0EhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCWCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQagOEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAJcIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB1RIQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAgAhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGmDRA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCBCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQfwREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIQIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBhwwQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAhQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGRERA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCGCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQbEMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIcIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBgA4QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAiAhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGxEhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCCCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQdkMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAIMIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpBtxEQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAiQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGQDRA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCKCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQegREDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADKAI0IQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB7gsQNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAjghBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakH6EBA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCPCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQZoMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8LIAEsAMsEQQBIBEAgASgCwAQQLwsgASwAuwRBAEgEQCABKAKwBBAvCyADQUBrKAIAIQQgAUGwBGoiAiAGEDYgASACQbo6EDciAigCCDYCyAQgASACKQIANwPABCACQgA3AgAgAkEANgIIIAEgAUHABGpB5w0QNSICKAIINgKIBCABIAIpAgA3A4AEIAJCADcCACACQQA2AgggASABQYAEaiICNgLYBCABQaQEaiAHIAIgAUHYBGoQOSABKAKkBCAENgIcIAEsAIsEQQBIBEAgASgCgAQQLwsgASwAywRBAEgEQCABKALABBAvCyABLAC7BEEASARAIAEoArAEEC8LIAMoAkQhBCABQbAEaiICIAYQNiABIAJBujoQNyICKAIINgLIBCABIAIpAgA3A8AEIAJCADcCACACQQA2AgggASABQcAEakGaEhA1IgIoAgg2AogEIAEgAikCADcDgAQgAkIANwIAIAJBADYCCCABIAFBgARqIgI2AtgEIAFBpARqIAcgAiABQdgEahA5IAEoAqQEIAQ2AhwgASwAiwRBAEgEQCABKAKABBAvCyABLADLBEEASARAIAEoAsAEEC8LIAEsALsEQQBIBEAgASgCsAQQLwsgAygCLCEEIAFBsARqIgIgBhA2IAEgAkG6OhA3IgIoAgg2AsgEIAEgAikCADcDwAQgAkIANwIAIAJBADYCCCABIAFBwARqQcIMEDUiAigCCDYCiAQgASACKQIANwOABCACQgA3AgAgAkEANgIIIAEgAUGABGoiAjYC2AQgAUGkBGogByACIAFB2ARqEDkgASgCpAQgBDYCHCABLACLBEEASARAIAEoAoAEEC8L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ACgCADYCACAHIAAoAgQ2AgQgByAALQAIOgAIIAEgACgCDDYCACABIAAoAhA2AgQgASAALQAUOgAIIARBAmohBCAGQQJqIgYgCkcNAAsLIAtFDQIgBCAIakEMbCAFakEMayIAIAMgBEEMbGoiASgCADYCACAAIAEoAgQ2AgQgACABLQAIOgAIDAILIAFBADYCKCABQZ94NgIAIAIoAgghAwsgA0UNAQsgAiADNgIMIAMQLwsgAkFAayQAC6UBAQR/IABBrJYBNgIAIABBCGohBAJAIAAoAigiAUUNACABQX/+HgIEDQAgASABKAIAKAIIEQAAAkAgAUEIaiID/hACAARAIANBf/4eAgANAQsgASABKAIAKAIQEQAACwsgBCgCACIBQQRqQX/+HgIARQRAIAEgASgCACgCCBEAAAsgAEGslAE2AgAgACgCBCIBBEAgASABKAIAKAIEEQAACyAAEC8LowEBBH8gAEGslgE2AgAgAEEIaiEEAkAgACgCKCIBRQ0AIAFBf/4eAgQNACABIAEoAgAoAggRAAACQCABQQhqIgP+EAIABEAgA0F//h4CAA0BCyABIAEoAgAoAhARAAALCyAEKAIAIgFBBGpBf/4eAgBFBEAgASABKAIAKAIIEQAACyAAQayUATYCACAAKAIEIgEEQCABIAEoAgAoAgQRAAALIAAL6wIBBn8CQCABKAIEIgMgASgCDCIERg0AIAQgASgCCCICRgRAQQAhAiABLQAsQQhxDQFBASECIARBAWstAAAiA0HfAEYNASADwEEATgRAIAAoAgwoAgggA0ECdGotAABB4ABxDQILQQAhAgwBCwJAIAIgA0cNACABKAIsIgRBgAFxDQBBACECIARBBHENAUEBIQIgAy0AACIDQd8ARg0BIAPAQQBOBEAgACgCDCgCCCADQQJ0ai0AAEHgAHENAgtBACECDAELIAItAAAiBsAhBEEBIQUCf0EBIAJBAWstAAAiAkHfAEYNABogAsBBAE4EQEEBIAAoAgwoAgggAkECdGotAABB4ABxDQEaC0EACyEHAkAgBEHfAEYNACAEQQBOBEAgACgCDCgCCCAGQQJ0ai0AAEHgAHENAQtBACEFCyAHIAVHIQILIAFBACAAKAIEIAAtABQgAkYiABs2AiggAUGfeEGeeCAAGzYCAAtSAQF/IABB1JUBNgIAIAAo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dXRleAAlcyBmYWlsZWQgdG8gYWNxdWlyZSBtdXRleABjaXJjdW1mbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAaGVicmV3AGhhdwBOb3YAVGh1AHRlbHVndQBBdWd1c3QAJXMgZmFpbGVkIHRvIGJyb2FkY2FzdAB1bnNpZ25lZCBzaG9ydABhbGVydABwcmludAB1bnNpZ25lZCBpbnQAY2lyY3VtZmxleC1hY2NlbnQAZ3JhdmUtYWNjZW50AGZ1bGxfZGVmYXVsdABrdl9jYWNoZV9yZWluaXQAa3ZfY2FjaGVfaW5pdAB4ZGlnaXQALmNyb3NzX2F0dG4ucXVlcnkud2VpZ2h0AC5hdHRuLnF1ZXJ5LndlaWdodAAuY3Jvc3NfYXR0bi5rZXkud2VpZ2h0AC5hdHRuLmtleS53ZWlnaHQALmNyb3NzX2F0dG4ub3V0LndlaWdodAAuYXR0bi5vdXQud2VpZ2h0AGVuY29kZXIubG5fcG9zdC53ZWlnaHQALm1scF9sbi53ZWlnaHQALmNyb3NzX2F0dG5fbG4ud2VpZ2h0AC5hdHRuX2xuLndlaWdodABkZWNvZGVyLmxuLndlaWdodABkZWNvZGVyLnRva2VuX2VtYmVkZGluZy53ZWlnaHQALmNyb3NzX2F0dG4udmFsdWUud2VpZ2h0AC5hdHRuLnZhbHVlLndlaWdodABlbmNvZGVyLmNvbnYyLndlaWdodAAubWxwLjIud2VpZ2h0AGVuY29kZXIuY29udjEud2VpZ2h0AC5tbHAuMC53ZWlnaHQAc2V0AHJpZ2h0LWN1cmx5LWJyYWNrZXQAbGVmdC1jdXJseS1icmFja2V0AHJpZ2h0LXNxdWFyZS1icmFja2V0AGxlZnQtc3F1YXJlLWJyYWNrZXQAcHVuY3QAZ2dtbF9uZXdfb2JqZWN0AE9jdABmbG9hdABTYXQAY29tbWVyY2lhbC1hdAB1aW50NjRfdABoeXBoZW4tbWludXMAcmV2ZXJzZS1zb2xpZHVzAHdoaXNwZXJfZXhwX2NvbXB1dGVfdG9rZW5fbGV2ZWxfdGltZXN0YW1wcwBhZnJpa2FhbnMAcGFyYW1zAHJpZ2h0LXBhcmVudGhlc2lzAGxlZnQtcGFyZW50aGVzaXMAd2hpc3Blcl9wcmludF90aW1pbmdzAC5jcm9zc19hdHRuLnF1ZXJ5LmJpYXMALmF0dG4ucXVlcnkuYmlhcwAuY3Jvc3NfYXR0bi5vdXQuYmlhcwAuYXR0bi5vdXQuYmlhcwBlbmNvZGVyLmxuX3Bvc3QuYmlhcwAubWxwX2xuLmJpYXMALmNyb3NzX2F0dG5fbG4uYmlhcwAuYXR0bl9sbi5iaWFzAGRlY29kZXIubG4uYmlhcwAuY3Jvc3NfYXR0bi52YWx1ZS5iaWFzAC5hdHRuLnZhbHVlLmJpYXMAZW5jb2Rlci5jb252Mi5iaWFzAC5tbHAuMi5iaWFzAGVuY29kZXIuY29udjEuYmlhcwAubWxwLjAuYmlhcwAlcwBmb3VyAHdoaXNwZXJfbGFuZ19zdHIAQXByAGNvbnN0cnVjdG9yAHZlY3RvcgBjZ3JhcGgtPm5vZGVzW2NncmFwaC0+bl9ub2RlcyAtIDFdID09IHRlbnNvcgB1bmtub3duIGFsbG9jYXRpb24gZXJyb3IAYmFzaGtpcgBsb3dlcgB1cHBlcgBraG1lcgBidWZmZXIAT2N0b2JlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIARGVjZW1iZXIAdGF0YXIAbXlhbm1hcgB1bnNpZ25lZCBjaGFyAGlvc19iYXNlOjpjbGVhcgBNYXIAcQAvVXNlcnMvZ2dlcmdhbm92L2RldmVsb3BtZW50L2dpdGh1Yi93aGlzcGVyLmNwcC93aGlzcGVyLmNwcABmdWxsLXN0b3AAU2VwACVJOiVNOiVTICVwAHR3bwBhdXRvAHBhc2h0bwB6ZXJvAGxhbwBTdW4ASnVuAGNhcnJpYWdlLXJldHVybgBicmV0b24Ac2VtaWNvbG9uAHN0ZDo6ZXhjZXB0aW9uAF9fY3hhX2d1YXJkX2FjcXVpcmUgZGV0ZWN0ZWQgcmVjdXJzaXZlIGluaXRpYWxpemF0aW9uAE1vbgBsYXRpbgBwZXJjZW50LXNpZ24AcGx1cy1zaWduAGVxdWFscy1zaWduAG51bWJlci1zaWduAGRvbGxhci1zaWduAGxlc3MtdGhhbi1zaWduAGdyZWF0ZXItdGhhbi1zaWduAHNldmVuAHR1cmttZW4AaHlwaGVuAG9jY2l0YW4AdGliZXRhbgBuYW4AZ2VybWFuAGNwbGFuAGNhdGFsYW4AbGF0dmlhbgBiZWxhcnVzaWFuAHJ1c3NpYW4AcGVyc2lhbgBpbmRvbmVzaWFuAGh1bmdhcmlhbgBidWxnYXJpYW4AYm9zbmlhbgBtYWNlZG9uaWFuAHVrcmFpbmlhbgBzbG92ZW5pYW4AbGl0aHVhbmlhbgBtb25nb2xpYW4AaXRhbGlhbgBub3J3ZWdpYW4Ac2VyYmlhbgBrb3JlYW4ASmFuAGFsbnVtAG1hbGF5YWxhbQBKdWwAY250cmwAZ2dtbF9uZXdfdGVuc29yX2ltcGwAYm9vbABsbABBcHJpbAB0YW1pbABlbXNjcmlwdGVuOjp2YWwAbnlub3JzawBhc3RlcmlzawBxdWVzdGlvbi1tYXJrAHF1b3RhdGlvbi1tYXJrAGV4Y2xhbWF0aW9uLW1hcmsAYmxhbmsAdGFqaWsAZ3JlZWsAdXpiZWsAc2xvdmFrAGoAbWFvcmkARnJpAGF6ZXJiYWlqYW5pAHN3YWhpbGkAbmVwYWxpAHNvbWFsaQBiZW5nYWxpAG1hcmF0aGkAc2luZGhpAGhpbmRpAHB1bmphYmkAYmFkX2FycmF5X25ld19sZW5ndGgAd2Vsc2gAZmlubmlzaABzcGFuaXNoAGRhbmlzaABwb2xpc2gAZW5nbGlzaAB0dXJraXNoAGx1eGVtYm91cmdpc2gAc3dlZGlzaAB5aWRkaXNoAGJhY2tzbGFzaABncmFwaABrYXpha2gAZHV0Y2gATWFyY2gAZnJlbmNoAGN6ZWNoAEF1ZwB0YWdhbG9nAHVuc2lnbmVkIGxvbmcAdGVybWluYXRpbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBlbmNvZGVyLnBvc2l0aW9uYWxfZW1iZWRkaW5nAGRlY29kZXIucG9zaXRpb25hbF9lbWJlZGRpbmcAaW5mACUuMExmACVMZgB3aGlzcGVyX3Rva2VuaXplAGZpdmUAdHJ1ZQBiYXNxdWUAaW52YWxpZCBhbGlnbm1lbnQgdmFsdWUAVHVlAHdoaXNwZXJfaW5pdF9zdGF0ZQB3aGlzcGVyX2luaXRfbm9fc3RhdGUAd2hpc3Blcl9pbml0X2Zyb21fZmlsZV9ub19zdGF0ZQB3aGlzcGVyX2xhbmdfYXV0b19kZXRlY3Rfd2l0aF9zdGF0ZQB3aGlzcGVyX2Z1bGxfd2l0aF9zdGF0ZQB0cmFuc2xhdGUAZmFsc2UAcG9ydHVndWVzZQBtYWx0ZXNlAGZhcm9lc2UAY2hpbmVzZQBzdW5kYW5lc2UAdmlldG5hbWVzZQBfX2N4YV9ndWFyZF9yZWxlYXNlAHVuZGVyc2NvcmUAX19jeGFfZ3VhcmRfYWNxdWlyZQB3dHlwZSA9PSBjYWNoZS52LT50eXBlAHNyYzAtPnR5cGUgPT0gZHN0LT50eXBlAGRzdC0+dHlwZSA9PSBzcmMwLT50eXBlAFVua25vd24gZXJyb3IgdHlwZQBKdW5lAG9uZQBuaW5lAG5ld2xpbmUAbG93LWxpbmUAdmVydGljYWwtbGluZQBoYWl0aWFuIGNyZW9sZQBkb3VibGUAYXBvc3Ryb3BoZQB0aHJlZQBmcmVlAHRpbGRlAHJpZ2h0LWJyYWNlAGxlZnQtYnJhY2UAYmFja3NwYWNlAHRyYW5zY3JpYmUAcGVyaW9kAG1hcDo6YXQ6ICBrZXkgbm90IGZvdW5kAGFtcGVyc2FuZAB2b2lkAHdoaXNwZXJfbGFuZ19pZAB0ZXJtaW5hdGVfaGFuZGxlciB1bmV4cGVjdGVkbHkgcmV0dXJuZWQAdGhyZWFkIGNvbnN0cnVjdG9yIGZhaWxlZABfX3RocmVhZF9zcGVjaWZpY19wdHIgY29uc3RydWN0aW9uIGZhaWxlZAB0aHJlYWQ6OmpvaW4gZmFpbGVkAG11dGV4IGxvY2sgZmFpbGVkAGZvcm0tZmVlZABXZWQAd2hpc3Blcl9tb2RlbF9sb2FkACUwMmQ6JTAyZDolMDJkJXMlMDNkAGxlYWZfJWQAbm9kZV8lZABnZ21sX2FsaWduZWRfbWFsbG9jAHN0ZDo6YmFkX2FsbG9jAGRzdC0+bmVbMF0gPT0gbmMAYW1oYXJpYwBpY2VsYW5kaWMAYXJhYmljAERlYwAvVXNlcnMvZ2dlcmdhbm92L2RldmVsb3BtZW50L2dpdGh1Yi93aGlzcGVyLmNwcC9nZ21sLmMAd2IAcmIARmViAHZlcnRpY2FsLXRhYgBuX2xvZ2l0cyA9PSBjdHgudm9jYWIubl92b2NhYgB3K2IAcitiAGErYgByd2EAY3BsYW4tPndvcmtfZGF0YQBoYXVzYQBzaG9uYQBjb21tYQBzaW5oYWxhAGxpbmdhbGEAYWxwaGEAa2FubmFkYQB5b3J1YmEAW19leHRyYV90b2tlbl8AW19UVF8AW19TT1RfXQBbX05PVF9dAFtfRU9UX10AW19CRUdfXQBzcmMwLT5uYlswXSA9PSBkc3QtPm5iWzBdICYmIHNyYzAtPm5iWzFdID09IGRzdC0+bmJbMV0gJiYgc3JjMC0+bmJbMl0gPT0gZHN0LT5uYlsyXSAmJiBzcmMwLT5uYlszXSA9PSBkc3QtPm5iWzNdAGEtPm5lWzFdID09IGItPm5lWzFdAFoAdGVuc29yLT5vcCA9PSBHR01MX09QX1VOQVJZACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAFcAVgBVAHd0eXBlICE9IEdHTUxfVFlQRV9DT1VOVABheGlzMyA+PSAwICYmIGF4aXMzIDwgR0dNTF9NQVhfRElNUwBheGlzMiA+PSAwICYmIGF4aXMyIDwgR0dNTF9NQVhfRElNUwBheGlzMSA+PSAwICYmIGF4aXMxIDwgR0dNTF9NQVhfRElNUwBheGlzMCA+PSAwICYmIGF4aXMwIDwgR0dNTF9NQVhfRElNUwBjZ3JhcGgtPm5fbGVhZnMgPCBHR01MX01BWF9OT0RFUwBjZ3JhcGgtPm5fbm9kZXMgPCBHR01MX01BWF9OT0RFUwAlSDolTTolUwBSAFEAUABPAE5BTgBuZTEgPT0gTgBuZWQxID09IE4AUE0AQU0AbmViMTAgPT0gTQBuZWMwMCA9PSBNAE5VTAB0ZW5zb3IgIT0gTlVMTABjdHgtPm1lbV9idWZmZXIgIT0gTlVMTABMQ19BTEwASwBKAEkASABMQU5HAElORgBFAG5ldjEgPT0gRABuZWMwMSA9PSBEAG5lazAgPT0gRABuZTAgPT0gRABuZWQwID09IEQAbmVjMTAgPT0gRABuZWIwMCA9PSBEAEMAQgBBAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AD4+PgA8PDwAMDEyMzQ1Njc4OQBpOABIRUFQVTgAQy5VVEYtOABpMTYAZjE2AGRzdC0+dHlwZSA9PSBHR01MX1RZUEVfRjE2AHNyYzAtPnR5cGUgPT0gR0dNTF9UWVBFX0YxNgBheGlzMiAhPSBheGlzMwBheGlzMSAhPSBheGlzMwBheGlzMCAhPSBheGlzMwBuZTAzID09IG5lMwBuYjIgPD0gbmIzAG5lMyA9PSBuZTEzAG5lMDMgPT0gbmUxMwBuZTMgPT0gbmUwMwBheGlzMSAhPSBheGlzMgBheGlzMCAhPSBheGlzMgBnZ21sX25lbGVtZW50cyhhKSA9PSBuZTAqbmUxKm5lMgBuX2hlYWQgPT0gbmUyAG5lMDIgPT0gbmUyAG5iMSA8PSBuYjIAbmUyID09IG5lYTIAaTMyAGYzMgBnZ21sX2lzX21hdHJpeChhKSAmJiBnZ21sX2lzX3ZlY3RvcihiKSAmJiBiLT50eXBlID09IEdHTUxfVFlQRV9JMzIAZHN0LT50eXBlID09IEdHTUxfVFlQRV9GMzIAc3JjMS0+dHlwZSA9PSBHR01MX1RZUEVfRjMyAG5lMiA9PSBuZTEyAG5lMDIgPT0gbmUxMgBuZTIgPT0gbmUwMgBwMCA9PSBzcmMwLT5uZVswXS8yAGF4aXMwICE9IGF4aXMxAGsxID09IHMxAGdnbWxfbmVsZW1lbnRzKGEpID09IG5lMCpuZTEAbmUwMCA9PSBuZTEAbmIwIDw9IG5iMQBuZTEgPT0gbmVhMQBxOF8xAHE1XzEAcTRfMQBuZTEgPT0gbmUxMQBuZTEgPT0gbmUwMQBuZTAgPT0gbmUwMQB0ID09IDAgfHwgdCA9PSAxAG5vZGUtPnNyY1sxXS0+bmVbM10gPT0gMQBub2RlLT5zcmNbMF0tPm5lWzNdID09IDEAbm9kZS0+c3JjWzFdLT5uZVsyXSA9PSAxAG5lMDAgJSAyID09IDEAbmVjMTEgPT0gMQBuZWIxMSA9PSAxAG5lMDEgPT0gMQBuZTAgPT0gMQBkMCA9PSAxAGswID09IHMwAG5lMSArIG5fcGFzdCA9PSBuZTAAbmUwMCA9PSBuZTAAbl9kaW1zIDw9IG5lMABuZTAgPT0gbmVhMABxOF8wAHE1XzAAcTRfMABuZTEgPT0gbmUxMABuZTAgPT0gbmUwMABjcGxhbi0+bl90aHJlYWRzID4gMABjcGxhbi0+bl90YXNrc1tpXSA+IDAAbl9wYXN0ID49IDAAUCA+PSAwAHBhcmFtcy0+aXRoID09IDAAcmMgPT0gMAAoKHVpbnRwdHJfdCkgKG1lbV9idWZmZXIgKyBvYmpfbmV3LT5vZmZzKSklR0dNTF9NRU1fQUxJR04gPT0gMAAoKHVpbnRwdHJfdCkgKGN0eC0+bWVtX2J1ZmZlcikpJUdHTUxfTUVNX0FMSUdOID09IDAAbl9kaW1zICUgMiA9PSAwAHAxID09IDAAcDAgPT0gMABUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCB7IGFuZCB9LgBlbmNvZGVyLmJsb2Nrcy4AZGVjb2Rlci5ibG9ja3MuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGNoYXJhY3RlciByYW5nZSwgc3VjaCBhcyBbYi1hXSBpbiBtb3N0IGVuY29kaW5ncy4AQW4gZW1wdHkgcmVnZXggaXMgbm90IGFsbG93ZWQgaW4gdGhlIFBPU0lYIGdyYW1tYXIuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIHJhbmdlIGluIGEge30gZXhwcmVzc2lvbi4AVGhlIHBhcnNlciBkaWQgbm90IGNvbnN1bWUgdGhlIGVudGlyZSByZWd1bGFyIGV4cHJlc3Npb24uAE9uZSBvZiAqPyt7IHdhcyBub3QgcHJlY2VkZWQgYnkgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSBjb21wbGV4aXR5IG9mIGFuIGF0dGVtcHRlZCBtYXRjaCBhZ2FpbnN0IGEgcmVndWxhciBleHByZXNzaW9uIGV4Y2VlZGVkIGEgcHJlLXNldCBsZXZlbC4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgZXNjYXBlZCBjaGFyYWN0ZXIsIG9yIGEgdHJhaWxpbmcgZXNjYXBlLgBUaGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBjb252ZXJ0IHRoZSBleHByZXNzaW9uIGludG8gYSBmaW5pdGUgc3RhdGUgbWFjaGluZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgY29sbGF0aW5nIGVsZW1lbnQgbmFtZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgY2hhcmFjdGVyIGNsYXNzIG5hbWUuAFRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY291bGQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgc2VxdWVuY2UuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGJhY2sgcmVmZXJlbmNlLgBBbiBpbnZhbGlkIHJlZ2V4IGdyYW1tYXIgaGFzIGJlZW4gcmVxdWVzdGVkLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCBbIGFuZCBdLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCAoIGFuZCApLgAtLS0AdysAJ3N8J3R8J3JlfCd2ZXwnbXwnbGx8J2R8ID9bWzphbHBoYTpdXSt8ID9bWzpkaWdpdDpdXSt8ID9bXlxzWzphbHBoYTpdWzpkaWdpdDpdXSt8XHMrKD8hXFMpfFxzKwByKwBhKwAlcyAoY29weSkAJXMgKHZpZXcpAG5fZWxlbWVudHMgPT0gZ2dtbF9uZWxlbWVudHMoY2FjaGUudikAZ2dtbF9pc19jb250aWd1b3VzKGRzdCkAb2Zmc2V0ICsgaW0wKm5iMCArIGltMSpuYjEgKyBpbTIqbmIyICsgaW0zKm5iMyA8PSBnZ21sX25ieXRlcyhkc3QpAG9mZnNldCArIChuZTEwID09IDAgPyAwIDogbmUxMC0xKSpuYjAgKyAobmUxMSA9PSAwID8gMCA6IG5lMTEtMSkqbmIxICsgKG5lMTIgPT0gMCA/IDAgOiBuZTEyLTEpKm5iMiArIChuZTEzID09IDAgPyAwIDogbmUxMy0xKSpuYjMgPCBnZ21sX25ieXRlcyhkc3QpAGdnbWxfaXNfc2NhbGFyKGRzdCkAZ2dtbF9pc19jb250aWd1b3VzX2V4Y2VwdF9kaW1fMShkc3QpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMSwgZHN0KQBnZ21sX2FyZV9zYW1lX3NoYXBlKG9wdDAsIGRzdCkAZ2dtbF9jYW5fcmVwZWF0KHNyYzAsIGRzdCkAZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBzcmMxKSAmJiBnZ21sX2FyZV9zYW1lX3NoYXBlKHNyYzAsIGRzdCkAZ2dtbF9jYW5fcmVwZWF0X3Jvd3Moc3JjMSwgc3JjMCkgJiYgZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBkc3QpAGRzdC0+bmJbMF0gPT0gc2l6ZW9mKGZsb2F0KQBzcmMwLT5uYlswXSA9PSBzaXplb2YoZmxvYXQpAG5idjAgPT0gc2l6ZW9mKGZsb2F0KQBuYnEwID09IHNpemVvZihmbG9hdCkAbmJrMCA9PSBzaXplb2YoZmxvYXQpAG5iMCA9PSBzaXplb2YoZmxvYXQpAG5iYzEwID09IHNpemVvZihmbG9hdCkAbmIxMCA9PSBzaXplb2YoZmxvYXQpAG5iYjEwID09IHNpemVvZihmbG9hdCkAbmIwMCA9PSBzaXplb2YoZmxvYXQpAHNyYzAtPm5iWzBdID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJ2MCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5icTAgPT0gc2l6ZW9mKGdnbWxfZnAxNl90KQBuYmswID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmIwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmJhMCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5iYzAwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAbmIwMCA9PSBzaXplb2YoZ2dtbF9mcDE2X3QpAG5iYjAwID09IHNpemVvZihnZ21sX2ZwMTZfdCkAJXMgKGNvcHkgb2YgJXMpAChudWxsKQBjYWNoZS5idWYuc2l6ZSgpID49IDIqbl9lbGVtZW50cypnZ21sX3R5cGVfc2l6ZWYod3R5cGUpAGdnbWxfaXNfcXVhbnRpemVkKHNyYzAtPnR5cGUpAG5iMDAgPT0gZ2dtbF90eXBlX3NpemUodHlwZSkAJXMgKHBlcm11dGVkKQAlcyAodHJhbnNwb3NlZCkAJXMgKHJlc2hhcGVkKQBnZ21sX2lzX2NvbnRpZ3VvdXNfZXhjZXB0X2RpbV8xKGdyYWQpAGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgZ3JhZCkAZ2dtbF9pc19tYXRyaXgoYikAZ2dtbF9uZWxlbWVudHMoYSkgPT0gZ2dtbF9uZWxlbWVudHMoYikAZ2dtbF9pc19zY2FsYXIoYikAZ2dtbF9jYW5fbXVsX21hdChhLCBiKQBnZ21sX2Nhbl9yZXBlYXQoYSwgYikAZ2dtbF9hcmVfc2FtZV9zaGFwZShhLCBiKQBnZ21sX2lzX2NvbnRpZ3VvdXMoYSkAIWdnbWxfaXNfdHJhbnNwb3NlZChhKQBnZ21sX2lzX3BhZGRlZF8xZChhKQBnZ21sX2Nhbl9yZXBlYXRfcm93cyhiLCBhKQBnZ21sX2lzX2NvbnRpZ3VvdXMoc3JjMSkAZ2dtbF9pc19zY2FsYXIoc3JjMSkAZ2dtbF9hcmVfc2FtZV9zaGFwZShzcmMwLCBkc3QpICYmIGdnbWxfYXJlX3NhbWVfc2hhcGUoc3JjMCwgc3JjMSkAZ2dtbF9pc19jb250aWd1b3VzKG9wdDApAGdnbWxfaXNfY29udGlndW91cyhkc3QpICYmIGdnbWxfaXNfY29udGlndW91cyhzcmMwKQBnZ21sX25lbGVtZW50cyhkc3QpID09IGdnbWxfbmVsZW1lbnRzKHNyYzApAG9mZnNldCArIChuZTEwID09IDAgPyAwIDogbmUxMC0xKSpuYjAwICsgKG5lMTEgPT0gMCA/IDAgOiBuZTExLTEpKm5iMDEgKyAobmUxMiA9PSAwID8gMCA6IG5lMTItMSkqbmIwMiArIChuZTEzID09IDAgPyAwIDogbmUxMy0xKSpuYjAzIDwgZ2dtbF9uYnl0ZXMoc3JjMCkAZ2dtbF9pc19jb250aWd1b3VzX2V4Y2VwdF9kaW1fMShzcmMwKQBnZ21sX2Nhbl9yZXBlYXQoZHN0LCBzcmMwKQApKSkAb3BlcmF0b3IoKQAoKCgAc3JjMS0+dHlwZSA9PSBHR01MX1RZUEVfRjMyICYmICJvbmx5IGYzMiBzcmMxIHN1cHBvcnRlZCBmb3Igbm93IgBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQAgfCAAQVZYID0gAFZTWCA9IABCTEFTID0gAE9QRU5WSU5PID0gAE5FT04gPSAAQ09SRU1MID0gAFdBU01fU0lNRCA9IABGMTZDID0gAEZQMTZfVkEgPSAAQVJNX0ZNQSA9IABTU1NFMyA9IABBVlgyID0gAEFWWDUxMiA9IAAlczogdGVuc29yICclcycgaGFzIHdyb25nIHNpemUgaW4gbW9kZWwgZmlsZTogZ290ICV6dSwgZXhwZWN0ZWQgJXp1CgAlczogYWRkaW5nICVkIGV4dHJhIHRva2VucwoAJXM6ICAgICAgbWVsIHRpbWUgPSAlOC4yZiBtcwoAJXM6ICAgIHRvdGFsIHRpbWUgPSAlOC4yZiBtcwoAJXM6ICAgICBsb2FkIHRpbWUgPSAlOC4yZiBtcwoAc3lzdGVtX2luZm86IG5fdGhyZWFkcyA9ICVkIC8gJWQgfCAlcwoAV0hJU1BFUl9BU1NFUlQ6ICVzOiVkOiAlcwoAR0dNTF9BU1NFUlQ6ICVzOiVkOiAlcwoAWyVzIC0tPiAlc10gICVzCgAlczogb2Zmc2V0ICVkbXMgaXMgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYXVkaW8KAHVua25vd24gdG9rZW4KACVzOiBmYWlsZWQgdG8gY29tcHV0ZSBsb2cgbWVsIHNwZWN0cm9ncmFtCgAlczogbG9hZGluZyBtb2RlbAoAJXM6IGZhaWxlZCB0byBsb2FkIG1vZGVsCgAlczogICAgIGZhbGxiYWNrcyA9ICUzZCBwIC8gJTNkIGgKACVzOiBXQVJOIG5vIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGFzc3VtaW5nIGVtcHR5IG1vZGVsIGZvciB0ZXN0aW5nCgAlczogZW5jb2Rlcl9iZWdpbl9jYWxsYmFjayByZXR1cm5lZCBmYWxzZSAtIGFib3J0aW5nCgAlczogdGVuc29yICclcycgaGFzIHdyb25nIHNpemUgaW4gbW9kZWwgZmlsZQoAJXM6IHVua25vd24gdGVuc29yICclcycgaW4gbW9kZWwgZmlsZQoAJXM6IG5vIHNpZ25hbCBkYXRhIGF2YWlsYWJsZQoAJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGt2IGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3IgY3Jvc3MtYXR0ZW50aW9uIGNhY2hlCgAlczoga3ZfY2FjaGVfaW5pdCgpIGZhaWxlZCBmb3Igc2VsZi1hdHRlbnRpb24gY2FjaGUKACVzOiBmYWlsZWQgdG8gYXV0by1kZXRlY3QgbGFuZ3VhZ2UKACVzOiBnZ21sX2luaXQoKSBmYWlsZWQKACVzOiBFUlJPUiBub3QgYWxsIHRlbnNvcnMgbG9hZGVkIGZyb20gbW9kZWwgZmlsZSAtIGV4cGVjdGVkICV6dSwgZ290ICVkCgAlczoga3ZfY2FjaGVfcmVpbml0KCkgZmFpbGVkIGZvciBzZWxmLWF0dGVudGlvbiwgZGVjb2RlciAlZAoAJXM6IHVua25vd24gbGFuZ3VhZ2UgaWQgJWQKACVzOiBuX2F1ZGlvX2xheWVyID0gJWQKACVzOiBuX2F1ZGlvX3N0YXRlID0gJWQKACVzOiBuX3RleHRfbGF5ZXIgID0gJWQKACVzOiBuX3RleHRfc3RhdGUgID0gJWQKACVzOiBuX2F1ZGlv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AQmeGAAAAQAAAAEBCbAYAAABAAAAAgEJyBkAAAEAAAAEAcioARAQEBAQEBAQABAQEBAQEBAQABAQEBAQEAAAEBAQEBAQEBAAEBAQEBAAEAAQEBAQEBAAABAQEBAQAAAAEBAQEBAQEBAAEBAQEAAQEAAQEBAQEAAQABAQEBAAABAAEBAQEBAQAAAQEBAQABAAABAQEBAQAAAAEBAQEAAAAAAQEBAQEBAQEAAQEBAAEBAQABAQEBAAEBAAEBAQAAAQEAAQEBAQEAAQABAQEAAQABAAEBAQEAAAEAAQEBAAAAAQABAQEBAQEAAAEBAQABAQAAAQEBAQABAAABAQEAAAEAAAEBAQEBAAAAAQEBAAEAAAABAQEBAAAAAAEBAQAAAAAAAQEBAQEBAQEAAQEAAQEBAQABAQEAAQEBAAEBAAABAQEAAQEBAQABAQABAQABAAEBAAEBAQAAAQEAAQEAAAABAQABAQEBAQABAAEBAAEBAAEAAQEBAAEAAQABAQAAAQABAAEBAQEAAAEAAQEAAQAAAQABAQEAAAABAAEBAAAAAAEAAQEBAQEBAAABAQABAQEAAAEBAQABAQAAAQEAAAEBAAABAQEBAAEAAAEBAAEAAQAAAQEBAAABAAABAQAAAAEAAAEBAQEBAAAAAQEAAQEAAAABAQEAAQAAAAEBAAABAAAAAQEBAQAAAAABAQABAAAAAAEBAQAAAAAAAQEAAAAAAAABAQEBAQEBAQABAAEBAQEBAAEBAAEBAQEAAQAAAQEBAQABAQEAAQEBAAEAAQABAQEAAQEAAAEBAQABAAAAAQEBAAEBAQEAAQEAAQABAQABAQABAQABAAEBAAEAAAEAAQEAAQEBAAABAQABAAEAAAEBAAEBAAAAAQEAAQAAAAABAQABAQEBAQABAAEAAQEBAAEAAQEAAQEAAQABAAABAQABAAEBAQABAAEAAQABAAEAAQABAQAAAQABAAEAAAABAAEAAQEBAQAAAQABAAEBAAABAAEBAAEAAAEAAQAAAQAAAQABAQEAAAABAAEAAQAAAAEAAQEAAAAAAQABAAAAAAABAAEBAQEBAQAAAQABAQEBAAABAQABAQEAAAEAAAEBAQAAAQEBAAEBAAABAAEAAQEAAAEBAAABAQAAAQAAAAEBAAABAQEBAAEAAAEAAQEAAQAAAQEAAQABAAABAAABAAEAAAEBAQAAAQAAAQABAAABAAABAQAAAAEAAAEAAAAAAQAAAQEBAQEAAAABAAEBAQAAAAEBAAEBAAAAAQAAAQEAAAABAQEAAQAAAAEAAQABAAAAAQEAAAEAAAABAAAAAQAAAAEBAQEAAAAAAQABAQAAAAABAQABAAAAAAEAAAEAAAAAAQEBAAAAAAABAAEAAAAAAAEBAAAAAAAAAQAAAAAAAAABAQEBAQEBAQAAAQEBAQEBAAEAAQEBAQEAAAABAQEBAQABAQABAQEBAAABAAEBAQEAAQAAAQEBAQAAAAABAQEBAAEBAQABAQEAAAEBAAEBAQABAAEAAQEBAAAAAQABAQEAAQEAAAEBAQAAAQAAAQEBAAEAAAABAQEAAAAAAAEBAQABAQEBAAEBAAABAQEAAQEAAQABAQABAQAAAAEBAAEBAAEBAAEAAQEAAAEAAQABAQABAAABAAEBAAAAAAEAAQEAAQEBAAABAQAAAQEAAAEBAAEAAQAAAQEAAAABAAABAQABAQAAAAEBAAABAAAAAQEAAQAAAAABAQAAAAAAAAEBAAEBAQEBAAEAAAEBAQEAAQABAAEBAQABAAAAAQEBAAEAAQEAAQEAAQAAAQABAQABAAEAAAEBAAEAAAAAAQEAAQABAQEAAQABAAABAQABAAEAAQABAAEAAQAAAAEAAQABAAEBAAABAAEAAAEAAAEAAQABAAAAAQABAAAAAAABAAEAAQEBAQAAAQAAAQEBAAABAAEAAQEAAAEAAAABAQAAAQABAQABAAABAAABAAEAAAEAAQAAAQAAAQAAAAABAAABAAEBAQAAAAEAAAEBAAAAAQABAAEAAAABAAAAAQAAAAEAAQEAAAAAAQAAAQAAAAABAAEAAAAAAAEAAAAAAAAAAQABAQEBAQEAAAABAQEBAQAAAQABAQEBAAAAAAEBAQEAAAEBAAEBAQAAAAEAAQEBAAABAAABAQEAAAAAAAEBAQAAAQEBAAEBAAAAAQEAAQEAAAEAAQABAQAAAAABAAEBAAABAQAAAQEAAAABAAABAQAAAQAAAAEBAAAAAAAAAQEAAAEBAQEAAQAAAAEBAQABAAABAAEBAAEAAAAAAQEAAQAAAQEAAQABAAAAAQABAAEAAAEAAAEAAQAAAAAAAQABAAABAQEAAAEAAAABAQAAAQAAAQABAAABAAAAAAEAAAEAAAEBAAAAAQAAAAEAAAABAAABAAAAAAEAAAAAAAAAAQAAAQEBAQEAAAAAAQEBAQAAAAEAAQEBAAAAAAABAQEAAAABAQABAQAAAAABAAEBAAAAAQAAAQEAAAAAAAABAQAAAAEBAQABAAAAAAEBAAEAAAABAAEAAQAAAAAAAQABAAAAAQEAAAEAAAAAAQAAAQAAAAEAAAABAAAAAAAAAAEAAAABAQEBAAAAAAABAQEAAAAAAQABAQAAAAAAAAEBAAAAAAEBAAEAAAAAAAEAAQAAAAABAAABAAAAAAAAAAEAAAAAAQEBAAAAAAAAAQEAAAAAAAEAAQAAAAAAAAABAAAAAAABAQAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAAABAAAAAAABAAEAAAAAAAABAQAAAAAAAQEBAAAAAAAAAAABAAAAAAEAAAEAAAAAAAEAAQAAAAABAQABAAAAAAAAAQEAAAAAAQABAQAAAAAAAQEBAAAAAAEBAQEAAAAAAAAAAAEAAAABAAAAAQAAAAABAAABAAAAAQEAAAEAAAAAAAEAAQAAAAEAAQABAAAAAAEBAAEAAAABAQEAAQAAAAAAAAEBAAAAAQAAAQEAAAAAAQABAQAAAAEBAAEBAAAAAAABAQEAAAABAAEBAQAAAAABAQEBAAAAAQEBAQEAAAAAAAAAAAEAAAEAAAAAAQAAAAEAAAABAAABAQAAAAEAAAAAAQAAAQAAAQABAAABAAAAAQEAAAEAAAEBAQAAAQAAAAAAAQABAAABAAABAAEAAAABAAEAAQAAAQEAAQABAAAAAAEBAAEAAAEAAQEAAQAAAAEBAQABAAABAQEBAAEAAAAAAAABAQAAAQAAAAEBAAAAAQAAAQEAAAEBAAABAQAAAAABAAEBAAABAAEAAQEAAAABAQABAQAAAQEBAAEBAAAAAAABAQEAAAEAAAEBAQAAAAEAAQEBAAABAQABAQEAAAAAAQEBAQAAAQABAQEBAAAAAQEBAQEAAAEBAQEBAQAAAAAAAAAAAQABAAAAAAABAAABAAAAAAEAAQEAAAAAAQAAAAEAAAABAAEAAQAAAAEAAAEBAAAAAQABAQEAAAABAAAAAAEAAAEAAQAAAQAAAQAAAQABAAABAAEBAAEAAAEAAAABAQAAAQABAAEBAAABAAABAQEAAAEAAQEBAQAAAQAAAAAAAQABAAEAAAABAAEAAAEAAAEAAQABAQAAAQABAAAAAQABAAEAAQABAAEAAQAAAQEAAQABAAEBAQABAAEAAAAAAQEAAQABAAABAQABAAABAAEBAAEAAQEAAQEAAQAAAAEBAQABAAEAAQEBAAEAAAEBAQEAAQABAQEBAQABAAAAAAAAAQEAAQAAAAABAQAAAQAAAAEBAAEBAAAAAQEAAAABAAABAQABAAEAAAEBAAABAQAAAQEAAQEBAAABAQAAAAABAAEBAAEAAAEAAQEAAAEAAQABAQABAQABAAEBAAAAAQEAAQEAAQABAQABAQAAAQEBAAEBAAEBAQEAAQEAAAAAAAEBAQABAAAAAQEBAAABAAABAQEAAQEAAAEBAQAAAAEAAQEBAAEAAQABAQEAAAEBAAEBAQABAQEAAQEBAAAAAAEBAQEAAQAAAQEBAQAAAQABAQEBAAEBAAEBAQEAAAABAQEBAQABAAEBAQEBAAABAQEBAQEAAQEBAQEBAQAAAAAAAAAAAQEAAAAAAAABAAEAAAAAAAEBAQAAAAAAAQAAAQAAAAABAQABAAAAAAEAAQEAAAAAAQEBAQAAAAABAAAAAQAAAAEBAAABAAAAAQABAAEAAAABAQEAAQAAAAEAAAEBAAAAAQEAAQEAAAABAAEBAQAAAAEBAQEBAAAAAQAAAAABAAABAQAAAAEAAAEAAQAAAQAAAQEBAAABAAABAAABAAEAAAEBAAEAAQAAAQABAQABAAABAQEBAAEAAAEAAAABAQAAAQEAAAEBAAABAAEAAQEAAAEBAQABAQAAAQAAAQEBAAABAQABAQEAAAEAAQEBAQAAAQEBAQEBAAABAAAAAAABAAEBAAAAAAEAAQABAAAAAQABAQEAAAABAAEAAAEAAAEAAQEAAQAAAQABAAEBAAABAAEBAQEAAAEAAQAAAAEAAQABAQAAAQABAAEAAQABAAEAAQEBAAEAAQABAAABAQABAAEBAAEBAAEAAQABAQEAAQABAQEBAQABAAEAAAAAAQEAAQEAAAABAQABAAEAAAEBAAEBAQAAAQEAAQAAAQABAQABAQABAAEBAAEAAQEAAQEAAQEBAQABAQABAAAAAQEBAAEBAAABAQEAAQABAAEBAQABAQEAAQEBAAEAAAEBAQEAAQEAAQEBAQABAAEBAQEBAAEBAQEBAQEAAQAAAAAAAAEBAQAAAAAAAQEAAQAAAAABAQEBAAAAAAEBAAABAAAAAQEBAAEAAAABAQABAQAAAAEBAQEBAAAAAQEAAAABAAABAQEAAAEAAAEBAAEAAQAAAQEBAQABAAABAQAAAQEAAAEBAQABAQAAAQEAAQEBAAABAQEBAQEAAAEBAAAAAAEAAQEBAAAAAQABAQABAAABAAEBAQEAAAEAAQEAAAEAAQABAQEAAQABAAEBAAEBAAEAAQEBAQEAAQABAQAAAAEBAAEBAQAAAQEAAQEAAQABAQABAQEBAAEBAAEBAAABAQEAAQEBAAEBAQABAQABAQEBAAEBAQEBAQEAAQEAAAAAAAEBAQEAAAAAAQEBAAEAAAABAQEBAQAAAAEBAQAAAQAAAQEBAQABAAABAQEAAQEAAAEBAQEBAQAAAQEBAAAAAQABAQEBAAABAAEBAQABAAEAAQEBAQEAAQABAQEAAAEBAAEBAQEAAQEAAQEBAAEBAQABAQEBAQEBAAEBAQAAAAABAQEBAQAAAAEBAQEAAQAAAQEBAQEBAAABAQEBAAABAAEBAQEBAAEAAQEBAQABAQABAQEBAQEBAAEBAQEAAAABAQEBAQEAAAEBAQEBAAEAAQEBAQEBAQABAQEBAQAAAQEBAQEBAQABAQEBAQEAAQEBAQEBAQEBAQEBAQEBABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAIAAAABgAAAAcAAAAKAAAACwAAAAwAAAANAAAADgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAACASAAAOAAAADkAAAA6AAAAOwAAAE5TdDNfXzIxMV9fZW5kX3N0YXRlSWNFRQBOU3QzX18yNl9fbm9kZUljRUUA0MsAAGVIAAD4ywAATEgAAHhIAAAAAAAAMEkAADwAAAA9AAAAPgAAAD8AAABAAAAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUE5TXzEzX19lbXB0eV9zdGF0ZUljRUVOU18xMHNoYXJlZF9wdHJJUzJfRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMyX1MyX0VFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAAPjLAACoSAAAeMIAAE5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfMTNfX2VtcHR5X3N0YXRlSWNFRUUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUlTMl9TMl9FRQAAAAAAAAAYSgAAQQAAAEIAAABDAAAAOwAAAE5TdDNfXzIxM19fZW1wdHlfc3RhdGVJY0VFAE5TdDNfXzIxNl9fb3duc19vbmVfc3RhdGVJY0VFAE5TdDNfXzIxNV9faGFzX29uZV9zdGF0ZUljRUUAAAD4ywAA4UkAAHhIAAD4ywAAw0kAAABKAAD4ywAAqEkAAAxKAAAAAAAADEoAAEEAAABEAAAARQAAADsAAAAAAAAAeEoAAEEAAABGAAAARwAAADsAAABOU3QzX18yMjBfX2xfYW5jaG9yX211bHRpbGluZUljRUUAAAD4ywAAVEoAAAxKAAAAAAAAwEoAAEEAAABIAAAASQAAADsAAABOU3QzX18yMjBfX3JfYW5jaG9yX211bHRpbGluZUljRUUAAAD4ywAAnEoAAAxKAAAAAAAAGEsAAEoAAABLAAAATAAAADsAAABOU3QzX18yMTVfX3dvcmRfYm91bmRhcnlJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAA+MsAAORKAAAMSgAAAAAAAGxLAABNAAAATgAAAE8AAAA7AAAATlN0M19fMjExX19sb29rYWhlYWRJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAAA+MsAADxLAAAMSgAAAAAAALhLAABBAAAAUAAAAFEAAAA7AAAATlN0M19fMjIzX19tYXRjaF9hbnlfYnV0X25ld2xpbmVJY0VFAAAAAPjLAACQSwAADEoAAAAAAAAUTAAAUgAAAFMAAABUAAAAOwAAAE5TdDNfXzIxOF9fbWF0Y2hfY2hhcl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAA+MsAANxLAAAMSgAAAAAAAHBMAABVAAAAVgAAAFcAAAA7AAAATlN0M19fMjIwX19tYXRjaF9jaGFyX2NvbGxhdGVJY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAD4ywAAOEwAAAxKAAAAAAAAsEwAAEEAAABYAAAAWQAAADsAAABOU3QzX18yMTJfX21hdGNoX2NoYXJJY0VFAAAA+MsAAJRMAAAMSgAAAAAAAAhNAABaAAAAWwAAAFwAAAA7AAAATlN0M19fMjE2X19iYWNrX3JlZl9pY2FzZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAPjLAADUTAAADEoAAAAAAABkTQAAXQAAAF4AAABfAAAAOwAAAE5TdDNfXzIxOF9fYmFja19yZWZfY29sbGF0ZUljTlNfMTJyZWdleF90cmFpdHNJY0VFRUUAAAAA+MsAACxNAAAMSgAAAAAAAKBNAABBAAAAYAAAAGEAAAA7AAAATlN0M19fMjEwX19iYWNrX3JlZkljRUUA+MsAAIhNAAAMSgAAAAAAAPxNAABiAAAAYwAAAGQAAAA7AAAATlN0M19fMjIwX19icmFja2V0X2V4cHJlc3Npb25JY05TXzEycmVnZXhfdHJhaXRzSWNFRUVFAAD4ywAAxE0AAAxKAAAAAAAATE4AAEEAAABlAAAAZgAAADsAAABOU3QzX18yMjhfX2JlZ2luX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQAAAPjLAAAgTgAADEoAAAAAAACYTgAAQQAAAGcAAABoAAAAOwAAAE5TdDNfXzIyNl9fZW5kX21hcmtlZF9zdWJleHByZXNzaW9uSWNFRQD4ywAAcE4AAAxKAAAAAAAA/E4AAGkAAABqAAAAawAAAGwAAABOU3QzX18yNl9fbG9vcEljRUUATlN0M19fMjE3X19vd25zX3R3b19zdGF0ZXNJY0VFAAAA+MsAAM9OAAAMSgAA+MsAALxOAADwTgAAAAAAAPBOAABpAAAAbQAAAEUAAAA7AAAAAAAAAFhPAAA4AAAAbgAAAG8AAAA7AAAATlN0M19fMjE3X19yZXBlYXRfb25lX2xvb3BJY0VFAAD4ywAAOE8AAABKAAAAAAAAmE8AAGkAAABwAAAAcQAAAHIAAABOU3QzX18yMTFfX2FsdGVybmF0ZUljRUUAAAAA+MsAAHxPAADwTgAAAAAAAOBPAAA4AAAAcwAAAHQAAAA7AAAATlN0M19fMjIxX19lbXB0eV9ub25fb3duX3N0YXRlSWNFRQAA+MsAALxPAAAASgAAAAAAACBQAABBAAAAdQAAAHYAAAA7AAAATlN0M19fMjExX19tYXRjaF9hbnlJY0VFAAAAAPjLAAAEUAAADEoAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAADQywAALFAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAADQywAAdFAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAA0MsAALxQAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAANDLAAAIUQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAADQywAAVFEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAA0MsAAHxRAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAANDLAACkUQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAADQywAAzFEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAA0MsAAPRRAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAANDLAAAcUgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAADQywAARFIAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAA0MsAAGxSAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAANDLAACUUgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAADQywAAvFIAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAA0MsAAORSAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAANDLAAAMUwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAADQywAANFMAAAAAAAADAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6n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lP///5T////MlwAArQAAAK4AAABIlwAAgJcAAJSXAABclwAAbAAAAAAAAAAklwAAnQAAAJ4AAACU////lP///ySXAACfAAAAoAAAAE5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAPjLAACclwAAJJcAAE5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAPjLAADYlwAA7JYAAAAAAAA4mAAArwAAALAAAABOU3QzX18yOGlvc19iYXNlRQAAANDLAAAkmAAA0XSeAFedvSqAcFIP//8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa////877//+Sv///AAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAAAIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM2wAAAADeEgSVAAAAAP///////////////3CaAAAUAAAAQy5VVEYtOAEChJoBSkxDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZ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AACWAQAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUVFAFTMAABUugAAAAAAAAIAAAAkrgAAAgAAAIC5AAACAAAAAAAAAOS6AADoAAAAlwEAAMYAAACYAQAAmQEAAJoBAACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAABOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUAVMwAAMi6AAAAAAAAAgAAACSuAAACAAAAgLkAAAIAAAAAAAAAiLsAAOgAAAChAQAAxgAAAKIBAACjAQAATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAA0MsAAGa7AABUzAAAILsAAAAAAAACAAAAJK4AAAIAAACAuwAAAAAAAAAAAAAsvAAA6AAAAKQBAADGAAAApQEAAKYBAABOU3QzX18yOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9nZXRJd0VFAADQywAACrwAAFTMAADEuwAAAAAAAAIAAAAkrgAAAgAAACS8AAAAAAAAAAAAANC8AADoAAAApwEAAMYAAACoAQAAqQEAAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X3B1dEljRUUAANDLAACuvAAAVMwAAGi8AAAAAAAAAgAAACSuAAACAAAAyLwAAAAAAAAAAAAAdL0AAOgAAACqAQAAxgAAAKsBAACsAQAATlN0M19fMjltb25leV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SXdFRQAA0MsAAFK9AABUzAAADL0AAAAAAAACAAAAJK4AAAIAAABsvQAAAAAAAAAAAADsvQAA6AAAAK0BAADGAAAArgEAAK8BAACwAQAATlN0M19fMjhtZXNzYWdlc0ljRUUATlN0M19fMjEz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6AMCAAAA//////8AAAAB/wH//////////////wAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAB/wH//////wABIAAEAIAAAAj//wH/Af////////8B/wb/B/8I/wn//////7wCvAIBAP//AQABAP//AAD//////////wAAAAAAAAAAAAAAAAAAAAAUAXj//wEACv///////////wH/Af8AAAAAAAAB/wH/Af8AAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAH/Af8BAAAAAQAAAAH//////wAAAAAB////AAAAAP////////////8oAAr//////wEACv////8A//////////8BvggB/wH///8BAP//////////////////Cv//////DP8N/04xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAD4ywAABsoAABzOAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAD4ywAANMoAACjKAABOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UAAAD4ywAAZMoAACjKAABOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQD4ywAAlMoAAIjKAAAAAAAACMsAALsBAAC8AQAAvQEAAL4BAAC/AQAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAPjLAADgygAAKMoAAHYAAADMygAAFMsAAGIAAADMygAAIMsAAGMAAADMygAALMsAAGgAAADMygAAOMsAAGEAAADMygAARMsAAHMAAADMygAAUMsAAHQAAADMygAAXMsAAGkAAADMygAAaMsAAGoAAADMygAAdMsAAGwAAADMygAAgMsAAG0AAADMygAAjMsAAHgAAADMygAAmMsAAHkAAADMygAApMsAAGYAAADMygAAsMsAAGQAAADMygAAvMsAAAAAAABYygAAuwEAAMABAAC9AQAAvgEAAMEBAADCAQAAwwEAAMQBAAAAAAAAQMwAALsBAADFAQAAvQEAAL4BAADBAQAAxgEAAMcBAADIAQAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAPjLAAAYzAAAWMoAAAAAAACczAAAuwEAAMkBAAC9AQAAvgEAAMEBAADKAQAAywEAAMwBAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAA+MsAAHTMAABYygAAAAAAAAzNAAAIAAAAzQEAAM4BAAAAAAAANM0AAAgAAADPAQAA0AEAAAAAAAD0zAAACAAAANEBAADSAQAAU3Q5ZXhjZXB0aW9uAAAAANDLAADkzAAAU3Q5YmFkX2FsbG9jAAAAAPjLAAD8zAAA9MwAAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAAD4ywAAGM0AAAzNAAAAAAAAeM0AAAcAAADTAQAA1AEAAAAAAAAAzgAA1QEAANYBAAC4AQAAU3QxMWxvZ2ljX2Vycm9yAPjLAABozQAA9MwAAAAAAACszQAABwAAANcBAADUAQAAU3QxMmxlbmd0aF9lcnJvcgAAAAD4ywAAmM0AAHjNAAAAAAAA4M0AAAcAAADYAQAA1AEAAFN0MTJvdXRfb2ZfcmFuZ2UAAAAA+MsAAMzNAAB4zQAAU3QxM3J1bnRpbWVfZXJyb3IAAAD4ywAA7M0AAPTMAABTdDl0eXBlX2luZm8AAAAA0MsAAAzOAAABATcBZCzOAAAszgAAAAABAAACAAAFAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAeAAAABAwDQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAA//////////8BWXDOAAAAAAAABQAAAAAAAAAAAAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAIoAAAAYMA0AAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAP////8KAQwIzwAA8D4OALoBAAA=";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;wasmExports=exports;registerTLSInit(wasmExports["_"]);wasmTable=wasmExports["X"];addOnInit(wasmExports["W"]);wasmModule=module;removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var killThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0};var cancelThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i0,ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+8>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+12>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+16>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+24>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+28>>2]=tempI64[1];GROWABLE_HEAP_I32()[buf+32>>2]=4096;GROWABLE_HEAP_I32()[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+44>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+56>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+60>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+72>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+76>>2]=tempI64[1];GROWABLE_HEAP_U32()[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+88>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(0,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}var exitJS=(status,implicit)=>{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread(){var pthreadPoolSize=8;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker(){noExitRuntime=false},setExitStatus:status=>{EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d["targetThread"]];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`)}return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="alert"){alert(`Thread ${d["threadId"]}: ${d["text"]}`)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message="worker sent an error!";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",data=>worker.onmessage({data:data}));worker.on("error",e=>worker.onerror(e))}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker(){var worker;var pthreadMainJs=locateFile("libwhisper.worker.js");worker=new Worker(pthreadMainJs);PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=()=>{var pthread_ptr=_pthread_self();var stackHigh=GROWABLE_HEAP_I32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_I32()[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,returnCode);_exit(returnCode)}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}finish(result)};Module["invokeEntryPoint"]=invokeEntryPoint;var registerTLSInit=tlsInitFunc=>{PThread.tlsInitFunctions.push(tlsInitFunc)};function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type};this.get_type=function(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]};this.set_destructor=function(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor};this.get_destructor=function(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12>>0]=caught};this.get_caught=function(){return GROWABLE_HEAP_I8()[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return GROWABLE_HEAP_I8()[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return GROWABLE_HEAP_U32()[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var ___emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})};function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}var ___pthread_create_js=(pthread_ptr,attr,startRoutine,arg)=>{if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)};var setErrNo=value=>{GROWABLE_HEAP_I32()[___errno_location()>>2]=value;return value};function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.getp();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();GROWABLE_HEAP_I32()[argp>>2]=termios.c_iflag||0;GROWABLE_HEAP_I32()[argp+4>>2]=termios.c_oflag||0;GROWABLE_HEAP_I32()[argp+8>>2]=termios.c_cflag||0;GROWABLE_HEAP_I32()[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){GROWABLE_HEAP_I8()[argp+i+17>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=GROWABLE_HEAP_I32()[argp>>2];var c_oflag=GROWABLE_HEAP_I32()[argp+4>>2];var c_cflag=GROWABLE_HEAP_I32()[argp+8>>2];var c_lflag=GROWABLE_HEAP_I32()[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(GROWABLE_HEAP_I8()[argp+i+17>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();GROWABLE_HEAP_I16()[argp>>1]=winsize[0];GROWABLE_HEAP_I16()[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes=undefined;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError=undefined;var throwBindingError=message=>{throw new BindingError(message)};var InternalError=undefined;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function createNamedFunction(name,body){name=makeLegalFunctionName(name);return{[name]:function(){return body.apply(this,arguments)}}[name]}function newFunc(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError=undefined;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer>>0]:pointer=>GROWABLE_HEAP_U8()[pointer>>0];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":value=>{var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i{if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value=="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;GROWABLE_HEAP_U32()[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i_free(ptr)})};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>GROWABLE_HEAP_U16();shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>GROWABLE_HEAP_U32();shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=GROWABLE_HEAP_U32()[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:ptr=>_free(ptr)})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var nowIsMonotonic=true;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(GROWABLE_HEAP_I32(),pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(GROWABLE_HEAP_I32(),waitingAsync>>2,1)}};Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(()=>__emscripten_check_mailbox())}};Module["checkMailbox"]=checkMailbox;var __emscripten_notify_mailbox_postmessage=(targetThreadId,currThreadId,mainThreadId)=>{if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}};var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var proxyToMainThread=function(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);GROWABLE_HEAP_U32()[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_void_method=(caller,handle,methodName,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var emval_registeredMethods=[];var __emval_get_method_caller=(argCount,argTypes)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i{name=getStringOrSymbol(name);return Emval.toHandle(Module[name])};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var craftEmvalAllocator=argCount=>{var argsList="";for(var i=0;iGROWABLE_HEAP_U32();var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"+" var HEAPU32 = getMemory();\n";for(var i=0;i>2)], 'parameter "+i+"');\n"+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"+"argTypes += 4;\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return valueToHandle(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,getMemory)};var emval_newers={};var __emval_new=(handle,argCount,argTypes,args)=>{handle=Emval.toValue(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var warnOnce=text=>{if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw"unwind"};var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();var _emscripten_get_now;_emscripten_get_now=()=>performance.timeOrigin+performance.now();var _emscripten_num_logical_cores=()=>{if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]};var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i>0]=str.charCodeAt(i)}GROWABLE_HEAP_I8()[buffer>>0]=0};var _environ_get=function(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(8,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,1,fd,offset_low,offset_high,whence,newOffset);var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[newOffset>>2]=tempI64[0],GROWABLE_HEAP_I32()[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(11,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);GROWABLE_HEAP_U32()[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{GROWABLE_HEAP_I8().set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=GROWABLE_HEAP_U32()[tm+40>>2];var date={tm_sec:GROWABLE_HEAP_I32()[tm>>2],tm_min:GROWABLE_HEAP_I32()[tm+4>>2],tm_hour:GROWABLE_HEAP_I32()[tm+8>>2],tm_mday:GROWABLE_HEAP_I32()[tm+12>>2],tm_mon:GROWABLE_HEAP_I32()[tm+16>>2],tm_year:GROWABLE_HEAP_I32()[tm+20>>2],tm_wday:GROWABLE_HEAP_I32()[tm+24>>2],tm_yday:GROWABLE_HEAP_I32()[tm+28>>2],tm_isdst:GROWABLE_HEAP_I32()[tm+32>>2],tm_gmtoff:GROWABLE_HEAP_I32()[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%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 rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":date=>getWeekBasedYear(date),"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var proxiedFunctionTable=[_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var wasmImports={d:___cxa_throw,K:___emscripten_init_main_thread_js,m:___emscripten_thread_cleanup,H:___pthread_create_js,q:___syscall_fcntl64,M:___syscall_ioctl,N:___syscall_openat,y:__embind_register_bigint,S:__embind_register_bool,R:__embind_register_emval,s:__embind_register_float,h:__embind_register_function,g:__embind_register_integer,c:__embind_register_memory_view,r:__embind_register_std_string,k:__embind_register_std_wstring,T:__embind_register_void,Q:__emscripten_get_now_is_monotonic,F:__emscripten_notify_mailbox_postmessage,I:__emscripten_receive_on_main_thread_js,J:__emscripten_thread_mailbox_await,P:__emscripten_thread_set_strongref,w:__emval_as,U:__emval_call_void_method,f:__emval_decref,V:__emval_get_method_caller,u:__emval_get_module_property,i:__emval_get_property,l:__emval_incref,t:__emval_new,j:__emval_new_cstring,v:__emval_run_destructors,b:_abort,n:_emscripten_check_blocking_allowed,O:_emscripten_exit_with_live_runtime,z:_emscripten_get_heap_max,e:_emscripten_get_now,A:_emscripten_num_logical_cores,E:_emscripten_resize_heap,C:_environ_get,D:_environ_sizes_get,G:_exit,o:_fd_close,L:_fd_read,x:_fd_seek,p:_fd_write,a:wasmMemory||Module["wasmMemory"],B:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["W"])();var _free=a0=>(_free=wasmExports["Y"])(a0);var _malloc=a0=>(_malloc=wasmExports["Z"])(a0);var __emscripten_tls_init=Module["__emscripten_tls_init"]=()=>(__emscripten_tls_init=Module["__emscripten_tls_init"]=wasmExports["_"])();var _pthread_self=Module["_pthread_self"]=()=>(_pthread_self=Module["_pthread_self"]=wasmExports["$"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["aa"])(a0);var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=()=>(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=wasmExports["ba"])();var ___errno_location=()=>(___errno_location=wasmExports["ca"])();var __emscripten_thread_init=Module["__emscripten_thread_init"]=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=Module["__emscripten_thread_init"]=wasmExports["da"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=()=>(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=wasmExports["ea"])();var _emscripten_main_thread_process_queued_calls=()=>(_emscripten_main_thread_process_queued_calls=wasmExports["emscripten_main_thread_process_queued_calls"])();var _emscripten_main_runtime_thread_id=()=>(_emscripten_main_runtime_thread_id=wasmExports["emscripten_main_runtime_thread_id"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3)=>(__emscripten_run_on_main_thread_js=wasmExports["fa"])(a0,a1,a2,a3);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports["ga"])(a0);var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=a0=>(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=wasmExports["ha"])(a0);var __emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=()=>(__emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=wasmExports["ia"])();var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports["ja"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["ka"])();var stackRestore=a0=>(stackRestore=wasmExports["la"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ma"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["na"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["oa"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["pa"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["qa"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["ra"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["sa"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}try{var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); - return whisper_factory.ready + return moduleArg.ready } + ); })(); if (typeof exports === 'object' && typeof module === 'object') module.exports = whisper_factory; else if (typeof define === 'function' && define['amd']) - define([], function() { return whisper_factory; }); -else if (typeof exports === 'object') - exports["whisper_factory"] = whisper_factory; + define([], () => whisper_factory); diff --git a/examples/common.cpp b/examples/common.cpp index 7d215ae1..2b8da8f7 100644 --- a/examples/common.cpp +++ b/examples/common.cpp @@ -1,3 +1,5 @@ +#define _USE_MATH_DEFINES // for M_PI + #include "common.h" // third-party utilities @@ -13,53 +15,59 @@ #include #include -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - #if defined(_MSC_VER) #pragma warning(disable: 4244 4267) // possible loss of data #endif +// Function to check if the next argument exists +std::string get_next_arg(int& i, int argc, char** argv, const std::string& flag, gpt_params& params) { + if (i + 1 < argc && argv[i + 1][0] != '-') { + return argv[++i]; + } else { + fprintf(stderr, "error: %s requires one argument.\n", flag.c_str()); + gpt_print_usage(argc, argv, params); + exit(0); + } +} + bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { for (int i = 1; i < argc; i++) { std::string arg = argv[i]; if (arg == "-s" || arg == "--seed") { - params.seed = std::stoi(argv[++i]); + params.seed = std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "-t" || arg == "--threads") { - params.n_threads = std::stoi(argv[++i]); + params.n_threads = std::stoi(get_next_arg(i, argc, argv, arg, params)); + } else if (arg == "-ngl" || arg == "--gpu-layers" || arg == "--n-gpu-layers") { + params.n_gpu_layers = std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "-p" || arg == "--prompt") { - params.prompt = argv[++i]; + params.prompt = get_next_arg(i, argc, argv, arg, params); } else if (arg == "-n" || arg == "--n_predict") { - params.n_predict = std::stoi(argv[++i]); + params.n_predict = std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "--top_k") { - params.top_k = std::max(1, std::stoi(argv[++i])); + params.top_k = std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "--top_p") { - params.top_p = std::stof(argv[++i]); + params.top_p = std::stof(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "--temp") { - params.temp = std::stof(argv[++i]); + params.temp = std::stof(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "--repeat-last-n") { - params.repeat_last_n = std::stof(argv[++i]); + params.repeat_last_n = std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "--repeat-penalty") { - params.repeat_penalty = std::stof(argv[++i]); + params.repeat_penalty = std::stof(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "-b" || arg == "--batch_size") { - params.n_batch = std::stoi(argv[++i]); + params.n_batch= std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "-m" || arg == "--model") { - params.model = argv[++i]; + params.model = get_next_arg(i, argc, argv, arg, params); } else if (arg == "-i" || arg == "--interactive") { params.interactive = true; } else if (arg == "-ip" || arg == "--interactive-port") { params.interactive = true; - params.interactive_port = std::stoi(argv[++i]); + params.interactive_port = std::stoi(get_next_arg(i, argc, argv, arg, params)); } else if (arg == "-h" || arg == "--help") { gpt_print_usage(argc, argv, params); exit(0); } else if (arg == "-f" || arg == "--file") { - if (++i > argc) { - fprintf(stderr, "Invalid file param"); - break; - } + get_next_arg(i, argc, argv, arg, params); std::ifstream file(argv[i]); if (!file) { fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); @@ -70,7 +78,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { params.prompt.pop_back(); } } else if (arg == "-tt" || arg == "--token_test") { - params.token_test = argv[++i]; + params.token_test = get_next_arg(i, argc, argv, arg, params); } else { fprintf(stderr, "error: unknown argument: %s\n", arg.c_str()); @@ -89,6 +97,7 @@ void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) { fprintf(stderr, " -h, --help show this help message and exit\n"); fprintf(stderr, " -s SEED, --seed SEED RNG seed (default: -1)\n"); fprintf(stderr, " -t N, --threads N number of threads to use during computation (default: %d)\n", params.n_threads); + fprintf(stderr, " -ngl N, --gpu-layers N number of layers to offload to GPU on supported models (default: %d)\n", params.n_gpu_layers); fprintf(stderr, " -p PROMPT, --prompt PROMPT\n"); fprintf(stderr, " prompt to start generation with (default: random)\n"); fprintf(stderr, " -f FNAME, --file FNAME\n"); @@ -755,3 +764,46 @@ float similarity(const std::string & s0, const std::string & s1) { return 1.0f - (dist / std::max(s0.size(), s1.size())); } + +bool sam_params_parse(int argc, char ** argv, sam_params & params) { + for (int i = 1; i < argc; i++) { + std::string arg = argv[i]; + + if (arg == "-s" || arg == "--seed") { + params.seed = std::stoi(argv[++i]); + } else if (arg == "-t" || arg == "--threads") { + params.n_threads = std::stoi(argv[++i]); + } else if (arg == "-m" || arg == "--model") { + params.model = argv[++i]; + } else if (arg == "-i" || arg == "--inp") { + params.fname_inp = argv[++i]; + } else if (arg == "-o" || arg == "--out") { + params.fname_out = argv[++i]; + } else if (arg == "-h" || arg == "--help") { + sam_print_usage(argc, argv, params); + exit(0); + } else { + fprintf(stderr, "error: unknown argument: %s\n", arg.c_str()); + sam_print_usage(argc, argv, params); + exit(0); + } + } + + return true; +} + +void sam_print_usage(int argc, char ** argv, const sam_params & params) { + fprintf(stderr, "usage: %s [options]\n", argv[0]); + fprintf(stderr, "\n"); + fprintf(stderr, "options:\n"); + fprintf(stderr, " -h, --help show this help message and exit\n"); + fprintf(stderr, " -s SEED, --seed SEED RNG seed (default: -1)\n"); + fprintf(stderr, " -t N, --threads N number of threads to use during computation (default: %d)\n", params.n_threads); + fprintf(stderr, " -m FNAME, --model FNAME\n"); + fprintf(stderr, " model path (default: %s)\n", params.model.c_str()); + fprintf(stderr, " -i FNAME, --inp FNAME\n"); + fprintf(stderr, " input file (default: %s)\n", params.fname_inp.c_str()); + fprintf(stderr, " -o FNAME, --out FNAME\n"); + fprintf(stderr, " output file (default: %s)\n", params.fname_out.c_str()); + fprintf(stderr, "\n"); +} diff --git a/examples/common.h b/examples/common.h index f9740a3c..7c671588 100644 --- a/examples/common.h +++ b/examples/common.h @@ -11,7 +11,7 @@ #define COMMON_SAMPLE_RATE 16000 // -// CLI argument parsing +// GPT CLI argument parsing // struct gpt_params { @@ -33,6 +33,8 @@ struct gpt_params { bool interactive = false; int32_t interactive_port = -1; + + int32_t n_gpu_layers = 0; }; bool gpt_params_parse(int argc, char ** argv, gpt_params & params); @@ -155,3 +157,20 @@ bool vad_simple( // compute similarity between two strings using Levenshtein distance float similarity(const std::string & s0, const std::string & s1); + +// +// SAM argument parsing +// + +struct sam_params { + int32_t seed = -1; // RNG seed + int32_t n_threads = std::min(4, (int32_t) std::thread::hardware_concurrency()); + + std::string model = "models/sam-vit-b/ggml-model-f16.bin"; // model path + std::string fname_inp = "img.jpg"; + std::string fname_out = "img.out"; +}; + +bool sam_params_parse(int argc, char ** argv, sam_params & params); + +void sam_print_usage(int argc, char ** argv, const sam_params & params); diff --git a/examples/talk.wasm/gpt-2.cpp b/examples/talk.wasm/gpt-2.cpp index 8fde4925..a2ba98ee 100644 --- a/examples/talk.wasm/gpt-2.cpp +++ b/examples/talk.wasm/gpt-2.cpp @@ -191,9 +191,9 @@ bool gpt2_model_load(const std::string & fname, gpt2_model & model, gpt_vocab & // create the ggml context { struct ggml_init_params params = { - .mem_size = ctx_size, - .mem_buffer = NULL, - .no_alloc = false, + /*.mem_size =*/ ctx_size, + /*.mem_buffer =*/ NULL, + /*.no_alloc =*/ false, }; model.ctx = ggml_init(params); @@ -420,7 +420,6 @@ bool gpt2_eval( struct ggml_context * ctx0 = ggml_init(params); struct ggml_cgraph gf = {}; - gf.n_threads = n_threads; struct ggml_tensor * embd = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, N); memcpy(embd->data, embd_inp.data(), N*ggml_element_size(embd)); @@ -442,7 +441,7 @@ bool gpt2_eval( // norm { // [ 768, N] - cur = ggml_norm(ctx0, inpL); + cur = ggml_norm(ctx0, inpL, 1e-5f); // cur = ln_1_g*cur + ln_1_b // [ 768, N] @@ -589,7 +588,7 @@ bool gpt2_eval( { // norm { - cur = ggml_norm(ctx0, inpFF); + cur = ggml_norm(ctx0, inpFF, 1e-5f); // cur = ln_2_g*cur + ln_2_b // [ 768, N] @@ -644,7 +643,7 @@ bool gpt2_eval( // norm { // [ 768, N] - inpL = ggml_norm(ctx0, inpL); + inpL = ggml_norm(ctx0, inpL, 1e-5f); // inpL = ln_f_g*inpL + ln_f_b // [ 768, N] @@ -664,8 +663,8 @@ bool gpt2_eval( //inpL = ggml_soft_max(ctx0, inpL); // run the computation - ggml_build_forward_expand(&gf, inpL); - ggml_graph_compute (ctx0, &gf); + ggml_build_forward_expand (&gf, inpL); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); //if (n_past%100 == 0) { // ggml_graph_print (&gf); diff --git a/examples/talk/gpt-2.cpp b/examples/talk/gpt-2.cpp index 8fde4925..1ee4e728 100644 --- a/examples/talk/gpt-2.cpp +++ b/examples/talk/gpt-2.cpp @@ -379,6 +379,7 @@ bool gpt2_model_load(const std::string & fname, gpt2_model & model, gpt_vocab & // - embd_inp: the embeddings of the tokens in the context // - embd_w: the predicted logits for the next token // +// TODO: sync latest version from ggml repo bool gpt2_eval( const gpt2_model & model, const int n_threads, @@ -420,7 +421,6 @@ bool gpt2_eval( struct ggml_context * ctx0 = ggml_init(params); struct ggml_cgraph gf = {}; - gf.n_threads = n_threads; struct ggml_tensor * embd = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, N); memcpy(embd->data, embd_inp.data(), N*ggml_element_size(embd)); @@ -442,7 +442,7 @@ bool gpt2_eval( // norm { // [ 768, N] - cur = ggml_norm(ctx0, inpL); + cur = ggml_norm(ctx0, inpL, 1e-5f); // cur = ln_1_g*cur + ln_1_b // [ 768, N] @@ -589,7 +589,7 @@ bool gpt2_eval( { // norm { - cur = ggml_norm(ctx0, inpFF); + cur = ggml_norm(ctx0, inpFF, 1e-5f); // cur = ln_2_g*cur + ln_2_b // [ 768, N] @@ -644,7 +644,7 @@ bool gpt2_eval( // norm { // [ 768, N] - inpL = ggml_norm(ctx0, inpL); + inpL = ggml_norm(ctx0, inpL, 1e-5f); // inpL = ln_f_g*inpL + ln_f_b // [ 768, N] @@ -664,8 +664,8 @@ bool gpt2_eval( //inpL = ggml_soft_max(ctx0, inpL); // run the computation - ggml_build_forward_expand(&gf, inpL); - ggml_graph_compute (ctx0, &gf); + ggml_build_forward_expand (&gf, inpL); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); //if (n_past%100 == 0) { // ggml_graph_print (&gf); diff --git a/ggml-alloc.c b/ggml-alloc.c new file mode 100644 index 00000000..856a4cdb --- /dev/null +++ b/ggml-alloc.c @@ -0,0 +1,594 @@ +#include "ggml-alloc.h" +#include "ggml.h" +#include +#include +#include +#include +#include + +#define UNUSED(x) (void)(x) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define GGML_MAX_CONCUR (2*GGML_MAX_NODES) + +//#define GGML_ALLOCATOR_DEBUG + +//#define AT_PRINTF printf +#define AT_PRINTF(...) ((void)0) + +struct hash_node { + struct ggml_tensor * t; + int n_children; + int n_views; +}; + +static size_t hash(void * p) { + return (size_t)p % GGML_GRAPH_HASHTABLE_SIZE; +} + +static struct hash_node * hash_get(struct hash_node hash_table[], struct ggml_tensor * t) { + size_t h = hash(t); + + // linear probing + size_t i = h; + while (hash_table[i].t != NULL) { + if (hash_table[i].t == t) { + return &hash_table[i]; + } + i = (i + 1) % GGML_GRAPH_HASHTABLE_SIZE; + if (i == h) { + // hash table is full + GGML_ASSERT(false); + } + } + + hash_table[i].t = t; + return &hash_table[i]; +} + +// TODO: GGML_PAD ? +static size_t aligned_offset(const void * buffer, size_t offset, size_t alignment) { + assert(alignment && !(alignment & (alignment - 1))); // power of 2 + size_t align = (alignment - (((uintptr_t)buffer + offset) % alignment)) % alignment; + return offset + align; +} + +struct free_block { + void * addr; + size_t size; +}; + +#define MAX_FREE_BLOCKS 128 + +struct ggml_allocr { + void * data; + size_t size; + size_t alignment; + int n_free_blocks; + struct free_block free_blocks[MAX_FREE_BLOCKS]; + struct hash_node hash_table[GGML_GRAPH_HASHTABLE_SIZE]; + size_t max_size; + bool measure; + int parse_seq[GGML_MAX_CONCUR]; + int parse_seq_len; + +#ifdef GGML_ALLOCATOR_DEBUG + struct ggml_tensor * allocated_tensors[1024]; +#endif +}; + +#ifdef GGML_ALLOCATOR_DEBUG +static void add_allocated_tensor(struct ggml_allocr * alloc, struct ggml_tensor * tensor) { + for (int i = 0; i < 1024; i++) { + if (alloc->allocated_tensors[i] == NULL) { + alloc->allocated_tensors[i] = tensor; + return; + } + } + GGML_ASSERT(!"out of allocated_tensors"); +} +static void remove_allocated_tensor(struct ggml_allocr * alloc, struct ggml_tensor * tensor) { + for (int i = 0; i < 1024; i++) { + if (alloc->allocated_tensors[i] == tensor || + (alloc->allocated_tensors[i] != NULL && alloc->allocated_tensors[i]->data == tensor->data)) { + alloc->allocated_tensors[i] = NULL; + return; + } + } + printf("tried to free tensor %s not found\n", tensor->name); + GGML_ASSERT(!"tensor not found"); +} +#endif + + +static size_t ggml_allocator_get_alloc_size(struct ggml_allocr * alloc, struct ggml_tensor * tensor) { + return ggml_nbytes(tensor); + + UNUSED(alloc); +} + +void ggml_allocr_alloc(struct ggml_allocr * alloc, struct ggml_tensor * tensor) { + size_t size = ggml_allocator_get_alloc_size(alloc, tensor); + size = aligned_offset(NULL, size, alloc->alignment); + + AT_PRINTF("%s: allocating %s (%zu bytes) - ", __func__, tensor->name, size); + + size_t max_avail = 0; + + // find the best fitting free block besides the last block + int best_fit_block = -1; + size_t best_fit_size = SIZE_MAX; + for (int i = 0; i < alloc->n_free_blocks - 1; i++) { + struct free_block * block = &alloc->free_blocks[i]; + max_avail = MAX(max_avail, block->size); + if (block->size >= size && block->size <= best_fit_size) { + best_fit_block = i; + best_fit_size = block->size; + } + } + + AT_PRINTF("block %d\n", best_fit_block); + + if (best_fit_block == -1) { + // the last block is our last resort + struct free_block * block = &alloc->free_blocks[alloc->n_free_blocks - 1]; + if (block->size >= size) { + best_fit_block = alloc->n_free_blocks - 1; + max_avail = MAX(max_avail, block->size); + } else { + fprintf(stderr, "%s: not enough space in the buffer (needed %zu, largest block available %zu)\n", + __func__, size, max_avail); + GGML_ASSERT(!"not enough space in the buffer"); + return; + } + } + struct free_block * block = &alloc->free_blocks[best_fit_block]; + void * addr = block->addr; + block->addr = (char*)block->addr + size; + block->size -= size; + if (block->size == 0) { + // remove block if empty + alloc->n_free_blocks--; + for (int j = best_fit_block; j < alloc->n_free_blocks; j++) { + alloc->free_blocks[j] = alloc->free_blocks[j+1]; + } + } + + tensor->data = addr; + +#ifdef GGML_ALLOCATOR_DEBUG + add_allocated_tensor(alloc, tensor); + size_t cur_max = (char*)addr - (char*)alloc->data + size; + if (cur_max > alloc->max_size) { + printf("max_size = %.2f MB: tensors: ", cur_max / 1024.0 / 1024.0); + for (int i = 0; i < 1024; i++) { + if (alloc->allocated_tensors[i]) { + printf("%s (%.2f MB) ", alloc->allocated_tensors[i]->name, ggml_nbytes(alloc->allocated_tensors[i]) / 1024.0 / 1024.0); + } + } + printf("\n"); + } +#endif + + alloc->max_size = MAX(alloc->max_size, (char*)addr - (char*)alloc->data + size); +} + +// this is a very naive implementation, but for our case the number of free blocks should be very small +static void ggml_allocator_free_tensor(struct ggml_allocr * alloc, struct ggml_tensor * tensor) { + void * ptr = tensor->data; + + if (ptr < alloc->data || (char*)ptr >= (char*)alloc->data + alloc->max_size) { + // the tensor was not allocated in this buffer + // this can happen because the graph allocator will try to free weights and other tensors from different buffers + // the easiest way to deal with this is just to ignore it + return; + } + + size_t size = ggml_allocator_get_alloc_size(alloc, tensor); + size = aligned_offset(NULL, size, alloc->alignment); + AT_PRINTF("%s: freeing %s (%zu bytes) - n_free_blocks = %d\n", __func__, tensor->name, size, alloc->n_free_blocks); + +#ifdef GGML_ALLOCATOR_DEBUG + remove_allocated_tensor(alloc, tensor); +#endif + + // see if we can merge with an existing block + for (int i = 0; i < alloc->n_free_blocks; i++) { + struct free_block * block = &alloc->free_blocks[i]; + // check if ptr is at the end of the block + if ((char*)block->addr + block->size == ptr) { + block->size += size; + // check if we can merge with the next block + if (i < alloc->n_free_blocks - 1 && (char*)block->addr + block->size == alloc->free_blocks[i+1].addr) { + block->size += alloc->free_blocks[i+1].size; + alloc->n_free_blocks--; + for (int j = i+1; j < alloc->n_free_blocks; j++) { + alloc->free_blocks[j] = alloc->free_blocks[j+1]; + } + } + return; + } + // check if ptr is at the beginning of the block + if ((char*)ptr + size == block->addr) { + block->addr = ptr; + block->size += size; + // check if we can merge with the previous block + if (i > 0 && (char*)alloc->free_blocks[i-1].addr + alloc->free_blocks[i-1].size == block->addr) { + alloc->free_blocks[i-1].size += block->size; + alloc->n_free_blocks--; + for (int j = i; j < alloc->n_free_blocks; j++) { + alloc->free_blocks[j] = alloc->free_blocks[j+1]; + } + } + return; + } + } + // otherwise, add a new block + GGML_ASSERT(alloc->n_free_blocks < MAX_FREE_BLOCKS && "out of free blocks"); + // insert the new block in the correct position to keep the array sorted by address (to make merging blocks faster) + int insert_pos = 0; + while (insert_pos < alloc->n_free_blocks && alloc->free_blocks[insert_pos].addr < ptr) { + insert_pos++; + } + // shift all blocks from insert_pos onward to make room for the new block + for (int i = alloc->n_free_blocks; i > insert_pos; i--) { + alloc->free_blocks[i] = alloc->free_blocks[i-1]; + } + // insert the new block + alloc->free_blocks[insert_pos].addr = ptr; + alloc->free_blocks[insert_pos].size = size; + alloc->n_free_blocks++; +} + +void ggml_allocr_set_parse_seq(struct ggml_allocr * alloc, const int * list, int n) { + for (int i = 0; i < n; i++) { + alloc->parse_seq[i] = list[i]; + } + alloc->parse_seq_len = n; +} + +void ggml_allocr_reset(struct ggml_allocr * alloc) { + alloc->n_free_blocks = 1; + size_t align_offset = aligned_offset(alloc->data, 0, alloc->alignment); + alloc->free_blocks[0].addr = (char *)alloc->data + align_offset; + alloc->free_blocks[0].size = alloc->size - align_offset; +} + +struct ggml_allocr * ggml_allocr_new(void * data, size_t size, size_t alignment) { + struct ggml_allocr * alloc = (struct ggml_allocr *)malloc(sizeof(struct ggml_allocr) /* + n_free_blocks * sizeof(struct free_block) */); + + *alloc = (struct ggml_allocr){ + /*.data = */ data, + /*.size = */ size, + /*.alignment = */ alignment, + /*.n_free_blocks = */ 0, + /*.free_blocks = */ {{0}}, + /*.hash_table = */ {{0}}, + /*.max_size = */ 0, + /*.measure = */ false, + /*.parse_seq = */ {0}, + /*.parse_seq_len = */ 0, +#ifdef GGML_ALLOCATOR_DEBUG + /*.allocated_tensors = */ {0}, +#endif + }; + + ggml_allocr_reset(alloc); + + return alloc; +} + +// address and size of the buffer when measuring +// it needs to be large enough to fit all the tensors, but it cannot overlap with other existing buffers +static void * const MEASURE_BASE_ADDR = (void *) 0x1000; +static const size_t MEASURE_MAX_SIZE = 1ULL<<40; // 1 TB + +struct ggml_allocr * ggml_allocr_new_measure(size_t alignment) { + struct ggml_allocr * alloc = (struct ggml_allocr *)malloc(sizeof(struct ggml_allocr) /* + n_free_blocks * sizeof(struct free_block) */); + + *alloc = (struct ggml_allocr){ + /*.data = */ MEASURE_BASE_ADDR, + /*.size = */ MEASURE_MAX_SIZE, + /*.alignment = */ alignment, + /*.n_free_blocks = */ 0, + /*.free_blocks = */ {{0}}, + /*.hash_table = */ {{0}}, + /*.max_size = */ 0, + /*.measure = */ true, + /*.parse_seq = */ {0}, + /*.parse_seq_len = */ 0, +#ifdef GGML_ALLOCATOR_DEBUG + /*.allocated_tensors = */ {0}, +#endif + }; + + ggml_allocr_reset(alloc); + + return alloc; +} + +void ggml_allocr_free(struct ggml_allocr * alloc) { + free(alloc); +} + +bool ggml_allocr_is_measure(struct ggml_allocr * alloc) { + return alloc->measure; +} + +//////////// compute graph allocator + +static bool ggml_is_view(struct ggml_tensor * t) { + return t->op == GGML_OP_RESHAPE || t->op == GGML_OP_VIEW || t->op == GGML_OP_TRANSPOSE || + t->op == GGML_OP_PERMUTE || t->op == GGML_OP_CPY; +} + +static bool ggml_are_same_layout(const struct ggml_tensor * a, const struct ggml_tensor * b) { + if (a->type != b->type) { + return false; + } + for (int i = 0; i < GGML_MAX_DIMS; i++) { + if (a->ne[i] != b->ne[i]) { + return false; + } + if (a->nb[i] != b->nb[i]) { + return false; + } + } + return true; +} + +static struct ggml_tensor * get_view_parent(struct ggml_tensor * t) { + switch (t->op) { + case GGML_OP_PERMUTE: + case GGML_OP_RESHAPE: + case GGML_OP_TRANSPOSE: + case GGML_OP_VIEW: + return t->src[0]; + case GGML_OP_CPY: + return t->src[1]; + default: + return NULL; + } +} + +static struct ggml_tensor * get_view_source(struct ggml_tensor * t) { + struct ggml_tensor * parent = t; + do { + parent = get_view_parent(parent); + } while (ggml_is_view(parent)); + return parent; +} + +static bool ggml_op_can_inplace(enum ggml_op op) { + switch (op) { + case GGML_OP_SCALE: + case GGML_OP_DIAG_MASK_ZERO: + case GGML_OP_DIAG_MASK_INF: + case GGML_OP_ADD: + case GGML_OP_ADD1: + case GGML_OP_ACC: + case GGML_OP_SUB: + case GGML_OP_MUL: + case GGML_OP_DIV: + case GGML_OP_SQR: + case GGML_OP_SQRT: + case GGML_OP_LOG: + case GGML_OP_UNARY: + case GGML_OP_ROPE: + case GGML_OP_RMS_NORM: + case GGML_OP_SET: + case GGML_OP_SOFT_MAX: + case GGML_OP_CONT: + case GGML_OP_ADD_REL_POS: + return true; + + default: + return false; + } +} + +static void allocate_node(struct ggml_allocr * alloc, struct ggml_tensor * node) { + struct hash_node * ht = alloc->hash_table; + if (node->data == NULL) { + if (ggml_is_view(node)) { + size_t offset; + switch(node->op) { + case GGML_OP_VIEW: + memcpy(&offset, node->op_params, sizeof(size_t)); + node->data = (char *) node->src[0]->data + offset; + break; + case GGML_OP_PERMUTE: + case GGML_OP_RESHAPE: + case GGML_OP_TRANSPOSE: + node->data = node->src[0]->data; + break; + case GGML_OP_CPY: + node->data = node->src[1]->data; + break; + default: + GGML_ASSERT(!"unknown view op"); + break; + } + } else { + // see if we can reuse a parent's buffer (inplace) + if (ggml_op_can_inplace(node->op)) { + for (int i = 0; i < GGML_MAX_SRC; i++) { + struct ggml_tensor * parent = node->src[i]; + if (parent == NULL) { + break; + } + + // if the node's data is external, then we cannot re-use it + if ((char *) parent->data < (char *) alloc->data || + (char *) parent->data >= ((char *) alloc->data + alloc->size)) { + AT_PRINTF("not reusing parent %s for %s as %p is external\n", parent->name, node->name, parent->data); + continue; + } + + struct hash_node * p_hn = hash_get(ht, parent); + if (parent->data != NULL && p_hn->n_children == 1 && p_hn->n_views == 0 && ggml_are_same_layout(node, parent)) { + if (ggml_is_view(parent)) { + struct ggml_tensor * view_src = get_view_source(parent); + struct hash_node * view_src_hn = hash_get(ht, view_src); + if (view_src_hn->n_views == 1 && view_src_hn->n_children == 0 && view_src->data == parent->data) { + // TODO: the offset of the view parent must be kept to ensure that the op doesn't overwrite + // the parent's data that it will need later (same layout requirement). the problem is that then + // we cannot free the tensor because the original address of the allocation is lost. + // adding a view_src pointer to the tensor would solve this and simplify the code dealing with views + // for now, we only reuse the parent's data if the offset is zero (view_src->data == parent->data) + AT_PRINTF("reusing view parent %s (%s) for %s\n", parent->name, view_src->name, node->name); + node->data = parent->data; + return; + } + } + else { + AT_PRINTF("reusing parent %s for %s\n", parent->name, node->name); + node->data = parent->data; + return; + } + } + } + } + ggml_allocr_alloc(alloc, node); + } + } +} + +static size_t ggml_allocator_alloc_graph_tensors_n( + struct ggml_allocr * alloc, + struct ggml_cgraph ** graphs, int n_graphs, + struct ggml_tensor *** inputs, struct ggml_tensor *** outputs) { + + // reset hash table + struct hash_node * ht = alloc->hash_table; + memset(ht, 0, sizeof(struct hash_node) * GGML_GRAPH_HASHTABLE_SIZE); + + // count number of children and views + for (int g = 0; g < n_graphs; g++) { + struct ggml_cgraph * gf = graphs[g]; + for (int i = 0; i < gf->n_nodes; i++) { + struct ggml_tensor * node = gf->nodes[i]; + + if (ggml_is_view(node)) { + struct ggml_tensor * view_src = get_view_source(node); + hash_get(ht, view_src)->n_views += 1; + } + + for (int j = 0; j < GGML_MAX_SRC; j++) { + struct ggml_tensor * parent = node->src[j]; + if (parent == NULL) { + break; + } + hash_get(ht, parent)->n_children += 1; + } + } + } + + // allocate tensors + for (int g = 0; g < n_graphs; g++) { + struct ggml_cgraph * gf = graphs[g]; + AT_PRINTF("####### graph %d/%d\n", g, n_graphs); + // graph inputs are allocated first to ensure that they are not overwritten by each other + if (inputs != NULL && inputs[g] != NULL) { + for (int i = 0; inputs[g][i] != NULL; i++) { + struct ggml_tensor * input = inputs[g][i]; + AT_PRINTF("input: %s\n", input->name); + allocate_node(alloc, input); + } + } + // if we have parse_seq then we allocate nodes following the list, and we only free nodes at barriers + int last_barrier_pos = 0; + int n_nodes = alloc->parse_seq_len ? alloc->parse_seq_len : gf->n_nodes; + + for (int ind = 0; ind < n_nodes; ind++) { + // allocate a node if there is no parse_seq or this is not a barrier + if ((alloc->parse_seq_len==0) || alloc->parse_seq[ind] != -1) { + int i = alloc->parse_seq_len ? alloc->parse_seq[ind] : ind; + struct ggml_tensor * node = gf->nodes[i]; + + // allocate parents (leafs) + for (int j = 0; j < GGML_MAX_SRC; j++) { + struct ggml_tensor * parent = node->src[j]; + if (parent == NULL) { + break; + } + allocate_node(alloc, parent); + } + + // allocate node + allocate_node(alloc, node); + + AT_PRINTF("exec: %s (%s) <= ", ggml_op_name(node->op), node->name); + for (int j = 0; j < GGML_MAX_SRC; j++) { + struct ggml_tensor * parent = node->src[j]; + if (parent == NULL) { + break; + } + AT_PRINTF("%s", parent->name); + if (j < GGML_MAX_SRC - 1 && node->src[j + 1] != NULL) { + AT_PRINTF(", "); + } + } + AT_PRINTF("\n"); + } + + + // update parents + // update immediately if there is no parse_seq + // update only at barriers if there is parse_seq + if ((alloc->parse_seq_len==0) || alloc->parse_seq[ind] == -1) { + int update_start = alloc->parse_seq_len ? last_barrier_pos : ind; + int update_end = alloc->parse_seq_len ? ind : ind + 1; + for (int i = update_start; i < update_end; i++) { + int node_i = alloc->parse_seq_len ? alloc->parse_seq[i] : i; + struct ggml_tensor * node = gf->nodes[node_i]; + + for (int j = 0; j < GGML_MAX_SRC; j++) { + struct ggml_tensor * parent = node->src[j]; + if (parent == NULL) { + break; + } + struct hash_node * p_hn = hash_get(ht, parent); + p_hn->n_children -= 1; + + //AT_PRINTF("parent %s: %d children, %d views\n", parent->name, parent->n_children, parent->n_views); + + if (p_hn->n_children == 0 && p_hn->n_views == 0) { + if (ggml_is_view(parent)) { + struct ggml_tensor * view_src = get_view_source(parent); + struct hash_node * view_src_hn = hash_get(ht, view_src); + view_src_hn->n_views -= 1; + AT_PRINTF("view_src %s: %d children, %d views\n", view_src->name, view_src_hn->n_children, view_src_hn->n_views); + if (view_src_hn->n_views == 0 && view_src_hn->n_children == 0 && view_src->data != node->data) { + ggml_allocator_free_tensor(alloc, view_src); + } + } + else { + if (parent->data != node->data) { + ggml_allocator_free_tensor(alloc, parent); + } + } + } + } + } + AT_PRINTF("\n"); + if (alloc->parse_seq_len) { + last_barrier_pos = ind + 1; + } + } + } + // free graph outputs here that wouldn't be freed otherwise because they have no children + if (outputs != NULL && outputs[g] != NULL) { + for (int i = 0; outputs[g][i] != NULL; i++) { + struct ggml_tensor * output = outputs[g][i]; + AT_PRINTF("output: %s\n", output->name); + ggml_allocator_free_tensor(alloc, output); + } + } + } + + return alloc->max_size; +} + +size_t ggml_allocr_alloc_graph(struct ggml_allocr * alloc, struct ggml_cgraph * graph) { + return ggml_allocator_alloc_graph_tensors_n(alloc, &graph, 1, NULL, NULL); +} diff --git a/ggml-alloc.h b/ggml-alloc.h new file mode 100644 index 00000000..9559da75 --- /dev/null +++ b/ggml-alloc.h @@ -0,0 +1,26 @@ +#pragma once + +#include "ggml.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +GGML_API struct ggml_allocr * ggml_allocr_new(void * data, size_t size, size_t alignment); +GGML_API struct ggml_allocr * ggml_allocr_new_measure(size_t alignment); + +// tell the allocator to parse nodes following the order described in the list +// you should call this if your graph are optimized to execute out-of-order +GGML_API void ggml_allocr_set_parse_seq(struct ggml_allocr * alloc, const int * list, int n); + +GGML_API void ggml_allocr_free(struct ggml_allocr * alloc); +GGML_API bool ggml_allocr_is_measure(struct ggml_allocr * alloc); +GGML_API void ggml_allocr_reset(struct ggml_allocr * alloc); +GGML_API void ggml_allocr_alloc(struct ggml_allocr * alloc, struct ggml_tensor * tensor); +GGML_API size_t ggml_allocr_alloc_graph(struct ggml_allocr * alloc, struct ggml_cgraph * graph); + + +#ifdef __cplusplus +} +#endif diff --git a/ggml-cuda.cu b/ggml-cuda.cu index 694e0bcb..391e6318 100644 --- a/ggml-cuda.cu +++ b/ggml-cuda.cu @@ -10,16 +10,23 @@ #include #include #include -#include +#ifdef __HIP_PLATFORM_AMD__ +// for rocblas_initialize() +#include "rocblas/rocblas.h" +#endif +#define CUBLAS_COMPUTE_32F HIPBLAS_R_32F +#define CUBLAS_COMPUTE_32F_FAST_16F HIPBLAS_R_32F +#define CUBLAS_GEMM_DEFAULT HIPBLAS_GEMM_DEFAULT #define CUBLAS_OP_N HIPBLAS_OP_N #define CUBLAS_OP_T HIPBLAS_OP_T #define CUBLAS_STATUS_SUCCESS HIPBLAS_STATUS_SUCCESS #define CUBLAS_TF32_TENSOR_OP_MATH 0 +#define CUDA_R_16F HIPBLAS_R_16F +#define CUDA_R_32F HIPBLAS_R_32F #define __shfl_xor_sync(mask, var, laneMask, width) __shfl_xor(var, laneMask, width) #define cublasCreate hipblasCreate -#define cublasGetStatusString rocblas_status_to_string +#define cublasGemmEx hipblasGemmEx #define cublasHandle_t hipblasHandle_t -#define cublasLoggerConfigure(logIsOn, logToStdOut, logToStdErr, logFileName) CUBLAS_STATUS_SUCCESS #define cublasSetMathMode(handle, mode) CUBLAS_STATUS_SUCCESS #define cublasSetStream hipblasSetStream #define cublasSgemm hipblasSgemm @@ -28,10 +35,10 @@ #define cudaDeviceSynchronize hipDeviceSynchronize #define cudaError_t hipError_t #define cudaEventCreateWithFlags hipEventCreateWithFlags -#define cudaEventDestroy hipEventDestroy #define cudaEventDisableTiming hipEventDisableTiming #define cudaEventRecord hipEventRecord #define cudaEvent_t hipEvent_t +#define cudaEventDestroy hipEventDestroy #define cudaFree hipFree #define cudaFreeHost hipHostFree #define cudaGetDevice hipGetDevice @@ -40,7 +47,7 @@ #define cudaGetErrorString hipGetErrorString #define cudaGetLastError hipGetLastError #define cudaMalloc hipMalloc -#define cudaMallocHost hipHostMalloc +#define cudaMallocHost(ptr, size) hipHostMalloc(ptr, size, hipHostMallocDefault) #define cudaMemcpy hipMemcpy #define cudaMemcpy2DAsync hipMemcpy2DAsync #define cudaMemcpyAsync hipMemcpyAsync @@ -49,9 +56,11 @@ #define cudaMemcpyHostToDevice hipMemcpyHostToDevice #define cudaMemcpyKind hipMemcpyKind #define cudaMemset hipMemset +#define cudaOccupancyMaxPotentialBlockSize hipOccupancyMaxPotentialBlockSize #define cudaSetDevice hipSetDevice #define cudaStreamCreateWithFlags hipStreamCreateWithFlags #define cudaStreamNonBlocking hipStreamNonBlocking +#define cudaStreamSynchronize hipStreamSynchronize #define cudaStreamWaitEvent(stream, event) hipStreamWaitEvent(stream, event, 0) #define cudaStream_t hipStream_t #define cudaSuccess hipSuccess @@ -64,6 +73,50 @@ #include "ggml-cuda.h" #include "ggml.h" +#define MIN_CC_DP4A 610 // minimum compute capability for __dp4a, an intrinsic for byte-wise dot products +#ifndef CC_TURING +#define CC_TURING 700 +#endif + +#if defined(GGML_USE_HIPBLAS) +#define __CUDA_ARCH__ 1300 + +typedef int8_t int8x4_t __attribute__((ext_vector_type(4))); +static __device__ __forceinline__ int __vsubss4(const int a, const int b) { + const int8x4_t va = reinterpret_cast(a); + const int8x4_t vb = reinterpret_cast(b); + const int8x4_t c = __builtin_elementwise_sub_sat(va, vb); + return reinterpret_cast(c); +} + +static __device__ __forceinline__ int __dp4a(const int a, const int b, int c) { +#if defined(__gfx906__) || defined(__gfx908__) || defined(__gfx90a__) || defined(__gfx1030__) + c = __builtin_amdgcn_sdot4(a, b, c, false); +#elif defined(__gfx1100__) + c = __builtin_amdgcn_sudot4( true, a, true, b, c, false); +#elif defined(__gfx1010__) || defined(__gfx900__) + int tmp1; + int tmp2; + asm("\n \ + v_mul_i32_i24 %1, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:BYTE_0 \n \ + v_mul_i32_i24 %2, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_1 src1_sel:BYTE_1 \n \ + v_add3_u32 %0, %1, %2, %0 \n \ + v_mul_i32_i24 %1, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_2 src1_sel:BYTE_2 \n \ + v_mul_i32_i24 %2, sext(%3), sext(%4) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:BYTE_3 \n \ + v_add3_u32 %0, %1, %2, %0 \n \ + " + : "+v"(c), "=&v"(tmp1), "=&v"(tmp2) + : "v"(a), "v"(b) + ); +#else + const int8x4_t va = reinterpret_cast(a); + const int8x4_t vb = reinterpret_cast(b); + c += va[0] * vb[0] + va[1] * vb[1] + va[2] * vb[2] + va[3] * vb[3]; +#endif + return c; +} +#endif + #if defined(_MSC_VER) #pragma warning(disable: 4244 4267) // possible loss of data #endif @@ -101,17 +154,45 @@ static_assert(sizeof(half) == sizeof(ggml_fp16_t), "wrong fp16 size"); } while (0) #endif // CUDART_VERSION >= 11 -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 typedef half dfloat; // dequantize float typedef half2 dfloat2; #else typedef float dfloat; // dequantize float typedef float2 dfloat2; -#endif //GGML_CUDA_DMMV_F16 +#endif //GGML_CUDA_F16 + +static __device__ __forceinline__ int get_int_from_int8(const int8_t * x8, const int & i32) { + const uint16_t * x16 = (uint16_t *) (x8 + sizeof(int) * i32); // assume at least 2 byte alignment + + int x32 = 0; + x32 |= x16[0] << 0; + x32 |= x16[1] << 16; + + return x32; +} + +static __device__ __forceinline__ int get_int_from_uint8(const uint8_t * x8, const int & i32) { + const uint16_t * x16 = (uint16_t *) (x8 + sizeof(int) * i32); // assume at least 2 byte alignment + + int x32 = 0; + x32 |= x16[0] << 0; + x32 |= x16[1] << 16; + + return x32; +} + +static __device__ __forceinline__ int get_int_from_int8_aligned(const int8_t * x8, const int & i32) { + return *((int *) (x8 + sizeof(int) * i32)); // assume at least 4 byte alignment +} + +static __device__ __forceinline__ int get_int_from_uint8_aligned(const uint8_t * x8, const int & i32) { + return *((int *) (x8 + sizeof(int) * i32)); // assume at least 4 byte alignment +} typedef void (*dequantize_kernel_t)(const void * vx, const int ib, const int iqs, dfloat2 & v); -typedef void (*to_fp32_cuda_t)(const void * x, float * y, int k, cudaStream_t stream); -typedef void (*dot_kernel_k_t)(const void * vx, const int ib, const int iqs, const float * y, float & v); +typedef void (*to_fp32_cuda_t)(const void * __restrict__ x, float * __restrict__ y, int k, cudaStream_t stream); +typedef void (*dot_kernel_k_t)(const void * __restrict__ vx, const int ib, const int iqs, const float * __restrict__ y, float & v); typedef void (*cpy_kernel_t)(const char * cx, char * cdst); typedef void (*ggml_cuda_func_t)(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst); typedef void (*ggml_cuda_op_t)( @@ -121,9 +202,11 @@ typedef void (*ggml_cuda_op_t)( // QK = number of values after dequantization // QR = QK / number of values before dequantization +// QI = number of 32 bit integers before dequantization #define QK4_0 32 #define QR4_0 2 +#define QI4_0 (QK4_0 / (4 * QR4_0)) typedef struct { half d; // delta uint8_t qs[QK4_0 / 2]; // nibbles / quants @@ -132,15 +215,16 @@ static_assert(sizeof(block_q4_0) == sizeof(ggml_fp16_t) + QK4_0 / 2, "wrong q4_0 #define QK4_1 32 #define QR4_1 2 +#define QI4_1 (QK4_1 / (4 * QR4_1)) typedef struct { - half d; // delta - half m; // min + half2 dm; // dm.x = delta, dm.y = min uint8_t qs[QK4_1 / 2]; // nibbles / quants } block_q4_1; static_assert(sizeof(block_q4_1) == sizeof(ggml_fp16_t) * 2 + QK4_1 / 2, "wrong q4_1 block size/padding"); #define QK5_0 32 #define QR5_0 2 +#define QI5_0 (QK5_0 / (4 * QR5_0)) typedef struct { half d; // delta uint8_t qh[4]; // 5-th bit of quants @@ -150,9 +234,9 @@ static_assert(sizeof(block_q5_0) == sizeof(ggml_fp16_t) + sizeof(uint32_t) + QK5 #define QK5_1 32 #define QR5_1 2 +#define QI5_1 (QK5_1 / (4 * QR5_1)) typedef struct { - half d; // delta - half m; // min + half2 dm; // dm.x = delta, dm.y = min uint8_t qh[4]; // 5-th bit of quants uint8_t qs[QK5_1 / 2]; // nibbles / quants } block_q5_1; @@ -160,12 +244,31 @@ static_assert(sizeof(block_q5_1) == 2 * sizeof(ggml_fp16_t) + sizeof(uint32_t) + #define QK8_0 32 #define QR8_0 1 +#define QI8_0 (QK8_0 / (4 * QR8_0)) typedef struct { half d; // delta int8_t qs[QK8_0]; // quants } block_q8_0; static_assert(sizeof(block_q8_0) == sizeof(ggml_fp16_t) + QK8_0, "wrong q8_0 block size/padding"); +#define QK8_1 32 +#define QR8_1 1 +#define QI8_1 (QK8_1 / (4 * QR8_1)) +typedef struct { + half2 ds; // ds.x = delta, ds.y = sum + int8_t qs[QK8_0]; // quants +} block_q8_1; +static_assert(sizeof(block_q8_1) == 2*sizeof(ggml_fp16_t) + QK8_0, "wrong q8_1 block size/padding"); + +typedef float (*vec_dot_q_cuda_t)(const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs); +typedef void (*allocate_tiles_cuda_t)(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc); +typedef void (*load_tiles_cuda_t)( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row); +typedef float (*vec_dot_q_mul_mat_cuda_t)( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ms, const int & i, const int & j, const int & k); + //================================= k-quants #ifdef GGML_QKK_64 @@ -176,14 +279,17 @@ static_assert(sizeof(block_q8_0) == sizeof(ggml_fp16_t) + QK8_0, "wrong q8_0 blo #define K_SCALE_SIZE 12 #endif +#define QR2_K 4 +#define QI2_K (QK_K / (4*QR2_K)) typedef struct { uint8_t scales[QK_K/16]; // scales and mins, quantized with 4 bits uint8_t qs[QK_K/4]; // quants - half d; // super-block scale for quantized scales - half dmin; // super-block scale for quantized mins + half2 dm; // super-block scale for quantized scales/mins } block_q2_K; static_assert(sizeof(block_q2_K) == 2*sizeof(ggml_fp16_t) + QK_K/16 + QK_K/4, "wrong q2_K block size/padding"); +#define QR3_K 4 +#define QI3_K (QK_K / (4*QR3_K)) typedef struct { uint8_t hmask[QK_K/8]; // quants - high bit uint8_t qs[QK_K/4]; // quants - low 2 bits @@ -196,23 +302,26 @@ typedef struct { } block_q3_K; //static_assert(sizeof(block_q3_K) == sizeof(ggml_fp16_t) + QK_K / 4 + QK_K / 8 + K_SCALE_SIZE, "wrong q3_K block size/padding"); +#define QR4_K 2 +#define QI4_K (QK_K / (4*QR4_K)) #ifdef GGML_QKK_64 typedef struct { - half d[2]; // super-block scales/mins + half dm[2]; // super-block scales/mins uint8_t scales[2]; // 4-bit block scales/mins uint8_t qs[QK_K/2]; // 4--bit quants } block_q4_K; -static_assert(sizeof(block_q4_K) == 2*sizeof(ggml_fp16_t) + QK_K/2 + 2, "wrong q4_K block size/padding"); +static_assert(sizeof(block_q4_K) == sizeof(half2) + QK_K/2 + 2, "wrong q4_K block size/padding"); #else typedef struct { - half d; // super-block scale for quantized scales - half dmin; // super-block scale for quantized mins + half2 dm; // super-block scale for quantized scales/mins uint8_t scales[3*QK_K/64]; // scales, quantized with 6 bits uint8_t qs[QK_K/2]; // 4--bit quants } block_q4_K; static_assert(sizeof(block_q4_K) == 2*sizeof(ggml_fp16_t) + 3*QK_K/64 + QK_K/2, "wrong q4_K block size/padding"); #endif +#define QR5_K 2 +#define QI5_K (QK_K / (4*QR5_K)) #ifdef GGML_QKK_64 typedef struct { half d; // super-block scale @@ -223,15 +332,16 @@ typedef struct { static_assert(sizeof(block_q5_K) == sizeof(ggml_fp16_t) + QK_K/2 + QK_K/8 + QK_K/16, "wrong q5_K block size/padding"); #else typedef struct { - half d; // super-block scale for quantized scales - half dmin; // super-block scale for quantized mins - uint8_t scales[K_SCALE_SIZE]; // scales and mins, quantized with 6 bits - uint8_t qh[QK_K/8]; // quants, high bit - uint8_t qs[QK_K/2]; // quants, low 4 bits + half2 dm; // super-block scale for quantized scales/mins + uint8_t scales[K_SCALE_SIZE]; // scales and mins, quantized with 6 bits + uint8_t qh[QK_K/8]; // quants, high bit + uint8_t qs[QK_K/2]; // quants, low 4 bits } block_q5_K; static_assert(sizeof(block_q5_K) == 2*sizeof(ggml_fp16_t) + K_SCALE_SIZE + QK_K/2 + QK_K/8, "wrong q5_K block size/padding"); #endif +#define QR6_K 2 +#define QI6_K (QK_K / (4*QR6_K)) typedef struct { uint8_t ql[QK_K/2]; // quants, lower 4 bits uint8_t qh[QK_K/4]; // quants, upper 2 bits @@ -241,22 +351,26 @@ typedef struct { static_assert(sizeof(block_q6_K) == sizeof(ggml_fp16_t) + 13*QK_K/16, "wrong q6_K block size/padding"); #define WARP_SIZE 32 +#define MATRIX_ROW_PADDING 512 // last row of quant. matrices is a multiple of this to avoid out-of-bounds memory accesses #define CUDA_ADD_BLOCK_SIZE 256 #define CUDA_MUL_BLOCK_SIZE 256 +#define CUDA_GELU_BLOCK_SIZE 256 #define CUDA_SILU_BLOCK_SIZE 256 #define CUDA_CPY_BLOCK_SIZE 32 #define CUDA_SCALE_BLOCK_SIZE 256 #define CUDA_ROPE_BLOCK_SIZE 256 +#define CUDA_ALIBI_BLOCK_SIZE 32 #define CUDA_DIAG_MASK_INF_BLOCK_SIZE 32 +#define CUDA_QUANTIZE_BLOCK_SIZE 256 #define CUDA_DEQUANTIZE_BLOCK_SIZE 256 // dmmv = dequantize_mul_mat_vec #ifndef GGML_CUDA_DMMV_X #define GGML_CUDA_DMMV_X 32 #endif -#ifndef GGML_CUDA_DMMV_Y -#define GGML_CUDA_DMMV_Y 1 +#ifndef GGML_CUDA_MMV_Y +#define GGML_CUDA_MMV_Y 1 #endif #ifndef K_QUANTS_PER_ITERATION @@ -270,13 +384,27 @@ struct ggml_tensor_extra_gpu { cudaEvent_t events[GGML_CUDA_MAX_DEVICES]; // events for synchronizing multiple GPUs }; -static __global__ void add_f32(const float * x, const float * y, float * dst, const int k) { +static int g_device_count = -1; +static int g_main_device = 0; +static int g_compute_capabilities[GGML_CUDA_MAX_DEVICES]; +static float g_tensor_split[GGML_CUDA_MAX_DEVICES] = {0}; +static bool g_mul_mat_q = true; + +static void * g_scratch_buffer = nullptr; +static size_t g_scratch_size = 1024*1024*1024; // 1 GB by default +static size_t g_scratch_offset = 0; + +static cublasHandle_t g_cublas_handles[GGML_CUDA_MAX_DEVICES] = {nullptr}; + +static cudaStream_t g_cudaStreams_main[GGML_CUDA_MAX_DEVICES] = { nullptr }; + +static __global__ void add_f32(const float * x, const float * y, float * dst, const int kx, const int ky) { const int i = blockDim.x*blockIdx.x + threadIdx.x; - if (i >= k) { + if (i >= kx) { return; } - dst[i] = x[i] + y[i]; + dst[i] = x[i] + y[i%ky]; } static __global__ void add_f16_f32_f16(const half * x, const float * y, half * dst, const int k) { @@ -297,6 +425,19 @@ static __global__ void mul_f32(const float * x, const float * y, float * dst, co dst[i] = x[i] * y[i%ky]; } +static __global__ void gelu_f32(const float * x, float * dst, const int k) { + const float GELU_COEF_A = 0.044715f; + const float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f; + const int i = blockDim.x*blockIdx.x + threadIdx.x; + + if (i >= k) { + return; + } + + float xi = x[i]; + dst[i] = 0.5f*xi*(1.0f + tanhf(SQRT_2_OVER_PI*xi*(1.0f + GELU_COEF_A*xi*xi))); +} + static __global__ void silu_f32(const float * x, float * dst, const int k) { const int i = blockDim.x*blockIdx.x + threadIdx.x; @@ -306,32 +447,58 @@ static __global__ void silu_f32(const float * x, float * dst, const int k) { dst[i] = x[i] / (1.0f + expf(-x[i])); } -static __global__ void rms_norm_f32(const float * x, float * dst, const int ncols) { +static __global__ void norm_f32(const float * x, float * dst, const int ncols) { const int row = blockIdx.x*blockDim.y + threadIdx.y; const int tid = threadIdx.x; - const float eps = 1e-6; + const float eps = 1e-5f; + + float mean = 0.0f; + float var = 0.0f; + + for (int col = tid; col < ncols; col += WARP_SIZE) { + const float xi = x[row*ncols + col]; + mean += xi; + var += xi * xi; + } + + // sum up partial sums +#pragma unroll + for (int mask = 16; mask > 0; mask >>= 1) { + mean += __shfl_xor_sync(0xffffffff, mean, mask, 32); + var += __shfl_xor_sync(0xffffffff, var, mask, 32); + } + + mean /= ncols; + var = var / ncols - mean * mean; + const float inv_var = rsqrtf(var + eps); + + for (int col = tid; col < ncols; col += WARP_SIZE) { + dst[row*ncols + col] = (x[row*ncols + col] - mean) * inv_var; + } +} + +static __global__ void rms_norm_f32(const float * x, float * dst, const int ncols, const float eps) { + const int row = blockIdx.x*blockDim.y + threadIdx.y; + const int tid = threadIdx.x; float tmp = 0.0f; // partial sum for thread in warp - for (int i = 0; i < ncols; i += WARP_SIZE) { - const int col = i + tid; + for (int col = tid; col < ncols; col += WARP_SIZE) { const float xi = x[row*ncols + col]; tmp += xi * xi; } // sum up partial sums - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); } const float mean = tmp / ncols; - const float scale = 1.0f / sqrtf(mean + eps); + const float scale = rsqrtf(mean + eps); - for (int i = 0; i < ncols; i += WARP_SIZE) { - const int col = i + tid; + for (int col = tid; col < ncols; col += WARP_SIZE) { dst[row*ncols + col] = scale * x[row*ncols + col]; } } @@ -346,33 +513,33 @@ static __device__ __forceinline__ void dequantize_q4_0(const void * vx, const in v.x = vui & 0xF; v.y = vui >> 4; -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 v = __hsub2(v, {8.0f, 8.0f}); v = __hmul2(v, {d, d}); #else v.x = (v.x - 8.0f) * d; v.y = (v.y - 8.0f) * d; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } static __device__ __forceinline__ void dequantize_q4_1(const void * vx, const int ib, const int iqs, dfloat2 & v){ const block_q4_1 * x = (const block_q4_1 *) vx; - const dfloat d = x[ib].d; - const dfloat m = x[ib].m; + const dfloat d = __low2half(x[ib].dm); + const dfloat m = __high2half(x[ib].dm); const int vui = x[ib].qs[iqs]; v.x = vui & 0xF; v.y = vui >> 4; -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 v = __hmul2(v, {d, d}); v = __hadd2(v, {m, m}); #else v.x = (v.x * d) + m; v.y = (v.y * d) + m; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } static __device__ __forceinline__ void dequantize_q5_0(const void * vx, const int ib, const int iqs, dfloat2 & v){ @@ -389,20 +556,20 @@ static __device__ __forceinline__ void dequantize_q5_0(const void * vx, const in v.x = ((x[ib].qs[iqs] & 0xf) | xh_0); v.y = ((x[ib].qs[iqs] >> 4) | xh_1); -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 v = __hsub2(v, {16.0f, 16.0f}); v = __hmul2(v, {d, d}); #else v.x = (v.x - 16.0f) * d; v.y = (v.y - 16.0f) * d; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } static __device__ __forceinline__ void dequantize_q5_1(const void * vx, const int ib, const int iqs, dfloat2 & v){ const block_q5_1 * x = (const block_q5_1 *) vx; - const dfloat d = x[ib].d; - const dfloat m = x[ib].m; + const dfloat d = __low2half(x[ib].dm); + const dfloat m = __high2half(x[ib].dm); uint32_t qh; memcpy(&qh, x[ib].qh, sizeof(qh)); @@ -413,13 +580,13 @@ static __device__ __forceinline__ void dequantize_q5_1(const void * vx, const in v.x = ((x[ib].qs[iqs] & 0xf) | xh_0); v.y = ((x[ib].qs[iqs] >> 4) | xh_1); -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 v = __hmul2(v, {d, d}); v = __hadd2(v, {m, m}); #else v.x = (v.x * d) + m; v.y = (v.y * d) + m; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } static __device__ __forceinline__ void dequantize_q8_0(const void * vx, const int ib, const int iqs, dfloat2 & v){ @@ -430,17 +597,17 @@ static __device__ __forceinline__ void dequantize_q8_0(const void * vx, const in v.x = x[ib].qs[iqs + 0]; v.y = x[ib].qs[iqs + 1]; -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 v = __hmul2(v, {d, d}); #else v.x *= d; v.y *= d; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } //================================== k-quants -static __global__ void dequantize_block_q2_K(const void * vx, float * yy) { +static __global__ void dequantize_block_q2_K(const void * __restrict__ vx, float * __restrict__ yy) { const int i = blockIdx.x; const block_q2_K * x = (const block_q2_K *) vx; @@ -454,8 +621,8 @@ static __global__ void dequantize_block_q2_K(const void * vx, float * yy) { const uint8_t q = x[i].qs[32*n + l]; float * y = yy + i*QK_K + 128*n; - float dall = x[i].d; - float dmin = x[i].dmin; + float dall = __low2half(x[i].dm); + float dmin = __high2half(x[i].dm); y[l+ 0] = dall * (x[i].scales[is+0] & 0xF) * ((q >> 0) & 3) - dmin * (x[i].scales[is+0] >> 4); y[l+32] = dall * (x[i].scales[is+2] & 0xF) * ((q >> 2) & 3) - dmin * (x[i].scales[is+2] >> 4); y[l+64] = dall * (x[i].scales[is+4] & 0xF) * ((q >> 4) & 3) - dmin * (x[i].scales[is+4] >> 4); @@ -465,15 +632,15 @@ static __global__ void dequantize_block_q2_K(const void * vx, float * yy) { const int il = tid%16; // 0...15 const uint8_t q = x[i].qs[il] >> (2*is); float * y = yy + i*QK_K + 16*is + il; - float dall = x[i].d; - float dmin = x[i].dmin; + float dall = __low2half(x[i].dm); + float dmin = __high2half(x[i].dm); y[ 0] = dall * (x[i].scales[is+0] & 0xF) * ((q >> 0) & 3) - dmin * (x[i].scales[is+0] >> 4); y[32] = dall * (x[i].scales[is+2] & 0xF) * ((q >> 4) & 3) - dmin * (x[i].scales[is+2] >> 4); #endif } -static __global__ void dequantize_block_q3_K(const void * vx, float * yy) { +static __global__ void dequantize_block_q3_K(const void * __restrict__ vx, float * __restrict__ yy) { const int i = blockIdx.x; const block_q3_K * x = (const block_q3_K *) vx; @@ -537,7 +704,7 @@ static inline __device__ void get_scale_min_k4(int j, const uint8_t * q, uint8_t } #endif -static __global__ void dequantize_block_q4_K(const void * vx, float * yy) { +static __global__ void dequantize_block_q4_K(const void * __restrict__ vx, float * __restrict__ yy) { const block_q4_K * x = (const block_q4_K *) vx; const int i = blockIdx.x; @@ -552,8 +719,8 @@ static __global__ void dequantize_block_q4_K(const void * vx, float * yy) { float * y = yy + i*QK_K + 64*il + n*ir; - const float dall = x[i].d; - const float dmin = x[i].dmin; + const float dall = __low2half(x[i].dm); + const float dmin = __high2half(x[i].dm); const uint8_t * q = x[i].qs + 32*il + n*ir; @@ -570,14 +737,14 @@ static __global__ void dequantize_block_q4_K(const void * vx, float * yy) { const int tid = threadIdx.x; const uint8_t * q = x[i].qs; float * y = yy + i*QK_K; - const float d = (float)x[i].d[0]; - const float m = (float)x[i].d[1]; + const float d = (float)x[i].dm[0]; + const float m = (float)x[i].dm[1]; y[tid+ 0] = d * (x[i].scales[0] & 0xF) * (q[tid] & 0xF) - m * (x[i].scales[0] >> 4); y[tid+32] = d * (x[i].scales[1] & 0xF) * (q[tid] >> 4) - m * (x[i].scales[1] >> 4); #endif } -static __global__ void dequantize_block_q5_K(const void * vx, float * yy) { +static __global__ void dequantize_block_q5_K(const void * __restrict__ vx, float * __restrict__ yy) { const block_q5_K * x = (const block_q5_K *) vx; const int i = blockIdx.x; @@ -591,8 +758,8 @@ static __global__ void dequantize_block_q5_K(const void * vx, float * yy) { float * y = yy + i*QK_K + 64*il + 2*ir; - const float dall = x[i].d; - const float dmin = x[i].dmin; + const float dall = __low2half(x[i].dm); + const float dmin = __high2half(x[i].dm); const uint8_t * ql = x[i].qs + 32*il + 2*ir; const uint8_t * qh = x[i].qh + 2*ir; @@ -623,7 +790,7 @@ static __global__ void dequantize_block_q5_K(const void * vx, float * yy) { #endif } -static __global__ void dequantize_block_q6_K(const void * vx, float * yy) { +static __global__ void dequantize_block_q6_K(const void * __restrict__ vx, float * __restrict__ yy) { const block_q6_K * x = (const block_q6_K *) vx; const int i = blockIdx.x; @@ -667,7 +834,7 @@ static __global__ void dequantize_block_q6_K(const void * vx, float * yy) { #endif } -static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) { +static __global__ void dequantize_mul_mat_vec_q2_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) { static_assert(16%K_QUANTS_PER_ITERATION == 0, "16 must be divisible by K_QUANTS_PER_ITERATION"); @@ -704,8 +871,8 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float const float * y = yy + i * QK_K + y_offset; const uint8_t * q = x[i].qs + q_offset; - const float dall = x[i].d; - const float dmin = x[i].dmin; + const float dall = __low2half(x[i].dm); + const float dmin = __high2half(x[i].dm); const uint32_t * a = (const uint32_t *)(x[i].scales + s_offset); aux[0] = a[0] & 0x0f0f0f0f; @@ -747,9 +914,7 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float uaux[0] = s[0] & 0x0f0f0f0f; uaux[1] = (s[0] >> 4) & 0x0f0f0f0f; - const half2 * dh = (const half2 *)&x[i].d; - - const float2 dall = __half22float2(dh[0]); + const float2 dall = __half22float2(x[i].dm); float sum1 = 0, sum2 = 0; for (int l = 0; l < K_QUANTS_PER_ITERATION; ++l) { @@ -765,7 +930,6 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float #endif // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -776,7 +940,7 @@ static __global__ void dequantize_mul_mat_vec_q2_k(const void * vx, const float } } -static __global__ void dequantize_mul_mat_vec_q3_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) { +static __global__ void dequantize_mul_mat_vec_q3_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) { const int row = blockIdx.y*blockDim.y + threadIdx.y; if (row > nrows) return; @@ -870,7 +1034,6 @@ static __global__ void dequantize_mul_mat_vec_q3_k(const void * vx, const float #endif // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -881,7 +1044,7 @@ static __global__ void dequantize_mul_mat_vec_q3_k(const void * vx, const float } } -static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) { +static __global__ void dequantize_mul_mat_vec_q4_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) { const int row = blockIdx.y*blockDim.y + threadIdx.y; if (row > nrows) return; @@ -914,17 +1077,23 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float uint16_t aux[4]; const uint8_t * sc = (const uint8_t *)aux; +#if K_QUANTS_PER_ITERATION == 2 + uint32_t q32[4]; + const uint8_t * q4 = (const uint8_t *)q32; +#else + uint16_t q16[4]; + const uint8_t * q4 = (const uint8_t *)q16; +#endif + float tmp = 0; // partial sum for thread in warp for (int i = ix; i < num_blocks_per_row; i += K_QUANTS_PER_ITERATION) { - const uint8_t * q1 = x[i].qs + q_offset; - const uint8_t * q2 = q1 + 64; const float * y1 = yy + i*QK_K + y_offset; const float * y2 = y1 + 128; - const float dall = x[i].d; - const float dmin = x[i].dmin; + const float dall = __low2half(x[i].dm); + const float dmin = __high2half(x[i].dm); const uint16_t * a = (const uint16_t *)x[i].scales; aux[0] = a[im+0] & kmask1; @@ -932,14 +1101,41 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float aux[2] = ((a[im+4] >> 0) & kmask2) | ((a[im+0] & kmask3) >> 2); aux[3] = ((a[im+4] >> 4) & kmask2) | ((a[im+2] & kmask3) >> 2); +#if K_QUANTS_PER_ITERATION == 2 + const uint32_t * q1 = (const uint32_t *)(x[i].qs + q_offset); + const uint32_t * q2 = q1 + 16; + + q32[0] = q1[0] & 0x0f0f0f0f; + q32[1] = q1[0] & 0xf0f0f0f0; + q32[2] = q2[0] & 0x0f0f0f0f; + q32[3] = q2[0] & 0xf0f0f0f0; + float4 s = {0.f, 0.f, 0.f, 0.f}; float smin = 0; - for (int l = 0; l < n; ++l) { - s.x += y1[l] * (q1[l] & 0xF); s.y += y1[l+32] * (q1[l] >> 4); - s.z += y2[l] * (q2[l] & 0xF); s.w += y2[l+32] * (q2[l] >> 4); + for (int l = 0; l < 4; ++l) { + s.x += y1[l] * q4[l+0]; s.y += y1[l+32] * q4[l+ 4]; + s.z += y2[l] * q4[l+8]; s.w += y2[l+32] * q4[l+12]; smin += y1[l] * sc[2] + y1[l+32] * sc[3] + y2[l] * sc[6] + y2[l+32] * sc[7]; } - tmp += dall * (s.x * sc[0] + s.y * sc[1] + s.z * sc[4] + s.w * sc[5]) - dmin * smin; + tmp += dall * (s.x * sc[0] + s.y * sc[1] * 1.f/16.f + s.z * sc[4] + s.w * sc[5] * 1.f/16.f) - dmin * smin; +#else + const uint16_t * q1 = (const uint16_t *)(x[i].qs + q_offset); + const uint16_t * q2 = q1 + 32; + + q16[0] = q1[0] & 0x0f0f; + q16[1] = q1[0] & 0xf0f0; + q16[2] = q2[0] & 0x0f0f; + q16[3] = q2[0] & 0xf0f0; + + float4 s = {0.f, 0.f, 0.f, 0.f}; + float smin = 0; + for (int l = 0; l < 2; ++l) { + s.x += y1[l] * q4[l+0]; s.y += y1[l+32] * q4[l+2]; + s.z += y2[l] * q4[l+4]; s.w += y2[l+32] * q4[l+6]; + smin += y1[l] * sc[2] + y1[l+32] * sc[3] + y2[l] * sc[6] + y2[l+32] * sc[7]; + } + tmp += dall * (s.x * sc[0] + s.y * sc[1] * 1.f/16.f + s.z * sc[4] + s.w * sc[5] * 1.f/16.f) - dmin * smin; +#endif } #else @@ -959,8 +1155,8 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float const uint16_t * a = (const uint16_t *)x[i].scales; aux16[0] = a[0] & 0x0f0f; aux16[1] = (a[0] >> 4) & 0x0f0f; - const float d = (float)x[i].d[0]; - const float m = (float)x[i].d[1]; + const float d = (float)x[i].dm[0]; + const float m = (float)x[i].dm[1]; float sum = 0.f; for (int j = 0; j < K_QUANTS_PER_ITERATION; ++j) { sum += y[j+ 0] * (d * s[0] * (q[j+ 0] & 0xF) - m * s[2]) @@ -974,7 +1170,6 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float #endif // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -985,7 +1180,7 @@ static __global__ void dequantize_mul_mat_vec_q4_k(const void * vx, const float } } -static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float * yy, float * dst, const int ncols) { +static __global__ void dequantize_mul_mat_vec_q5_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols) { const int row = blockIdx.x; const int num_blocks_per_row = ncols / QK_K; @@ -1020,16 +1215,18 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float uint16_t aux[4]; const uint8_t * sc = (const uint8_t *)aux; + uint16_t q16[8]; + const uint8_t * q4 = (const uint8_t *)q16; + for (int i = ix; i < num_blocks_per_row; i += 2) { const uint8_t * ql1 = x[i].qs + q_offset; - const uint8_t * ql2 = ql1 + 64; const uint8_t * qh = x[i].qh + l0; const float * y1 = yy + i*QK_K + y_offset; const float * y2 = y1 + 128; - const float dall = x[i].d; - const float dmin = x[i].dmin; + const float dall = __low2half(x[i].dm); + const float dmin = __high2half(x[i].dm); const uint16_t * a = (const uint16_t *)x[i].scales; aux[0] = a[im+0] & kmask1; @@ -1039,15 +1236,25 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float float4 sum = {0.f, 0.f, 0.f, 0.f}; float smin = 0; + const uint16_t * q1 = (const uint16_t *)ql1; + const uint16_t * q2 = q1 + 32; + q16[0] = q1[0] & 0x0f0f; + q16[1] = q1[8] & 0x0f0f; + q16[2] = (q1[0] >> 4) & 0x0f0f; + q16[3] = (q1[8] >> 4) & 0x0f0f; + q16[4] = q2[0] & 0x0f0f; + q16[5] = q2[8] & 0x0f0f; + q16[6] = (q2[0] >> 4) & 0x0f0f; + q16[7] = (q2[8] >> 4) & 0x0f0f; for (int l = 0; l < n; ++l) { - sum.x += y1[l+ 0] * ((ql1[l+ 0] & 0xF) + (qh[l+ 0] & (hm1 << 0) ? 16 : 0)) - + y1[l+16] * ((ql1[l+16] & 0xF) + (qh[l+16] & (hm1 << 0) ? 16 : 0)); - sum.y += y1[l+32] * ((ql1[l+ 0] >> 4) + (qh[l+ 0] & (hm1 << 1) ? 16 : 0)) - + y1[l+48] * ((ql1[l+16] >> 4) + (qh[l+16] & (hm1 << 1) ? 16 : 0)); - sum.z += y2[l+ 0] * ((ql2[l+ 0] & 0xF) + (qh[l+ 0] & (hm2 << 0) ? 16 : 0)) - + y2[l+16] * ((ql2[l+16] & 0xF) + (qh[l+16] & (hm2 << 0) ? 16 : 0)); - sum.w += y2[l+32] * ((ql2[l+ 0] >> 4) + (qh[l+ 0] & (hm2 << 1) ? 16 : 0)) - + y2[l+48] * ((ql2[l+16] >> 4) + (qh[l+16] & (hm2 << 1) ? 16 : 0)); + sum.x += y1[l+ 0] * (q4[l +0] + (qh[l+ 0] & (hm1 << 0) ? 16 : 0)) + + y1[l+16] * (q4[l +2] + (qh[l+16] & (hm1 << 0) ? 16 : 0)); + sum.y += y1[l+32] * (q4[l +4] + (qh[l+ 0] & (hm1 << 1) ? 16 : 0)) + + y1[l+48] * (q4[l +6] + (qh[l+16] & (hm1 << 1) ? 16 : 0)); + sum.z += y2[l+ 0] * (q4[l +8] + (qh[l+ 0] & (hm2 << 0) ? 16 : 0)) + + y2[l+16] * (q4[l+10] + (qh[l+16] & (hm2 << 0) ? 16 : 0)); + sum.w += y2[l+32] * (q4[l+12] + (qh[l+ 0] & (hm2 << 1) ? 16 : 0)) + + y2[l+48] * (q4[l+14] + (qh[l+16] & (hm2 << 1) ? 16 : 0)); smin += (y1[l] + y1[l+16]) * sc[2] + (y1[l+32] + y1[l+48]) * sc[3] + (y2[l] + y2[l+16]) * sc[6] + (y2[l+32] + y2[l+48]) * sc[7]; } @@ -1079,7 +1286,6 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float #endif // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -1090,7 +1296,7 @@ static __global__ void dequantize_mul_mat_vec_q5_k(const void * vx, const float } } -static __global__ void dequantize_mul_mat_vec_q6_k(const void * vx, const float * yy, float * dst, const int ncols, int nrows) { +static __global__ void dequantize_mul_mat_vec_q6_k(const void * __restrict__ vx, const float * __restrict__ yy, float * __restrict__ dst, const int ncols, int nrows) { static_assert(16%K_QUANTS_PER_ITERATION == 0, "16 must be divisible by K_QUANTS_PER_ITERATION"); @@ -1190,7 +1396,6 @@ static __global__ void dequantize_mul_mat_vec_q6_k(const void * vx, const float #endif // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -1209,8 +1414,47 @@ static __device__ void convert_f16(const void * vx, const int ib, const int iqs, v.y = x[ib + iqs + 1]; } +static __global__ void quantize_q8_1(const float * __restrict__ x, void * __restrict__ vy, const int kx, const int kx_padded) { + const int ix = blockDim.x*blockIdx.x + threadIdx.x; + + if (ix >= kx_padded) { + return; + } + + const int iy = blockDim.y*blockIdx.y + threadIdx.y; + + const int i_padded = iy*kx_padded + ix; + + block_q8_1 * y = (block_q8_1 *) vy; + + const int ib = i_padded / QK8_1; // block index + const int iqs = i_padded % QK8_1; // quant index + + const float xi = ix < kx ? x[iy*kx + ix] : 0.0f; + float amax = fabsf(xi); + float sum = xi; + +#pragma unroll + for (int mask = 16; mask > 0; mask >>= 1) { + amax = fmaxf(amax, __shfl_xor_sync(0xffffffff, amax, mask, 32)); + sum += __shfl_xor_sync(0xffffffff, sum, mask, 32); + } + + const float d = amax / 127; + const int8_t q = amax == 0.0f ? 0 : roundf(xi / d); + + y[ib].qs[iqs] = q; + + if (iqs > 0) { + return; + } + + reinterpret_cast(y[ib].ds.x) = d; + reinterpret_cast(y[ib].ds.y) = sum; +} + template -static __global__ void dequantize_block(const void * vx, float * y, const int k) { +static __global__ void dequantize_block(const void * __restrict__ vx, float * __restrict__ y, const int k) { const int i = blockDim.x*blockIdx.x + 2*threadIdx.x; if (i >= k) { @@ -1230,8 +1474,2322 @@ static __global__ void dequantize_block(const void * vx, float * y, const int k) y[iybs + iqs + y_offset] = v.y; } +// VDR = vec dot ratio, how many contiguous integers each thread processes when the vec dot kernel is called +// MMVQ = mul_mat_vec_q, MMQ = mul_mat_q + +#define VDR_Q4_0_Q8_1_MMVQ 2 +#define VDR_Q4_0_Q8_1_MMQ 4 + +template static __device__ __forceinline__ float vec_dot_q4_0_q8_1_impl( + const int * v, const int * u, const float & d4, const half2 & ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i = 0; i < vdr; ++i) { + const int vi0 = (v[i] >> 0) & 0x0F0F0F0F; + const int vi1 = (v[i] >> 4) & 0x0F0F0F0F; + + // SIMD dot product of quantized values + sumi = __dp4a(vi0, u[2*i+0], sumi); + sumi = __dp4a(vi1, u[2*i+1], sumi); + } + + const float2 ds8f = __half22float2(ds8); + + // second part effectively subtracts 8 from each quant value + return d4 * (sumi * ds8f.x - (8*vdr/QI4_0) * ds8f.y); +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q4_1_Q8_1_MMVQ 2 +#define VDR_Q4_1_Q8_1_MMQ 4 + +template static __device__ __forceinline__ float vec_dot_q4_1_q8_1_impl( + const int * v, const int * u, const half2 & dm4, const half2 & ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i = 0; i < vdr; ++i) { + const int vi0 = (v[i] >> 0) & 0x0F0F0F0F; + const int vi1 = (v[i] >> 4) & 0x0F0F0F0F; + + // SIMD dot product of quantized values + sumi = __dp4a(vi0, u[2*i+0], sumi); + sumi = __dp4a(vi1, u[2*i+1], sumi); + } + +#ifdef GGML_CUDA_F16 + const float2 tmp = __half22float2(__hmul2(dm4, ds8)); + const float d4d8 = tmp.x; + const float m4s8 = tmp.y; +#else + const float2 dm4f = __half22float2(dm4); + const float2 ds8f = __half22float2(ds8); + const float d4d8 = dm4f.x * ds8f.x; + const float m4s8 = dm4f.y * ds8f.y; +#endif // GGML_CUDA_F16 + + // scale second part of sum by QI8_1/(vdr * QR4_1) to compensate for multiple threads adding it + return sumi * d4d8 + m4s8 / (QI8_1 / (vdr * QR4_1)); +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q5_0_Q8_1_MMVQ 2 +#define VDR_Q5_0_Q8_1_MMQ 4 + +template static __device__ __forceinline__ float vec_dot_q5_0_q8_1_impl( + const int * vl, const int * vh, const int * u, const float & d5, const half2 & ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i = 0; i < vdr; ++i) { + int vi0 = (vl[i] >> 0) & 0x0F0F0F0F; // lower 4 qs bits, still need qh as 5th bits + vi0 |= (vh[i] << 4) & 0x00000010; // 0 -> 4 + vi0 |= (vh[i] << 11) & 0x00001000; // 1 -> 12 + vi0 |= (vh[i] << 18) & 0x00100000; // 2 -> 20 + vi0 |= (vh[i] << 25) & 0x10000000; // 3 -> 28 + sumi = __dp4a(vi0, u[2*i+0], sumi); // SIMD dot product of quantized values + + int vi1 = (vl[i] >> 4) & 0x0F0F0F0F; // upper 4 qs bits, still need qh as 5th bits + vi1 |= (vh[i] >> 12) & 0x00000010; // 16 -> 4 + vi1 |= (vh[i] >> 5) & 0x00001000; // 17 -> 12 + vi1 |= (vh[i] << 2) & 0x00100000; // 18 -> 20 + vi1 |= (vh[i] << 9) & 0x10000000; // 19 -> 28 + sumi = __dp4a(vi1, u[2*i+1], sumi); // SIMD dot product of quantized values + } + + const float2 ds8f = __half22float2(ds8); + + // second part effectively subtracts 16 from each quant value + return d5 * (sumi * ds8f.x - (16*vdr/QI5_0) * ds8f.y); +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q5_1_Q8_1_MMVQ 2 +#define VDR_Q5_1_Q8_1_MMQ 4 + +template static __device__ __forceinline__ float vec_dot_q5_1_q8_1_impl( + const int * vl, const int * vh, const int * u, const half2 & dm5, const half2 & ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i = 0; i < vdr; ++i) { + int vi0 = (vl[i] >> 0) & 0x0F0F0F0F; // lower 4 qs bits, still need qh as 5th bits + vi0 |= (vh[i] << 4) & 0x00000010; // 0 -> 4 + vi0 |= (vh[i] << 11) & 0x00001000; // 1 -> 12 + vi0 |= (vh[i] << 18) & 0x00100000; // 2 -> 20 + vi0 |= (vh[i] << 25) & 0x10000000; // 3 -> 28 + sumi = __dp4a(vi0, u[2*i+0], sumi); // SIMD dot product of quantized values + + int vi1 = (vl[i] >> 4) & 0x0F0F0F0F; // upper 4 qs bits, still need qh as 5th bits + vi1 |= (vh[i] >> 12) & 0x00000010; // 16 -> 4 + vi1 |= (vh[i] >> 5) & 0x00001000; // 17 -> 12 + vi1 |= (vh[i] << 2) & 0x00100000; // 18 -> 20 + vi1 |= (vh[i] << 9) & 0x10000000; // 19 -> 28 + sumi = __dp4a(vi1, u[2*i+1], sumi); // SIMD dot product of quantized values + } + +#ifdef GGML_CUDA_F16 + const float2 tmp = __half22float2(__hmul2(dm5, ds8)); + const float d5d8 = tmp.x; + const float m5s8 = tmp.y; +#else + const float2 dm5f = __half22float2(dm5); + const float2 ds8f = __half22float2(ds8); + const float d5d8 = dm5f.x * ds8f.x; + const float m5s8 = dm5f.y * ds8f.y; +#endif // GGML_CUDA_F16 + + // scale second part of sum by QI5_1 / vdr to compensate for multiple threads adding it + return sumi*d5d8 + m5s8 / (QI5_1 / vdr); + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q8_0_Q8_1_MMVQ 2 +#define VDR_Q8_0_Q8_1_MMQ 8 + +template static __device__ __forceinline__ float vec_dot_q8_0_q8_1_impl( + const int * v, const int * u, const float & d8_0, const float & d8_1) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i = 0; i < vdr; ++i) { + // SIMD dot product of quantized values + sumi = __dp4a(v[i], u[i], sumi); + } + + return d8_0*d8_1 * sumi; +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +template static __device__ __forceinline__ float vec_dot_q8_1_q8_1_impl( + const int * v, const int * u, const half2 & dm8, const half2 & ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i = 0; i < vdr; ++i) { + // SIMD dot product of quantized values + sumi = __dp4a(v[i], u[i], sumi); + } + +#ifdef GGML_CUDA_F16 + const float2 tmp = __half22float2(__hmul2(dm8, ds8)); + const float d8d8 = tmp.x; + const float m8s8 = tmp.y; +#else + const float2 dm8f = __half22float2(dm8); + const float2 ds8f = __half22float2(ds8); + const float d8d8 = dm8f.x * ds8f.x; + const float m8s8 = dm8f.y * ds8f.y; +#endif // GGML_CUDA_F16 + + // scale second part of sum by QI8_1/ vdr to compensate for multiple threads adding it + return sumi*d8d8 + m8s8 / (QI8_1 / vdr); +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q2_K_Q8_1_MMVQ 1 +#define VDR_Q2_K_Q8_1_MMQ 2 + +// contiguous v/x values +static __device__ __forceinline__ float vec_dot_q2_K_q8_1_impl_mmvq( + const int & v, const int * __restrict__ u, const uint8_t * __restrict__ scales, + const half2 & dm2, const float * __restrict__ d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf_d = 0.0f; + float sumf_m = 0.0f; + +#pragma unroll + for (int i = 0; i < QR2_K; ++i) { + const int sc = scales[2*i]; + + const int vi = (v >> (2*i)) & 0x03030303; + + sumf_d += d8[i] * (__dp4a(vi, u[i], 0) * (sc & 0xF)); // SIMD dot product + + // fill int with 4x m + int m = sc >> 4; + m |= m << 8; + m |= m << 16; + sumf_m += d8[i] * __dp4a(m, u[i], 0); // multiply constant q2_K part with sum of q8_1 values + } + + const float2 dm2f = __half22float2(dm2); + + return dm2f.x*sumf_d - dm2f.y*sumf_m; +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +// contiguous u/y values +static __device__ __forceinline__ float vec_dot_q2_K_q8_1_impl_mmq( + const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ scales, + const half2 & dm2, const float & d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi_d = 0; + int sumi_m = 0; + +#pragma unroll + for (int i0 = 0; i0 < QI8_1; i0 += QI8_1/2) { + int sumi_d_sc = 0; + + const int sc = scales[i0 / (QI8_1/2)]; + + // fill int with 4x m + int m = sc >> 4; + m |= m << 8; + m |= m << 16; + +#pragma unroll + for (int i = i0; i < i0 + QI8_1/2; ++i) { + sumi_d_sc = __dp4a(v[i], u[i], sumi_d_sc); // SIMD dot product + sumi_m = __dp4a(m, u[i], sumi_m); // multiply sum of q8_1 values with m + } + + sumi_d += sumi_d_sc * (sc & 0xF); + } + + const float2 dm2f = __half22float2(dm2); + + return d8 * (dm2f.x*sumi_d - dm2f.y*sumi_m); +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q3_K_Q8_1_MMVQ 1 +#define VDR_Q3_K_Q8_1_MMQ 2 + +// contiguous v/x values +static __device__ __forceinline__ float vec_dot_q3_K_q8_1_impl_mmvq( + const int & vl, const int & vh, const int * __restrict__ u, const uint8_t * __restrict__ scales, + const int & scale_offset, const float & d3, const float * __restrict__ d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf = 0.0f; + +#pragma unroll + for (int i = 0; i < QR3_K; ++i) { + const int isc = scale_offset + 2*i; + + const int isc_low = isc % (QK_K/32); + const int sc_shift_low = 4 * (isc / (QK_K/32)); + const int sc_low = (scales[isc_low] >> sc_shift_low) & 0xF; + + const int isc_high = isc % (QK_K/64); + const int sc_shift_high = 2 * (isc / (QK_K/64)); + const int sc_high = ((scales[(QK_K/32) + isc_high] >> sc_shift_high) & 3) << 4; + + const int sc = (sc_low | sc_high) - 32; + + const int vil = (vl >> (2*i)) & 0x03030303; + + const int vih = ((vh >> i) << 2) & 0x04040404; + + const int vi = __vsubss4(vil, vih); + + sumf += d8[i] * (__dp4a(vi, u[i], 0) * sc); // SIMD dot product + } + + return d3 * sumf; +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +// contiguous u/y values +static __device__ __forceinline__ float vec_dot_q3_K_q8_1_impl_mmq( + const int * __restrict__ v, const int * __restrict__ u, const int8_t * __restrict__ scales, + const float & d3, const float & d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + int sumi = 0; + +#pragma unroll + for (int i0 = 0; i0 < QR3_K*VDR_Q3_K_Q8_1_MMQ; i0 += QI8_1/2) { + int sumi_sc = 0; + + for (int i = i0; i < i0 + QI8_1/2; ++i) { + sumi_sc = __dp4a(v[i], u[i], sumi_sc); // SIMD dot product + } + + sumi += sumi_sc * scales[i0 / (QI8_1/2)]; + } + + return d3*d8 * sumi; +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q4_K_Q8_1_MMVQ 2 +#define VDR_Q4_K_Q8_1_MMQ 8 + +// contiguous v/x values +static __device__ __forceinline__ float vec_dot_q4_K_q8_1_impl_vmmq( + const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ sc, + const uint8_t * __restrict__ m, const half2 & dm4, const float * __restrict__ d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf_d = 0.0f; + float sumf_m = 0.0f; + +#pragma unroll + for (int i = 0; i < QR4_K; ++i) { + const int v0i = (v[0] >> (4*i)) & 0x0F0F0F0F; + const int v1i = (v[1] >> (4*i)) & 0x0F0F0F0F; + + const int dot1 = __dp4a(v1i, u[2*i+1], __dp4a(v0i, u[2*i+0], 0)); // SIMD dot product + const int dot2 = __dp4a(0x01010101, u[2*i+1], __dp4a(0x01010101, u[2*i+0], 0)); // sum of u + + sumf_d += d8[i] * (dot1 * sc[i]); + sumf_m += d8[i] * (dot2 * m[i]); // multiply constant part of q4_K with sum of q8_1 values + } + + const float2 dm4f = __half22float2(dm4); + + return dm4f.x*sumf_d - dm4f.y*sumf_m; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +// contiguous u/y values +static __device__ __forceinline__ float vec_dot_q4_K_q8_1_impl_mmq( + const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ sc, + const uint8_t * __restrict__ m, const half2 & dm4, const half2 * __restrict__ ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf_d = 0.0f; + float sumf_m = 0.0f; + +#pragma unroll + for (int i = 0; i < QR4_K*VDR_Q4_K_Q8_1_MMQ/QI8_1; ++i) { + int sumi_d = 0; + +#pragma unroll + for (int j = 0; j < QI8_1; ++j) { + sumi_d = __dp4a((v[j] >> (4*i)) & 0x0F0F0F0F, u[i*QI8_1 + j], sumi_d); // SIMD dot product + } + + const float2 ds8f = __half22float2(ds8[i]); + + sumf_d += ds8f.x * (sc[i] * sumi_d); + sumf_m += ds8f.y * m[i]; // sum of q8_1 block * q4_K min val + } + + const float2 dm4f = __half22float2(dm4); + + return dm4f.x*sumf_d - dm4f.y*sumf_m; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q5_K_Q8_1_MMVQ 2 +#define VDR_Q5_K_Q8_1_MMQ 8 + +// contiguous v/x values +static __device__ __forceinline__ float vec_dot_q5_K_q8_1_impl_vmmq( + const int * __restrict__ vl, const int * __restrict__ vh, const int * __restrict__ u, const uint8_t * __restrict__ sc, + const uint8_t * __restrict__ m, const half2 & dm5, const float * __restrict__ d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf_d = 0.0f; + float sumf_m = 0.0f; + +#pragma unroll + for (int i = 0; i < QR5_K; ++i) { + const int vl0i = (vl[0] >> (4*i)) & 0x0F0F0F0F; + const int vl1i = (vl[1] >> (4*i)) & 0x0F0F0F0F; + + const int vh0i = ((vh[0] >> i) << 4) & 0x10101010; + const int vh1i = ((vh[1] >> i) << 4) & 0x10101010; + + const int v0i = vl0i | vh0i; + const int v1i = vl1i | vh1i; + + const int dot1 = __dp4a(v0i, u[2*i+0], __dp4a(v1i, u[2*i+1], 0)); // SIMD dot product + const int dot2 = __dp4a(0x01010101, u[2*i+0], __dp4a(0x01010101, u[2*i+1], 0)); // sum of u + + sumf_d += d8[i] * (dot1 * sc[i]); + sumf_m += d8[i] * (dot2 * m[i]); + + } + + const float2 dm5f = __half22float2(dm5); + + return dm5f.x*sumf_d - dm5f.y*sumf_m; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +// contiguous u/y values +static __device__ __forceinline__ float vec_dot_q5_K_q8_1_impl_mmq( + const int * __restrict__ v, const int * __restrict__ u, const uint8_t * __restrict__ sc, + const uint8_t * __restrict__ m, const half2 & dm4, const half2 * __restrict__ ds8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf_d = 0.0f; + float sumf_m = 0.0f; + +#pragma unroll + for (int i = 0; i < QR5_K*VDR_Q5_K_Q8_1_MMQ/QI8_1; ++i) { + int sumi_d = 0; + +#pragma unroll + for (int j = 0; j < QI8_1; ++j) { + sumi_d = __dp4a(v[i*QI8_1 + j], u[i*QI8_1 + j], sumi_d); // SIMD dot product + } + + const float2 ds8f = __half22float2(ds8[i]); + + sumf_d += ds8f.x * (sc[i] * sumi_d); + sumf_m += ds8f.y * m[i]; // sum of q8_1 block * q4_K min val + } + + const float2 dm4f = __half22float2(dm4); + + return dm4f.x*sumf_d - dm4f.y*sumf_m; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +#define VDR_Q6_K_Q8_1_MMVQ 1 +#define VDR_Q6_K_Q8_1_MMQ 8 + +// contiguous v/x values +static __device__ __forceinline__ float vec_dot_q6_K_q8_1_impl_mmvq( + const int & vl, const int & vh, const int * __restrict__ u, const int8_t * __restrict__ scales, + const float & d, const float * __restrict__ d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf = 0.0f; + +#pragma unroll + for (int i = 0; i < QR6_K; ++i) { + const int sc = scales[4*i]; + + const int vil = (vl >> (4*i)) & 0x0F0F0F0F; + + const int vih = ((vh >> (4*i)) << 4) & 0x30303030; + + const int vi = __vsubss4((vil | vih), 0x20202020); // vi = (vil | vih) - 32 + + sumf += d8[i] * (__dp4a(vi, u[i], 0) * sc); // SIMD dot product + } + + return d*sumf; +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +// contiguous u/y values +static __device__ __forceinline__ float vec_dot_q6_K_q8_1_impl_mmq( + const int * __restrict__ v, const int * __restrict__ u, const int8_t * __restrict__ sc, + const float & d6, const float * __restrict__ d8) { + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + float sumf_d = 0.0f; + +#pragma unroll + for (int i0 = 0; i0 < VDR_Q6_K_Q8_1_MMQ; i0 += 4) { + int2 sumi_d = {0, 0}; // 2 q6_K scales per q8_1 scale + +#pragma unroll + for (int i = i0; i < i0 + 2; ++i) { + sumi_d.x = __dp4a(v[2*i+0], u[2*i+0], sumi_d.x); // SIMD dot product + sumi_d.x = __dp4a(v[2*i+1], u[2*i+1], sumi_d.x); // SIMD dot product + + sumi_d.y = __dp4a(v[2*i+4], u[2*i+4], sumi_d.y); // SIMD dot product + sumi_d.y = __dp4a(v[2*i+5], u[2*i+5], sumi_d.y); // SIMD dot product + } + + sumf_d += d8[i0/4] * (sc[i0/2+0]*sumi_d.x + sc[i0/2+1]*sumi_d.y); + } + + return d6 * sumf_d; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A +} + +static __device__ __forceinline__ float vec_dot_q4_0_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q4_0 * bq4_0 = (const block_q4_0 *) vbq; + + int v[VDR_Q4_0_Q8_1_MMVQ]; + int u[2*VDR_Q4_0_Q8_1_MMVQ]; + +#pragma unroll + for (int i = 0; i < VDR_Q4_0_Q8_1_MMVQ; ++i) { + v[i] = get_int_from_uint8(bq4_0->qs, iqs + i); + u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i); + u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI4_0); + } + + return vec_dot_q4_0_q8_1_impl(v, u, bq4_0->d, bq8_1->ds); +} + +template static __device__ __forceinline__ void allocate_tiles_q4_0(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_qs[mmq_y * (WARP_SIZE) + mmq_y]; + __shared__ float tile_x_d[mmq_y * (WARP_SIZE/QI4_0) + mmq_y/QI4_0]; + + *x_ql = tile_x_qs; + *x_dm = (half2 *) tile_x_d; +} + +template static __device__ __forceinline__ void load_tiles_q4_0( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI4_0; + const int kqsx = k % QI4_0; + + const block_q4_0 * bx0 = (block_q4_0 *) vx; + + float * x_dmf = (float *) x_dm; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_0 * bxi = bx0 + i*blocks_per_row + kbx; + + x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8(bxi->qs, kqsx); + // x_dmf[i * (WARP_SIZE/QI4_0) + i / QI4_0 + kbx] = bxi->d; + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI4_0; + const int kbxd = k % blocks_per_tile_x_row; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI4_0) { + int i = i0 + i_offset * QI4_0 + k / blocks_per_tile_x_row; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_0 * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dmf[i * (WARP_SIZE/QI4_0) + i / QI4_0 + kbxd] = bxi->d; + } +} + +static __device__ __forceinline__ float vec_dot_q4_0_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2)); + const float * x_dmf = (float *) x_dm; + + int u[2*VDR_Q4_0_Q8_1_MMQ]; + +#pragma unroll + for (int l = 0; l < VDR_Q4_0_Q8_1_MMQ; ++l) { + u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l) % WARP_SIZE]; + u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI4_0) % WARP_SIZE]; + } + + return vec_dot_q4_0_q8_1_impl + (&x_ql[i * (WARP_SIZE + 1) + k], u, x_dmf[i * (WARP_SIZE/QI4_0) + i/QI4_0 + k/QI4_0], + y_ds[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]); +} + +static __device__ __forceinline__ float vec_dot_q4_1_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q4_1 * bq4_1 = (const block_q4_1 *) vbq; + + int v[VDR_Q4_1_Q8_1_MMVQ]; + int u[2*VDR_Q4_1_Q8_1_MMVQ]; + +#pragma unroll + for (int i = 0; i < VDR_Q4_1_Q8_1_MMVQ; ++i) { + v[i] = get_int_from_uint8_aligned(bq4_1->qs, iqs + i); + u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i); + u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI4_1); + } + + return vec_dot_q4_1_q8_1_impl(v, u, bq4_1->dm, bq8_1->ds); +} + +template static __device__ __forceinline__ void allocate_tiles_q4_1(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_qs[mmq_y * (WARP_SIZE) + + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI4_1) + mmq_y/QI4_1]; + + *x_ql = tile_x_qs; + *x_dm = tile_x_dm; +} + +template static __device__ __forceinline__ void load_tiles_q4_1( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI4_1; + const int kqsx = k % QI4_1; + + const block_q4_1 * bx0 = (block_q4_1 *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_1 * bxi = bx0 + i*blocks_per_row + kbx; + + x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8_aligned(bxi->qs, kqsx); + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI4_1; + const int kbxd = k % blocks_per_tile_x_row; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI4_1) { + int i = i0 + i_offset * QI4_1 + k / blocks_per_tile_x_row; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_1 * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dm[i * (WARP_SIZE/QI4_1) + i / QI4_1 + kbxd] = bxi->dm; + } +} + +static __device__ __forceinline__ float vec_dot_q4_1_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2)); + + int u[2*VDR_Q4_1_Q8_1_MMQ]; + +#pragma unroll + for (int l = 0; l < VDR_Q4_1_Q8_1_MMQ; ++l) { + u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l) % WARP_SIZE]; + u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI4_1) % WARP_SIZE]; + } + + return vec_dot_q4_1_q8_1_impl + (&x_ql[i * (WARP_SIZE + 1) + k], u, x_dm[i * (WARP_SIZE/QI4_1) + i/QI4_1 + k/QI4_1], + y_ds[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]); +} + +static __device__ __forceinline__ float vec_dot_q5_0_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q5_0 * bq5_0 = (const block_q5_0 *) vbq; + + int vl[VDR_Q5_0_Q8_1_MMVQ]; + int vh[VDR_Q5_0_Q8_1_MMVQ]; + int u[2*VDR_Q5_0_Q8_1_MMVQ]; + +#pragma unroll + for (int i = 0; i < VDR_Q5_0_Q8_1_MMVQ; ++i) { + vl[i] = get_int_from_uint8(bq5_0->qs, iqs + i); + vh[i] = get_int_from_uint8(bq5_0->qh, 0) >> (4 * (iqs + i)); + u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i); + u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI5_0); + } + + return vec_dot_q5_0_q8_1_impl(vl, vh, u, bq5_0->d, bq8_1->ds); +} + +template static __device__ __forceinline__ void allocate_tiles_q5_0(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (2*WARP_SIZE) + mmq_y]; + __shared__ float tile_x_d[mmq_y * (WARP_SIZE/QI5_0) + mmq_y/QI5_0]; + + *x_ql = tile_x_ql; + *x_dm = (half2 *) tile_x_d; +} + +template static __device__ __forceinline__ void load_tiles_q5_0( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI5_0; + const int kqsx = k % QI5_0; + + const block_q5_0 * bx0 = (block_q5_0 *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_0 * bxi = bx0 + i*blocks_per_row + kbx; + + const int ql = get_int_from_uint8(bxi->qs, kqsx); + const int qh = get_int_from_uint8(bxi->qh, 0) >> (4 * (k % QI5_0)); + + int qs0 = (ql >> 0) & 0x0F0F0F0F; + qs0 |= (qh << 4) & 0x00000010; // 0 -> 4 + qs0 |= (qh << 11) & 0x00001000; // 1 -> 12 + qs0 |= (qh << 18) & 0x00100000; // 2 -> 20 + qs0 |= (qh << 25) & 0x10000000; // 3 -> 28 + qs0 = __vsubss4(qs0, 0x10101010); // subtract 16 + + x_ql[i * (2*WARP_SIZE + 1) + 2*k+0] = qs0; + + int qs1 = (ql >> 4) & 0x0F0F0F0F; + qs1 |= (qh >> 12) & 0x00000010; // 16 -> 4 + qs1 |= (qh >> 5) & 0x00001000; // 17 -> 12 + qs1 |= (qh << 2) & 0x00100000; // 18 -> 20 + qs1 |= (qh << 9) & 0x10000000; // 19 -> 28 + qs1 = __vsubss4(qs1, 0x10101010); // subtract 16 + + x_ql[i * (2*WARP_SIZE + 1) + 2*k+1] = qs1; + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI5_0; + const int kbxd = k % blocks_per_tile_x_row; + float * x_dmf = (float *) x_dm; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI5_0) { + int i = i0 + i_offset * QI5_0 + k / blocks_per_tile_x_row; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_0 * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dmf[i * (WARP_SIZE/QI5_0) + i / QI5_0 + kbxd] = bxi->d; + } +} + +static __device__ __forceinline__ float vec_dot_q5_0_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2)); + const int index_bx = i * (WARP_SIZE/QI5_0) + i/QI5_0 + k/QI5_0; + const float * x_dmf = (const float *) x_dm; + const float * y_df = (const float *) y_ds; + + int u[2*VDR_Q5_0_Q8_1_MMQ]; + +#pragma unroll + for (int l = 0; l < VDR_Q5_0_Q8_1_MMQ; ++l) { + u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l) % WARP_SIZE]; + u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI5_0) % WARP_SIZE]; + } + + return vec_dot_q8_0_q8_1_impl + (&x_ql[i * (2*WARP_SIZE + 1) + 2 * k], u, x_dmf[index_bx], y_df[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]); +} + +static __device__ __forceinline__ float vec_dot_q5_1_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q5_1 * bq5_1 = (const block_q5_1 *) vbq; + + int vl[VDR_Q5_1_Q8_1_MMVQ]; + int vh[VDR_Q5_1_Q8_1_MMVQ]; + int u[2*VDR_Q5_1_Q8_1_MMVQ]; + +#pragma unroll + for (int i = 0; i < VDR_Q5_1_Q8_1_MMVQ; ++i) { + vl[i] = get_int_from_uint8_aligned(bq5_1->qs, iqs + i); + vh[i] = get_int_from_uint8_aligned(bq5_1->qh, 0) >> (4 * (iqs + i)); + u[2*i+0] = get_int_from_int8_aligned(bq8_1->qs, iqs + i); + u[2*i+1] = get_int_from_int8_aligned(bq8_1->qs, iqs + i + QI5_1); + } + + return vec_dot_q5_1_q8_1_impl(vl, vh, u, bq5_1->dm, bq8_1->ds); +} + +template static __device__ __forceinline__ void allocate_tiles_q5_1(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (2*WARP_SIZE) + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI5_1) + mmq_y/QI5_1]; + + *x_ql = tile_x_ql; + *x_dm = tile_x_dm; +} + +template static __device__ __forceinline__ void load_tiles_q5_1( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI5_1; + const int kqsx = k % QI5_1; + + const block_q5_1 * bx0 = (block_q5_1 *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_1 * bxi = bx0 + i*blocks_per_row + kbx; + + const int ql = get_int_from_uint8_aligned(bxi->qs, kqsx); + const int qh = get_int_from_uint8_aligned(bxi->qh, 0) >> (4 * (k % QI5_1)); + + int qs0 = (ql >> 0) & 0x0F0F0F0F; + qs0 |= (qh << 4) & 0x00000010; // 0 -> 4 + qs0 |= (qh << 11) & 0x00001000; // 1 -> 12 + qs0 |= (qh << 18) & 0x00100000; // 2 -> 20 + qs0 |= (qh << 25) & 0x10000000; // 3 -> 28 + + x_ql[i * (2*WARP_SIZE + 1) + 2*k+0] = qs0; + + int qs1 = (ql >> 4) & 0x0F0F0F0F; + qs1 |= (qh >> 12) & 0x00000010; // 16 -> 4 + qs1 |= (qh >> 5) & 0x00001000; // 17 -> 12 + qs1 |= (qh << 2) & 0x00100000; // 18 -> 20 + qs1 |= (qh << 9) & 0x10000000; // 19 -> 28 + + x_ql[i * (2*WARP_SIZE + 1) + 2*k+1] = qs1; + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI5_1; + const int kbxd = k % blocks_per_tile_x_row; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI5_1) { + int i = i0 + i_offset * QI5_1 + k / blocks_per_tile_x_row; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_1 * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dm[i * (WARP_SIZE/QI5_1) + i / QI5_1 + kbxd] = bxi->dm; + } +} + +static __device__ __forceinline__ float vec_dot_q5_1_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const int kyqs = k % (QI8_1/2) + QI8_1 * (k / (QI8_1/2)); + const int index_bx = i * (WARP_SIZE/QI5_1) + + i/QI5_1 + k/QI5_1; + + int u[2*VDR_Q5_1_Q8_1_MMQ]; + +#pragma unroll + for (int l = 0; l < VDR_Q5_1_Q8_1_MMQ; ++l) { + u[2*l+0] = y_qs[j * WARP_SIZE + (kyqs + l) % WARP_SIZE]; + u[2*l+1] = y_qs[j * WARP_SIZE + (kyqs + l + QI5_1) % WARP_SIZE]; + } + + return vec_dot_q8_1_q8_1_impl + (&x_ql[i * (2*WARP_SIZE + 1) + 2 * k], u, x_dm[index_bx], y_ds[j * (WARP_SIZE/QI8_1) + (2*k/QI8_1) % (WARP_SIZE/QI8_1)]); +} + +static __device__ __forceinline__ float vec_dot_q8_0_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q8_0 * bq8_0 = (const block_q8_0 *) vbq; + + int v[VDR_Q8_0_Q8_1_MMVQ]; + int u[VDR_Q8_0_Q8_1_MMVQ]; + +#pragma unroll + for (int i = 0; i < VDR_Q8_0_Q8_1_MMVQ; ++i) { + v[i] = get_int_from_int8(bq8_0->qs, iqs + i); + u[i] = get_int_from_int8_aligned(bq8_1->qs, iqs + i); + } + + return vec_dot_q8_0_q8_1_impl(v, u, bq8_0->d, __low2half(bq8_1->ds)); +} + +template static __device__ __forceinline__ void allocate_tiles_q8_0(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_qs[mmq_y * (WARP_SIZE) + mmq_y]; + __shared__ float tile_x_d[mmq_y * (WARP_SIZE/QI8_0) + mmq_y/QI8_0]; + + *x_ql = tile_x_qs; + *x_dm = (half2 *) tile_x_d; +} + +template static __device__ __forceinline__ void load_tiles_q8_0( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI8_0; + const int kqsx = k % QI8_0; + float * x_dmf = (float *) x_dm; + + const block_q8_0 * bx0 = (block_q8_0 *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q8_0 * bxi = bx0 + i*blocks_per_row + kbx; + + x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_int8(bxi->qs, kqsx); + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI8_0; + const int kbxd = k % blocks_per_tile_x_row; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI8_0) { + int i = i0 + i_offset * QI8_0 + k / blocks_per_tile_x_row; + + if (need_check) { + i = min(i, i_max); + } + + const block_q8_0 * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dmf[i * (WARP_SIZE/QI8_0) + i / QI8_0 + kbxd] = bxi->d; + } +} + +static __device__ __forceinline__ float vec_dot_q8_0_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const float * x_dmf = (const float *) x_dm; + const float * y_df = (const float *) y_ds; + + return vec_dot_q8_0_q8_1_impl + (&x_ql[i * (WARP_SIZE + 1) + k], &y_qs[j * WARP_SIZE + k], x_dmf[i * (WARP_SIZE/QI8_0) + i/QI8_0 + k/QI8_0], + y_df[j * (WARP_SIZE/QI8_1) + k/QI8_1]); +} + +static __device__ __forceinline__ float vec_dot_q2_K_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q2_K * bq2_K = (const block_q2_K *) vbq; + + const int bq8_offset = QR2_K * (iqs / QI8_1); + const int scale_offset = iqs - iqs % QI8_1 + (iqs % QI8_1) / (QI8_1/2); + + const uint8_t * scales = bq2_K->scales + scale_offset; + + const int v = get_int_from_uint8_aligned(bq2_K->qs, iqs); + int u[QR2_K]; + float d8[QR2_K]; + +#pragma unroll + for (int i = 0; i < QR2_K; ++ i) { + u[i] = get_int_from_int8_aligned(bq8_1[bq8_offset + i].qs, iqs % QI8_1); + d8[i] = __low2half(bq8_1[bq8_offset + i].ds); + } + + return vec_dot_q2_K_q8_1_impl_mmvq(v, u, scales, bq2_K->dm, d8); +} + +template static __device__ __forceinline__ void allocate_tiles_q2_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (WARP_SIZE) + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI2_K) + mmq_y/QI2_K]; + __shared__ int tile_x_sc[mmq_y * (WARP_SIZE/4) + mmq_y/4]; + + *x_ql = tile_x_ql; + *x_dm = tile_x_dm; + *x_sc = tile_x_sc; +} + +template static __device__ __forceinline__ void load_tiles_q2_K( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI2_K; + const int kqsx = k % QI2_K; + + const block_q2_K * bx0 = (block_q2_K *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q2_K * bxi = bx0 + i*blocks_per_row + kbx; + + x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8_aligned(bxi->qs, kqsx); + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI2_K; + const int kbxd = k % blocks_per_tile_x_row; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI2_K) { + int i = (i0 + i_offset * QI2_K + k / blocks_per_tile_x_row) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q2_K * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dm[i * (WARP_SIZE/QI2_K) + i / QI2_K + kbxd] = bxi->dm; + } + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 4) { + int i = i0 + i_offset * 4 + k / (WARP_SIZE/4); + + if (need_check) { + i = min(i, i_max); + } + + const block_q2_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/4)) / (QI2_K/4); + + x_sc[i * (WARP_SIZE/4) + i / 4 + k % (WARP_SIZE/4)] = get_int_from_uint8_aligned(bxi->scales, k % (QI2_K/4)); + } +} + +static __device__ __forceinline__ float vec_dot_q2_K_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const int kbx = k / QI2_K; + const int ky = (k % QI2_K) * QR2_K; + const float * y_df = (const float *) y_ds; + + int v[QR2_K*VDR_Q2_K_Q8_1_MMQ]; + + const int kqsx = i * (WARP_SIZE + 1) + kbx*QI2_K + (QI2_K/2) * (ky/(2*QI2_K)) + ky % (QI2_K/2); + const int shift = 2 * ((ky % (2*QI2_K)) / (QI2_K/2)); + +#pragma unroll + for (int l = 0; l < QR2_K*VDR_Q2_K_Q8_1_MMQ; ++l) { + v[l] = (x_ql[kqsx + l] >> shift) & 0x03030303; + } + + const uint8_t * scales = ((const uint8_t *) &x_sc[i * (WARP_SIZE/4) + i/4 + kbx*4]) + ky/4; + + const int index_y = j * WARP_SIZE + (QR2_K*k) % WARP_SIZE; + return vec_dot_q2_K_q8_1_impl_mmq(v, &y_qs[index_y], scales, x_dm[i * (WARP_SIZE/QI2_K) + i/QI2_K + kbx], y_df[index_y/QI8_1]); +} + +static __device__ __forceinline__ float vec_dot_q3_K_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q3_K * bq3_K = (const block_q3_K *) vbq; + + const int bq8_offset = QR3_K * (iqs / (QI3_K/2)); + const int scale_offset = iqs - iqs % QI8_1 + (iqs % QI8_1) / (QI8_1/2); + + const float d = bq3_K->d; + + const int vl = get_int_from_uint8(bq3_K->qs, iqs); + + // invert the mask with ~ so that a 0/1 results in 4/0 being subtracted + const int vh = ~get_int_from_uint8(bq3_K->hmask, iqs % (QI3_K/2)) >> bq8_offset; + + int u[QR3_K]; + float d8[QR3_K]; + +#pragma unroll + for (int i = 0; i < QR3_K; ++i) { + u[i] = get_int_from_int8_aligned(bq8_1[bq8_offset + i].qs, iqs % QI8_1); + d8[i] = __low2half(bq8_1[bq8_offset + i].ds); + } + + return vec_dot_q3_K_q8_1_impl_mmvq(vl, vh, u, bq3_K->scales, scale_offset, d, d8); +} + +template static __device__ __forceinline__ void allocate_tiles_q3_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (WARP_SIZE) + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI3_K) + mmq_y/QI3_K]; + __shared__ int tile_x_qh[mmq_y * (WARP_SIZE/2) + mmq_y/2]; + __shared__ int tile_x_sc[mmq_y * (WARP_SIZE/4) + mmq_y/4]; + + *x_ql = tile_x_ql; + *x_dm = tile_x_dm; + *x_qh = tile_x_qh; + *x_sc = tile_x_sc; +} + +template static __device__ __forceinline__ void load_tiles_q3_K( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI3_K; + const int kqsx = k % QI3_K; + + const block_q3_K * bx0 = (block_q3_K *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q3_K * bxi = bx0 + i*blocks_per_row + kbx; + + x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8(bxi->qs, kqsx); + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI3_K; + const int kbxd = k % blocks_per_tile_x_row; + float * x_dmf = (float *) x_dm; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI3_K) { + int i = (i0 + i_offset * QI3_K + k / blocks_per_tile_x_row) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q3_K * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dmf[i * (WARP_SIZE/QI3_K) + i / QI3_K + kbxd] = bxi->d; + } + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 2) { + int i = i0 + i_offset * 2 + k / (WARP_SIZE/2); + + if (need_check) { + i = min(i, i_max); + } + + const block_q3_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/2)) / (QI3_K/2); + + // invert the mask with ~ so that a 0/1 results in 4/0 being subtracted + x_qh[i * (WARP_SIZE/2) + i / 2 + k % (WARP_SIZE/2)] = ~get_int_from_uint8(bxi->hmask, k % (QI3_K/2)); + } + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 4) { + int i = i0 + i_offset * 4 + k / (WARP_SIZE/4); + + if (need_check) { + i = min(i, i_max); + } + + const block_q3_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/4)) / (QI3_K/4); + + const int ksc = k % (QI3_K/4); + + const int ksc_low = ksc % (QI3_K/8); + const int shift_low = 4 * (ksc / (QI3_K/8)); + const int sc_low = (get_int_from_uint8(bxi->scales, ksc_low) >> shift_low) & 0x0F0F0F0F; + + const int ksc_high = QI3_K/8; + const int shift_high = 2 * ksc; + const int sc_high = ((get_int_from_uint8(bxi->scales, ksc_high) >> shift_high) << 4) & 0x30303030; + + const int sc = __vsubss4(sc_low | sc_high, 0x20202020); + + x_sc[i * (WARP_SIZE/4) + i / 4 + k % (WARP_SIZE/4)] = sc; + } +} + +static __device__ __forceinline__ float vec_dot_q3_K_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const int kbx = k / QI3_K; + const int ky = (k % QI3_K) * QR3_K; + const float * x_dmf = (const float *) x_dm; + const float * y_df = (const float *) y_ds; + + const int8_t * scales = ((int8_t *) (x_sc + i * (WARP_SIZE/4) + i/4 + kbx*4)) + ky/4; + + int v[QR3_K*VDR_Q3_K_Q8_1_MMQ]; + +#pragma unroll + for (int l = 0; l < QR3_K*VDR_Q3_K_Q8_1_MMQ; ++l) { + const int kqsx = i * (WARP_SIZE + 1) + kbx*QI3_K + (QI3_K/2) * (ky/(2*QI3_K)) + ky % (QI3_K/2); + const int shift = 2 * ((ky % 32) / 8); + const int vll = (x_ql[kqsx + l] >> shift) & 0x03030303; + + const int vh = x_qh[i * (WARP_SIZE/2) + i/2 + kbx * (QI3_K/2) + (ky+l)%8] >> ((ky+l) / 8); + const int vlh = (vh << 2) & 0x04040404; + + v[l] = __vsubss4(vll, vlh); + } + + const int index_y = j * WARP_SIZE + (k*QR3_K) % WARP_SIZE; + return vec_dot_q3_K_q8_1_impl_mmq(v, &y_qs[index_y], scales, x_dmf[i * (WARP_SIZE/QI3_K) + i/QI3_K + kbx], y_df[index_y/QI8_1]); +} + +static __device__ __forceinline__ float vec_dot_q4_K_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + +#ifndef GGML_QKK_64 + const block_q4_K * bq4_K = (const block_q4_K *) vbq; + + int v[2]; + int u[2*QR4_K]; + float d8[QR4_K]; + + // iqs is in 0,2..30. bq8_offset = iqs/4 -> bq8_offset = 0, 2, 4, 6 + const int bq8_offset = QR4_K * ((iqs/2) / (QI8_1/2)); + + // iqs = 0....3 -> bq8_offset = 0, want q4_offset = 0, 4, 8, 12 + // iqs = 4....7 -> bq8_offset = 2, want q4_offset = 32, 36, 40, 44 + // iqs = 8...11 -> bq8_offset = 4, want q4_offset = 64, 68, 72, 76 + // iqs = 12..15 -> bq8_offset = 6, want q4_offset = 96, 100, 104, 108 + + const int * q4 = (const int *)(bq4_K->qs + 16 * bq8_offset + 4 * ((iqs/2)%4)); + v[0] = q4[0]; + v[1] = q4[4]; + + const uint16_t * scales = (const uint16_t *)bq4_K->scales; + uint16_t aux[2]; + const int j = bq8_offset/2; + if (j < 2) { + aux[0] = scales[j+0] & 0x3f3f; + aux[1] = scales[j+2] & 0x3f3f; + } else { + aux[0] = ((scales[j+2] >> 0) & 0x0f0f) | ((scales[j-2] & 0xc0c0) >> 2); + aux[1] = ((scales[j+2] >> 4) & 0x0f0f) | ((scales[j-0] & 0xc0c0) >> 2); + } + const uint8_t * sc = (const uint8_t *)aux; + const uint8_t * m = sc + 2; + + for (int i = 0; i < QR4_K; ++i) { + const block_q8_1 * bq8i = bq8_1 + bq8_offset + i; + d8[i] = __low2half(bq8i->ds); + + const int * q8 = (const int *)bq8i->qs + ((iqs/2)%4); + u[2*i+0] = q8[0]; + u[2*i+1] = q8[4]; + } + + return vec_dot_q4_K_q8_1_impl_vmmq(v, u, sc, m, bq4_K->dm, d8); + +#else + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + const block_q4_K * bq4_K = (const block_q4_K *) vbq; + + float sumf_d = 0.0f; + float sumf_m = 0.0f; + + uint16_t aux16[2]; + const uint8_t * s = (const uint8_t *)aux16; + + const uint16_t * a = (const uint16_t *)bq4_K->scales; + aux16[0] = a[0] & 0x0f0f; + aux16[1] = (a[0] >> 4) & 0x0f0f; + + const float dall = bq4_K->dm[0]; + const float dmin = bq4_K->dm[1]; + + const float d8_1 = __low2float(bq8_1[0].ds); + const float d8_2 = __low2float(bq8_1[1].ds); + + const int ui1 = *((const int *)bq8_1[0].qs + (iqs/2)); + const int ui2 = *((const int *)bq8_1[0].qs + (iqs/2) + 4); + const int ui3 = *((const int *)bq8_1[1].qs + (iqs/2)); + const int ui4 = *((const int *)bq8_1[1].qs + (iqs/2) + 4); + + const int * q4 = (const int *)bq4_K->qs + (iqs/2); + const int v1 = q4[0]; + const int v2 = q4[4]; + + const int dot1 = __dp4a(ui2, v2 & 0x0f0f0f0f, __dp4a(ui1, v1 & 0x0f0f0f0f, 0)); + const int dot2 = __dp4a(ui4, (v2 >> 4) & 0x0f0f0f0f, __dp4a(ui3, (v1 >> 4) & 0x0f0f0f0f, 0)); + const int dot3 = __dp4a(0x01010101, ui2, __dp4a(0x01010101, ui1, 0)); + const int dot4 = __dp4a(0x01010101, ui4, __dp4a(0x01010101, ui3, 0)); + + sumf_d += d8_1 * (dot1 * s[0]) + d8_2 * (dot2 * s[1]); + sumf_m += d8_1 * (dot3 * s[2]) + d8_2 * (dot4 * s[3]); + + return dall * sumf_d - dmin * sumf_m; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A + +#endif +} + +template static __device__ __forceinline__ void allocate_tiles_q4_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (WARP_SIZE) + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI4_K) + mmq_y/QI4_K]; + __shared__ int tile_x_sc[mmq_y * (WARP_SIZE/8) + mmq_y/8]; + + *x_ql = tile_x_ql; + *x_dm = tile_x_dm; + *x_sc = tile_x_sc; +} + +template static __device__ __forceinline__ void load_tiles_q4_K( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI4_K; // == 0 if QK_K == 256 + const int kqsx = k % QI4_K; // == k if QK_K == 256 + + const block_q4_K * bx0 = (block_q4_K *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_K * bxi = bx0 + i*blocks_per_row + kbx; + + x_ql[i * (WARP_SIZE + 1) + k] = get_int_from_uint8_aligned(bxi->qs, kqsx); + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI4_K; // == 1 if QK_K == 256 + const int kbxd = k % blocks_per_tile_x_row; // == 0 if QK_K == 256 + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI4_K) { + int i = (i0 + i_offset * QI4_K + k / blocks_per_tile_x_row) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_K * bxi = bx0 + i*blocks_per_row + kbxd; + +#if QK_K == 256 + x_dm[i * (WARP_SIZE/QI4_K) + i / QI4_K + kbxd] = bxi->dm; +#else + x_dm[i * (WARP_SIZE/QI4_K) + i / QI4_K + kbxd] = {bxi->dm[0], bxi->dm[1]}; +#endif + } + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 8) { + int i = (i0 + i_offset * 8 + k / (WARP_SIZE/8)) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q4_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/8)) / (QI4_K/8); + + const int * scales = (int *) bxi->scales; + + const int ksc = k % (WARP_SIZE/8); + + // scale arrangement after the following two lines: sc0,...,sc3, sc4,...,sc7, m0,...,m3, m4,...,m8 + int scales8 = (scales[(ksc%2) + (ksc!=0)] >> (4 * (ksc & (ksc/2)))) & 0x0F0F0F0F; // lower 4 bits + scales8 |= (scales[ksc/2] >> (2 * (ksc % 2))) & 0x30303030; // upper 2 bits + + x_sc[i * (WARP_SIZE/8) + i / 8 + ksc] = scales8; + } +} + +static __device__ __forceinline__ float vec_dot_q4_K_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const uint8_t * sc = ((const uint8_t *) &x_sc[i * (WARP_SIZE/8) + i/8 + k/16]) + 2*((k % 16) / 8); + + const int index_y = j * WARP_SIZE + (QR4_K*k) % WARP_SIZE; + return vec_dot_q4_K_q8_1_impl_mmq(&x_ql[i * (WARP_SIZE + 1) + k], &y_qs[index_y], sc, sc+8, + x_dm[i * (WARP_SIZE/QI4_K) + i/QI4_K], &y_ds[index_y/QI8_1]); +} + +static __device__ __forceinline__ float vec_dot_q5_K_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + +#ifndef GGML_QKK_64 + const block_q5_K * bq5_K = (const block_q5_K *) vbq; + + int vl[2]; + int vh[2]; + int u[2*QR5_K]; + float d8[QR5_K]; + + const int bq8_offset = QR5_K * ((iqs/2) / (QI8_1/2)); + const int * ql = (const int *)(bq5_K->qs + 16 * bq8_offset + 4 * ((iqs/2)%4)); + const int * qh = (const int *)(bq5_K->qh + 4 * ((iqs/2)%4)); + + vl[0] = ql[0]; + vl[1] = ql[4]; + + vh[0] = qh[0] >> bq8_offset; + vh[1] = qh[4] >> bq8_offset; + + const uint16_t * scales = (const uint16_t *)bq5_K->scales; + uint16_t aux[2]; + const int j = bq8_offset/2; + if (j < 2) { + aux[0] = scales[j+0] & 0x3f3f; + aux[1] = scales[j+2] & 0x3f3f; + } else { + aux[0] = ((scales[j+2] >> 0) & 0x0f0f) | ((scales[j-2] & 0xc0c0) >> 2); + aux[1] = ((scales[j+2] >> 4) & 0x0f0f) | ((scales[j-0] & 0xc0c0) >> 2); + } + const uint8_t * sc = (const uint8_t *)aux; + const uint8_t * m = sc + 2; + +#pragma unroll + for (int i = 0; i < QR5_K; ++i) { + const block_q8_1 * bq8i = bq8_1 + bq8_offset + i; + d8[i] = __low2float(bq8i->ds); + + const int * q8 = (const int *)bq8i->qs + ((iqs/2)%4); + u[2*i+0] = q8[0]; + u[2*i+1] = q8[4]; + } + + return vec_dot_q5_K_q8_1_impl_vmmq(vl, vh, u, sc, m, bq5_K->dm, d8); + +#else + +#if __CUDA_ARCH__ >= MIN_CC_DP4A // lowest compute capability for integer intrinsics + const block_q5_K * bq5_K = (const block_q5_K *) vbq; + + const int8_t * s = bq5_K->scales; + + const float d = bq5_K->d; + + const float d8_1 = __low2half(bq8_1[0].ds); + const float d8_2 = __low2half(bq8_1[1].ds); + + const int ui1 = *((const int *)bq8_1[0].qs + (iqs/2)); + const int ui2 = *((const int *)bq8_1[0].qs + (iqs/2) + 4); + const int ui3 = *((const int *)bq8_1[1].qs + (iqs/2)); + const int ui4 = *((const int *)bq8_1[1].qs + (iqs/2) + 4); + + const int * ql = (const int *)bq5_K->qs + (iqs/2); + const int vl1 = ql[0]; + const int vl2 = ql[4]; + + const int step = 4 * (iqs/2); // 0, 4, 8, 12 + const int im = step/8; // = 0 for iqs = 0, 2, = 1 for iqs = 4, 6 + const int in = step%8; // 0, 4, 0, 4 + const int vh = (*((const int *)(bq5_K->qh + in))) >> im; + + const int v1 = (((vh << 4) & 0x10101010) ^ 0x10101010) | ((vl1 >> 0) & 0x0f0f0f0f); + const int v2 = (((vh << 2) & 0x10101010) ^ 0x10101010) | ((vl2 >> 0) & 0x0f0f0f0f); + const int v3 = (((vh >> 0) & 0x10101010) ^ 0x10101010) | ((vl1 >> 4) & 0x0f0f0f0f); + const int v4 = (((vh >> 2) & 0x10101010) ^ 0x10101010) | ((vl2 >> 4) & 0x0f0f0f0f); + + const float sumf_d = d8_1 * (__dp4a(ui1, v1, 0) * s[0] + __dp4a(ui2, v2, 0) * s[1]) + + d8_2 * (__dp4a(ui3, v3, 0) * s[2] + __dp4a(ui4, v4, 0) * s[3]); + + return d * sumf_d; + +#else + assert(false); + return 0.0f; // only to satisfy the compiler +#endif // __CUDA_ARCH__ >= MIN_CC_DP4A + +#endif +} + +template static __device__ __forceinline__ void allocate_tiles_q5_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (2*WARP_SIZE) + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI5_K) + mmq_y/QI5_K]; + __shared__ int tile_x_sc[mmq_y * (WARP_SIZE/8) + mmq_y/8]; + + *x_ql = tile_x_ql; + *x_dm = tile_x_dm; + *x_sc = tile_x_sc; +} + +template static __device__ __forceinline__ void load_tiles_q5_K( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI5_K; // == 0 if QK_K == 256 + const int kqsx = k % QI5_K; // == k if QK_K == 256 + + const block_q5_K * bx0 = (block_q5_K *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_K * bxi = bx0 + i*blocks_per_row + kbx; + const int ky = QR5_K*kqsx; + + const int ql = get_int_from_uint8_aligned(bxi->qs, kqsx); + const int ql0 = (ql >> 0) & 0x0F0F0F0F; + const int ql1 = (ql >> 4) & 0x0F0F0F0F; + + const int qh = get_int_from_uint8_aligned(bxi->qh, kqsx % (QI5_K/4)); + const int qh0 = ((qh >> (2 * (kqsx / (QI5_K/4)) + 0)) << 4) & 0x10101010; + const int qh1 = ((qh >> (2 * (kqsx / (QI5_K/4)) + 1)) << 4) & 0x10101010; + + const int kq0 = ky - ky % (QI5_K/2) + k % (QI5_K/4) + 0; + const int kq1 = ky - ky % (QI5_K/2) + k % (QI5_K/4) + (QI5_K/4); + + x_ql[i * (2*WARP_SIZE + 1) + kq0] = ql0 | qh0; + x_ql[i * (2*WARP_SIZE + 1) + kq1] = ql1 | qh1; + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI5_K; // == 1 if QK_K == 256 + const int kbxd = k % blocks_per_tile_x_row; // == 0 if QK_K == 256 + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI5_K) { + int i = (i0 + i_offset * QI5_K + k / blocks_per_tile_x_row) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_K * bxi = bx0 + i*blocks_per_row + kbxd; + +#if QK_K == 256 + x_dm[i * (WARP_SIZE/QI5_K) + i / QI5_K + kbxd] = bxi->dm; +#endif + } + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 8) { + int i = (i0 + i_offset * 8 + k / (WARP_SIZE/8)) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q5_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/8)) / (QI5_K/8); + + const int * scales = (int *) bxi->scales; + + const int ksc = k % (WARP_SIZE/8); + + // scale arrangement after the following two lines: sc0,...,sc3, sc4,...,sc7, m0,...,m3, m4,...,m8 + int scales8 = (scales[(ksc%2) + (ksc!=0)] >> (4 * (ksc & (ksc/2)))) & 0x0F0F0F0F; // lower 4 bits + scales8 |= (scales[ksc/2] >> (2 * (ksc % 2))) & 0x30303030; // upper 2 bits + + x_sc[i * (WARP_SIZE/8) + i / 8 + ksc] = scales8; + } +} + +static __device__ __forceinline__ float vec_dot_q5_K_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const uint8_t * sc = ((const uint8_t *) &x_sc[i * (WARP_SIZE/8) + i/8 + k/16]) + 2 * ((k % 16) / 8); + + const int index_x = i * (QR5_K*WARP_SIZE + 1) + QR5_K*k; + const int index_y = j * WARP_SIZE + (QR5_K*k) % WARP_SIZE; + return vec_dot_q5_K_q8_1_impl_mmq(&x_ql[index_x], &y_qs[index_y], sc, sc+8, + x_dm[i * (WARP_SIZE/QI5_K) + i/QI5_K], &y_ds[index_y/QI8_1]); +} + +static __device__ __forceinline__ float vec_dot_q6_K_q8_1( + const void * __restrict__ vbq, const block_q8_1 * __restrict__ bq8_1, const int & iqs) { + + const block_q6_K * bq6_K = (const block_q6_K *) vbq; + + const int bq8_offset = 2 * QR6_K * (iqs / (QI6_K/2)) + (iqs % (QI6_K/2)) / (QI6_K/4); + const int scale_offset = (QI6_K/4) * (iqs / (QI6_K/2)) + (iqs % (QI6_K/2)) / (QI6_K/8); + const int vh_shift = 2 * ((iqs % (QI6_K/2)) / (QI6_K/4)); + + const int vl = get_int_from_uint8(bq6_K->ql, iqs); + const int vh = get_int_from_uint8(bq6_K->qh, (QI6_K/4) * (iqs / (QI6_K/2)) + iqs % (QI6_K/4)) >> vh_shift; + + const int8_t * scales = bq6_K->scales + scale_offset; + + int u[QR6_K]; + float d8[QR6_K]; + +#pragma unroll + for (int i = 0; i < QR6_K; ++i) { + u[i] = get_int_from_int8_aligned(bq8_1[bq8_offset + 2*i].qs, iqs % QI8_1); + d8[i] = __low2half(bq8_1[bq8_offset + 2*i].ds); + } + + return vec_dot_q6_K_q8_1_impl_mmvq(vl, vh, u, scales, bq6_K->d, d8); +} + +template static __device__ __forceinline__ void allocate_tiles_q6_K(int ** x_ql, half2 ** x_dm, int ** x_qh, int ** x_sc) { + + __shared__ int tile_x_ql[mmq_y * (2*WARP_SIZE) + mmq_y]; + __shared__ half2 tile_x_dm[mmq_y * (WARP_SIZE/QI6_K) + mmq_y/QI6_K]; + __shared__ int tile_x_sc[mmq_y * (WARP_SIZE/8) + mmq_y/8]; + + *x_ql = tile_x_ql; + *x_dm = tile_x_dm; + *x_sc = tile_x_sc; +} + +template static __device__ __forceinline__ void load_tiles_q6_K( + const void * __restrict__ vx, int * __restrict__ x_ql, half2 * __restrict__ x_dm, int * __restrict__ x_qh, + int * __restrict__ x_sc, const int & i_offset, const int & i_max, const int & k, const int & blocks_per_row) { + + __builtin_assume(i_offset >= 0); + __builtin_assume(i_offset < nwarps); + __builtin_assume(k >= 0); + __builtin_assume(k < WARP_SIZE); + + const int kbx = k / QI6_K; // == 0 if QK_K == 256 + const int kqsx = k % QI6_K; // == k if QK_K == 256 + + const block_q6_K * bx0 = (block_q6_K *) vx; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps) { + int i = i0 + i_offset; + + if (need_check) { + i = min(i, i_max); + } + + const block_q6_K * bxi = bx0 + i*blocks_per_row + kbx; + const int ky = QR6_K*kqsx; + + const int ql = get_int_from_uint8(bxi->ql, kqsx); + const int ql0 = (ql >> 0) & 0x0F0F0F0F; + const int ql1 = (ql >> 4) & 0x0F0F0F0F; + + const int qh = get_int_from_uint8(bxi->qh, (QI6_K/4) * (kqsx / (QI6_K/2)) + kqsx % (QI6_K/4)); + const int qh0 = ((qh >> (2 * ((kqsx % (QI6_K/2)) / (QI6_K/4)))) << 4) & 0x30303030; + const int qh1 = (qh >> (2 * ((kqsx % (QI6_K/2)) / (QI6_K/4)))) & 0x30303030; + + const int kq0 = ky - ky % QI6_K + k % (QI6_K/2) + 0; + const int kq1 = ky - ky % QI6_K + k % (QI6_K/2) + (QI6_K/2); + + x_ql[i * (2*WARP_SIZE + 1) + kq0] = __vsubss4(ql0 | qh0, 0x20202020); + x_ql[i * (2*WARP_SIZE + 1) + kq1] = __vsubss4(ql1 | qh1, 0x20202020); + } + + const int blocks_per_tile_x_row = WARP_SIZE / QI6_K; // == 1 if QK_K == 256 + const int kbxd = k % blocks_per_tile_x_row; // == 0 if QK_K == 256 + float * x_dmf = (float *) x_dm; + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * QI6_K) { + int i = (i0 + i_offset * QI6_K + k / blocks_per_tile_x_row) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q6_K * bxi = bx0 + i*blocks_per_row + kbxd; + + x_dmf[i * (WARP_SIZE/QI6_K) + i / QI6_K + kbxd] = bxi->d; + } + +#pragma unroll + for (int i0 = 0; i0 < mmq_y; i0 += nwarps * 8) { + int i = (i0 + i_offset * 8 + k / (WARP_SIZE/8)) % mmq_y; + + if (need_check) { + i = min(i, i_max); + } + + const block_q6_K * bxi = bx0 + i*blocks_per_row + (k % (WARP_SIZE/8)) / 4; + + x_sc[i * (WARP_SIZE/8) + i / 8 + k % (WARP_SIZE/8)] = get_int_from_int8(bxi->scales, k % (QI6_K/8)); + } +} + +static __device__ __forceinline__ float vec_dot_q6_K_q8_1_mul_mat( + const int * __restrict__ x_ql, const half2 * __restrict__ x_dm, const int * __restrict__ x_qh, const int * __restrict__ x_sc, + const int * __restrict__ y_qs, const half2 * __restrict__ y_ds, const int & i, const int & j, const int & k) { + + const float * x_dmf = (const float *) x_dm; + const float * y_df = (const float *) y_ds; + + const int8_t * sc = ((const int8_t *) &x_sc[i * (WARP_SIZE/8) + i/8 + k/8]); + + const int index_x = i * (QR6_K*WARP_SIZE + 1) + QR6_K*k; + const int index_y = j * WARP_SIZE + (QR6_K*k) % WARP_SIZE; + return vec_dot_q6_K_q8_1_impl_mmq(&x_ql[index_x], &y_qs[index_y], sc, x_dmf[i * (WARP_SIZE/QI6_K) + i/QI6_K], &y_df[index_y/QI8_1]); +} + +template +static __device__ __forceinline__ void mul_mat_q( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + + const block_q_t * x = (const block_q_t *) vx; + const block_q8_1 * y = (const block_q8_1 *) vy; + + const int blocks_per_row_x = ncols_x / qk; + const int blocks_per_col_y = nrows_y / QK8_1; + const int blocks_per_warp = WARP_SIZE / qi; + + const int & ncols_dst = ncols_y; + + const int row_dst_0 = blockIdx.x*mmq_y; + const int & row_x_0 = row_dst_0; + + const int col_dst_0 = blockIdx.y*mmq_x; + const int & col_y_0 = col_dst_0; + + int * tile_x_ql = nullptr; + half2 * tile_x_dm = nullptr; + int * tile_x_qh = nullptr; + int * tile_x_sc = nullptr; + + allocate_tiles(&tile_x_ql, &tile_x_dm, &tile_x_qh, &tile_x_sc); + + __shared__ int tile_y_qs[mmq_x * WARP_SIZE]; + __shared__ half2 tile_y_ds[mmq_x * WARP_SIZE/QI8_1]; + + float sum[mmq_y/WARP_SIZE][mmq_x/nwarps] = {0.0f}; + + for (int ib0 = 0; ib0 < blocks_per_row_x; ib0 += blocks_per_warp) { + + load_tiles(x + row_x_0*blocks_per_row_x + ib0, tile_x_ql, tile_x_dm, tile_x_qh, tile_x_sc, + threadIdx.y, nrows_x-row_x_0-1, threadIdx.x, blocks_per_row_x); + +#pragma unroll + for (int ir = 0; ir < qr; ++ir) { + const int kqs = ir*WARP_SIZE + threadIdx.x; + const int kbxd = kqs / QI8_1; + +#pragma unroll + for (int i = 0; i < mmq_x; i += nwarps) { + const int col_y_eff = min(col_y_0 + threadIdx.y + i, ncols_y-1); // to prevent out-of-bounds memory accesses + + const block_q8_1 * by0 = &y[col_y_eff*blocks_per_col_y + ib0 * (qk/QK8_1) + kbxd]; + + const int index_y = (threadIdx.y + i) * WARP_SIZE + kqs % WARP_SIZE; + tile_y_qs[index_y] = get_int_from_int8_aligned(by0->qs, threadIdx.x % QI8_1); + } + +#pragma unroll + for (int ids0 = 0; ids0 < mmq_x; ids0 += nwarps * QI8_1) { + const int ids = (ids0 + threadIdx.y * QI8_1 + threadIdx.x / (WARP_SIZE/QI8_1)) % mmq_x; + const int kby = threadIdx.x % (WARP_SIZE/QI8_1); + const int col_y_eff = min(col_y_0 + ids, ncols_y-1); + + // if the sum is not needed it's faster to transform the scale to f32 ahead of time + const half2 * dsi_src = &y[col_y_eff*blocks_per_col_y + ib0 * (qk/QK8_1) + ir*(WARP_SIZE/QI8_1) + kby].ds; + half2 * dsi_dst = &tile_y_ds[ids * (WARP_SIZE/QI8_1) + kby]; + if (need_sum) { + *dsi_dst = *dsi_src; + } else { + float * dfi_dst = (float *) dsi_dst; + *dfi_dst = __low2half(*dsi_src); + } + } + + __syncthreads(); + +// #pragma unroll // unrolling this loop causes too much register pressure + for (int k = ir*WARP_SIZE/qr; k < (ir+1)*WARP_SIZE/qr; k += vdr) { +#pragma unroll + for (int j = 0; j < mmq_x; j += nwarps) { +#pragma unroll + for (int i = 0; i < mmq_y; i += WARP_SIZE) { + sum[i/WARP_SIZE][j/nwarps] += vec_dot( + tile_x_ql, tile_x_dm, tile_x_qh, tile_x_sc, tile_y_qs, tile_y_ds, + threadIdx.x + i, threadIdx.y + j, k); + } + } + } + + __syncthreads(); + } + } + +#pragma unroll + for (int j = 0; j < mmq_x; j += nwarps) { + const int col_dst = col_dst_0 + j + threadIdx.y; + + if (col_dst >= ncols_dst) { + return; + } + +#pragma unroll + for (int i = 0; i < mmq_y; i += WARP_SIZE) { + const int row_dst = row_dst_0 + threadIdx.x + i; + + if (row_dst >= nrows_dst) { + continue; + } + + dst[col_dst*nrows_dst + row_dst] = sum[i/WARP_SIZE][j/nwarps]; + } + } +} + +#define MMQ_X_Q4_0_AMPERE 64 +#define MMQ_Y_Q4_0_AMPERE 128 +#define NWARPS_Q4_0_AMPERE 4 +#define MMQ_X_Q4_0_PASCAL 64 +#define MMQ_Y_Q4_0_PASCAL 64 +#define NWARPS_Q4_0_PASCAL 8 + +template static __global__ void mul_mat_q4_0( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q4_0_AMPERE; + const int mmq_y = MMQ_Y_Q4_0_AMPERE; + const int nwarps = NWARPS_Q4_0_AMPERE; + + mul_mat_q, + load_tiles_q4_0, VDR_Q4_0_Q8_1_MMQ, vec_dot_q4_0_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q4_0_PASCAL; + const int mmq_y = MMQ_Y_Q4_0_PASCAL; + const int nwarps = NWARPS_Q4_0_PASCAL; + + mul_mat_q, + load_tiles_q4_0, VDR_Q4_0_Q8_1_MMQ, vec_dot_q4_0_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q4_0_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q4_1_AMPERE 64 +#define MMQ_Y_Q4_1_AMPERE 128 +#define NWARPS_Q4_1_AMPERE 4 +#define MMQ_X_Q4_1_PASCAL 64 +#define MMQ_Y_Q4_1_PASCAL 64 +#define NWARPS_Q4_1_PASCAL 8 + +template static __global__ void +#if __CUDA_ARCH__ < CC_TURING + __launch_bounds__(WARP_SIZE*NWARPS_Q4_1_PASCAL, 2) +#endif // __CUDA_ARCH__ < CC_TURING + mul_mat_q4_1( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q4_1_AMPERE; + const int mmq_y = MMQ_Y_Q4_1_AMPERE; + const int nwarps = NWARPS_Q4_1_AMPERE; + + mul_mat_q, + load_tiles_q4_1, VDR_Q4_1_Q8_1_MMQ, vec_dot_q4_1_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q4_1_PASCAL; + const int mmq_y = MMQ_Y_Q4_1_PASCAL; + const int nwarps = NWARPS_Q4_1_PASCAL; + + mul_mat_q, + load_tiles_q4_1, VDR_Q4_1_Q8_1_MMQ, vec_dot_q4_1_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q4_1_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q5_0_AMPERE 128 +#define MMQ_Y_Q5_0_AMPERE 64 +#define NWARPS_Q5_0_AMPERE 4 +#define MMQ_X_Q5_0_PASCAL 64 +#define MMQ_Y_Q5_0_PASCAL 64 +#define NWARPS_Q5_0_PASCAL 8 + +template static __global__ void mul_mat_q5_0( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q5_0_AMPERE; + const int mmq_y = MMQ_Y_Q5_0_AMPERE; + const int nwarps = NWARPS_Q5_0_AMPERE; + + mul_mat_q, + load_tiles_q5_0, VDR_Q5_0_Q8_1_MMQ, vec_dot_q5_0_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q5_0_PASCAL; + const int mmq_y = MMQ_Y_Q5_0_PASCAL; + const int nwarps = NWARPS_Q5_0_PASCAL; + + mul_mat_q, + load_tiles_q5_0, VDR_Q5_0_Q8_1_MMQ, vec_dot_q5_0_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q5_0_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q5_1_AMPERE 128 +#define MMQ_Y_Q5_1_AMPERE 64 +#define NWARPS_Q5_1_AMPERE 4 +#define MMQ_X_Q5_1_PASCAL 64 +#define MMQ_Y_Q5_1_PASCAL 64 +#define NWARPS_Q5_1_PASCAL 8 + +template static __global__ void mul_mat_q5_1( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q5_1_AMPERE; + const int mmq_y = MMQ_Y_Q5_1_AMPERE; + const int nwarps = NWARPS_Q5_1_AMPERE; + + mul_mat_q, + load_tiles_q5_1, VDR_Q5_1_Q8_1_MMQ, vec_dot_q5_1_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q5_1_PASCAL; + const int mmq_y = MMQ_Y_Q5_1_PASCAL; + const int nwarps = NWARPS_Q5_1_PASCAL; + + mul_mat_q, + load_tiles_q5_1, VDR_Q5_1_Q8_1_MMQ, vec_dot_q5_1_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q5_1_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q8_0_AMPERE 128 +#define MMQ_Y_Q8_0_AMPERE 64 +#define NWARPS_Q8_0_AMPERE 4 +#define MMQ_X_Q8_0_PASCAL 64 +#define MMQ_Y_Q8_0_PASCAL 64 +#define NWARPS_Q8_0_PASCAL 8 + +template static __global__ void mul_mat_q8_0( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q8_0_AMPERE; + const int mmq_y = MMQ_Y_Q8_0_AMPERE; + const int nwarps = NWARPS_Q8_0_AMPERE; + + mul_mat_q, + load_tiles_q8_0, VDR_Q8_0_Q8_1_MMQ, vec_dot_q8_0_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q8_0_PASCAL; + const int mmq_y = MMQ_Y_Q8_0_PASCAL; + const int nwarps = NWARPS_Q8_0_PASCAL; + + mul_mat_q, + load_tiles_q8_0, VDR_Q8_0_Q8_1_MMQ, vec_dot_q8_0_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q8_0_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q2_K_AMPERE 64 +#define MMQ_Y_Q2_K_AMPERE 128 +#define NWARPS_Q2_K_AMPERE 4 +#define MMQ_X_Q2_K_PASCAL 64 +#define MMQ_Y_Q2_K_PASCAL 64 +#define NWARPS_Q2_K_PASCAL 8 + +template static __global__ void mul_mat_q2_K( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q2_K_AMPERE; + const int mmq_y = MMQ_Y_Q2_K_AMPERE; + const int nwarps = NWARPS_Q2_K_AMPERE; + + mul_mat_q, + load_tiles_q2_K, VDR_Q2_K_Q8_1_MMQ, vec_dot_q2_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q2_K_PASCAL; + const int mmq_y = MMQ_Y_Q2_K_PASCAL; + const int nwarps = NWARPS_Q2_K_PASCAL; + + mul_mat_q, + load_tiles_q2_K, VDR_Q2_K_Q8_1_MMQ, vec_dot_q2_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q2_K_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q3_K_AMPERE 128 +#define MMQ_Y_Q3_K_AMPERE 128 +#define NWARPS_Q3_K_AMPERE 4 +#define MMQ_X_Q3_K_PASCAL 64 +#define MMQ_Y_Q3_K_PASCAL 64 +#define NWARPS_Q3_K_PASCAL 8 + +template static __global__ void +#if __CUDA_ARCH__ < CC_TURING + __launch_bounds__(WARP_SIZE*NWARPS_Q3_K_PASCAL, 2) +#endif // __CUDA_ARCH__ < CC_TURING + mul_mat_q3_K( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q3_K_AMPERE; + const int mmq_y = MMQ_Y_Q3_K_AMPERE; + const int nwarps = NWARPS_Q3_K_AMPERE; + + mul_mat_q, + load_tiles_q3_K, VDR_Q3_K_Q8_1_MMQ, vec_dot_q3_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q3_K_PASCAL; + const int mmq_y = MMQ_Y_Q3_K_PASCAL; + const int nwarps = NWARPS_Q3_K_PASCAL; + + mul_mat_q, + load_tiles_q3_K, VDR_Q3_K_Q8_1_MMQ, vec_dot_q3_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q3_K_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q4_K_AMPERE 64 +#define MMQ_Y_Q4_K_AMPERE 128 +#define NWARPS_Q4_K_AMPERE 4 +#define MMQ_X_Q4_K_PASCAL 64 +#define MMQ_Y_Q4_K_PASCAL 64 +#define NWARPS_Q4_K_PASCAL 8 + +template static __global__ void +#if __CUDA_ARCH__ < CC_TURING + __launch_bounds__(WARP_SIZE*NWARPS_Q4_K_PASCAL, 2) +#endif // __CUDA_ARCH__ < CC_TURING + mul_mat_q4_K( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q4_K_AMPERE; + const int mmq_y = MMQ_Y_Q4_K_AMPERE; + const int nwarps = NWARPS_Q4_K_AMPERE; + + mul_mat_q, + load_tiles_q4_K, VDR_Q4_K_Q8_1_MMQ, vec_dot_q4_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q4_K_PASCAL; + const int mmq_y = MMQ_Y_Q4_K_PASCAL; + const int nwarps = NWARPS_Q4_K_PASCAL; + + mul_mat_q, + load_tiles_q4_K, VDR_Q4_K_Q8_1_MMQ, vec_dot_q4_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q4_K_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q5_K_AMPERE 64 +#define MMQ_Y_Q5_K_AMPERE 128 +#define NWARPS_Q5_K_AMPERE 4 +#define MMQ_X_Q5_K_PASCAL 64 +#define MMQ_Y_Q5_K_PASCAL 64 +#define NWARPS_Q5_K_PASCAL 8 + +template static __global__ void mul_mat_q5_K( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q5_K_AMPERE; + const int mmq_y = MMQ_Y_Q5_K_AMPERE; + const int nwarps = NWARPS_Q5_K_AMPERE; + + mul_mat_q, + load_tiles_q5_K, VDR_Q5_K_Q8_1_MMQ, vec_dot_q5_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q5_K_PASCAL; + const int mmq_y = MMQ_Y_Q5_K_PASCAL; + const int nwarps = NWARPS_Q5_K_PASCAL; + + mul_mat_q, + load_tiles_q5_K, VDR_Q5_K_Q8_1_MMQ, vec_dot_q5_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q5_K_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +#define MMQ_X_Q6_K_AMPERE 64 +#define MMQ_Y_Q6_K_AMPERE 64 +#define NWARPS_Q6_K_AMPERE 4 +#define MMQ_X_Q6_K_PASCAL 64 +#define MMQ_Y_Q6_K_PASCAL 64 +#define NWARPS_Q6_K_PASCAL 8 + +template static __global__ void +#if __CUDA_ARCH__ < CC_TURING + __launch_bounds__(WARP_SIZE*NWARPS_Q6_K_PASCAL, 2) +#endif // __CUDA_ARCH__ < CC_TURING + mul_mat_q6_K( + const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int ncols_y, const int nrows_y, const int nrows_dst) { + +#if __CUDA_ARCH__ >= CC_TURING + const int mmq_x = MMQ_X_Q6_K_AMPERE; + const int mmq_y = MMQ_Y_Q6_K_AMPERE; + const int nwarps = NWARPS_Q6_K_AMPERE; + + mul_mat_q, + load_tiles_q6_K, VDR_Q6_K_Q8_1_MMQ, vec_dot_q6_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + +#elif __CUDA_ARCH__ >= MIN_CC_DP4A + const int mmq_x = MMQ_X_Q6_K_PASCAL; + const int mmq_y = MMQ_Y_Q6_K_PASCAL; + const int nwarps = NWARPS_Q6_K_PASCAL; + + mul_mat_q, + load_tiles_q6_K, VDR_Q6_K_Q8_1_MMQ, vec_dot_q6_K_q8_1_mul_mat> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); +#else + (void) vec_dot_q6_K_q8_1_mul_mat; + assert(false); +#endif // __CUDA_ARCH__ >= CC_TURING +} + +template +static __global__ void mul_mat_vec_q(const void * __restrict__ vx, const void * __restrict__ vy, float * __restrict__ dst, const int ncols, const int nrows) { + const int row = blockIdx.y*blockDim.y + threadIdx.y; + + if (row >= nrows) { + return; + } + + const int blocks_per_row = ncols / qk; + const int blocks_per_warp = vdr * WARP_SIZE / qi; + +// partial sum for each thread + float tmp = 0.0f; + + const block_q_t * x = (const block_q_t *) vx; + const block_q8_1 * y = (const block_q8_1 *) vy; + + for (int i = 0; i < blocks_per_row; i += blocks_per_warp) { + const int ibx = row*blocks_per_row + i + threadIdx.x / (qi/vdr); // x block index + + const int iby = (i + threadIdx.x / (qi/vdr)) * (qk/QK8_1); // y block index that aligns with ibx + + const int iqs = vdr * (threadIdx.x % (qi/vdr)); // x block quant index when casting the quants to int + + tmp += vec_dot_q_cuda(&x[ibx], &y[iby], iqs); + } + + // sum up partial sums and write back result +#pragma unroll + for (int mask = 16; mask > 0; mask >>= 1) { + tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); + } + + if (threadIdx.x == 0) { + dst[row] = tmp; + } +} + template -static __global__ void dequantize_mul_mat_vec(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows) { +static __global__ void dequantize_mul_mat_vec(const void * __restrict__ vx, const dfloat * __restrict__ y, float * __restrict__ dst, const int ncols, const int nrows) { // qk = quantized weights per x block // qr = number of quantized weights per data value in x block const int row = blockIdx.y*blockDim.y + threadIdx.y; @@ -1247,11 +3805,11 @@ static __global__ void dequantize_mul_mat_vec(const void * vx, const dfloat * y, const int y_offset = qr == 1 ? 1 : qk/2; // partial sum for each thread -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 half2 tmp = {0.0f, 0.0f}; // two sums for f16 to take advantage of half2 intrinsics #else float tmp = 0.0f; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 for (int i = 0; i < ncols; i += iter_stride) { const int col = i + vals_per_iter*tid; @@ -1271,7 +3829,7 @@ static __global__ void dequantize_mul_mat_vec(const void * vx, const dfloat * y, // matrix multiplication // for qr = 2 the y index needs to increase by 1 per j iter because of y_offset = qk/2 -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 tmp += __hmul2(v, { y[iybs + iqs + j/qr + 0], y[iybs + iqs + j/qr + y_offset] @@ -1279,31 +3837,34 @@ static __global__ void dequantize_mul_mat_vec(const void * vx, const dfloat * y, #else tmp += v.x * y[iybs + iqs + j/qr + 0]; tmp += v.y * y[iybs + iqs + j/qr + y_offset]; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } } // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); } if (tid == 0) { -#ifdef GGML_CUDA_DMMV_F16 +#ifdef GGML_CUDA_F16 dst[row] = tmp.x + tmp.y; #else dst[row] = tmp; -#endif // GGML_CUDA_DMMV_F16 +#endif // GGML_CUDA_F16 } } -static __global__ void mul_mat_p021_f16_f32(const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, const int nchannels_x) { +static __global__ void mul_mat_p021_f16_f32( + const void * __restrict__ vx, const float * __restrict__ y, float * __restrict__ dst, + const int ncols_x, const int nrows_x, const int nchannels_x, const int nchannels_y) { + const half * x = (const half *) vx; const int row_x = blockDim.y*blockIdx.y + threadIdx.y; const int channel = blockDim.z*blockIdx.z + threadIdx.z; + const int channel_x = channel / (nchannels_y / nchannels_x); const int nrows_y = ncols_x; const int nrows_dst = nrows_x; @@ -1319,7 +3880,7 @@ static __global__ void mul_mat_p021_f16_f32(const void * vx, const float * y, fl } // x is transposed and permuted - const int ix = row_x*nchannels_x*ncols_x + channel*ncols_x + col_x; + const int ix = row_x*nchannels_x*ncols_x + channel_x*ncols_x + col_x; const float xi = __half2float(x[ix]); const int row_y = col_x; @@ -1335,7 +3896,6 @@ static __global__ void mul_mat_p021_f16_f32(const void * vx, const float * y, fl const int idst = channel*nrows_dst + row_dst; // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -1347,13 +3907,14 @@ static __global__ void mul_mat_p021_f16_f32(const void * vx, const float * y, fl } static __global__ void mul_mat_vec_nc_f16_f32( // nc == non-contiguous - const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, - const int row_stride_x, const int channel_stride_x) { + const void * __restrict__ vx, const float * __restrict__ y, float * __restrict__ dst, const int ncols_x, const int nrows_x, + const int row_stride_x, const int channel_stride_x, const int channel_x_divisor) { const half * x = (const half *) vx; const int row_x = blockDim.y*blockIdx.y + threadIdx.y; const int channel = blockDim.z*blockIdx.z + threadIdx.z; + const int channel_x = channel / channel_x_divisor; const int nrows_y = ncols_x; const int nrows_dst = nrows_x; @@ -1370,7 +3931,7 @@ static __global__ void mul_mat_vec_nc_f16_f32( // nc == non-contiguous break; } - const int ix = channel*channel_stride_x + row_x*row_stride_x + col_x; + const int ix = channel_x*channel_stride_x + row_x*row_stride_x + col_x; const float xi = __half2float(x[ix]); const int row_y = col_x; @@ -1381,7 +3942,6 @@ static __global__ void mul_mat_vec_nc_f16_f32( // nc == non-contiguous } // sum up partial sums and write back result - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); @@ -1432,17 +3992,18 @@ static __global__ void cpy_f32_f16(const char * cx, char * cdst, const int ne, } // rope == RoPE == rotary positional embedding -static __global__ void rope_f32(const float * x, float * dst, const int ncols, const float p, const float theta_scale) { - const int col = 2*(blockDim.x*blockIdx.x + threadIdx.x); +static __global__ void rope_f32(const float * x, float * dst, const int ncols, const float p0, + const float p_delta, const int p_delta_rows, const float theta_scale) { + const int col = 2*(blockDim.y*blockIdx.y + threadIdx.y); if (col >= ncols) { return; } - const int row = blockDim.y*blockIdx.y + threadIdx.y; + const int row = blockDim.x*blockIdx.x + threadIdx.x; const int i = row*ncols + col; - const float theta = p*powf(theta_scale, col/2); + const float theta = (p0 + p_delta * (row/p_delta_rows))*powf(theta_scale, col/2); const float sin_theta = sinf(theta); const float cos_theta = cosf(theta); @@ -1453,9 +4014,88 @@ static __global__ void rope_f32(const float * x, float * dst, const int ncols, c dst[i + 1] = x0*sin_theta + x1*cos_theta; } -static __global__ void diag_mask_inf_f32(const float * x, float * dst, const int ncols, const int rows_per_channel, const int n_past) { +static __global__ void rope_neox_f32(const float * x, float * dst, const int ncols, const float p0, + const float p_delta, const int p_delta_rows, const float theta_scale) { + const int col = 2*(blockDim.y*blockIdx.y + threadIdx.y); + + if (col >= ncols) { + return; + } + + const int row = blockDim.x*blockIdx.x + threadIdx.x; + const int i = row*ncols + col/2; + + const float theta = (p0 + p_delta * (row/p_delta_rows))*powf(theta_scale, col/2); + const float sin_theta = sinf(theta); + const float cos_theta = cosf(theta); + + const float x0 = x[i + 0]; + const float x1 = x[i + ncols/2]; + + dst[i + 0] = x0*cos_theta - x1*sin_theta; + dst[i + ncols/2] = x0*sin_theta + x1*cos_theta; +} + +static __global__ void rope_glm_f32(const float * x, float * dst, const int ncols, const float p, const float block_p, const float theta_scale) { const int col = blockDim.x*blockIdx.x + threadIdx.x; + const int half_n_dims = ncols/4; + + if (col >= half_n_dims) { + return; + } + const int row = blockDim.y*blockIdx.y + threadIdx.y; + const int i = row*ncols + col; + + const float col_theta_scale = powf(theta_scale, col); + + const float theta = p*col_theta_scale; + const float sin_theta = sinf(theta); + const float cos_theta = cosf(theta); + + const float x0 = x[i + 0]; + const float x1 = x[i + half_n_dims]; + + dst[i + 0] = x0*cos_theta - x1*sin_theta; + dst[i + half_n_dims] = x0*sin_theta + x1*cos_theta; + + const float block_theta = block_p*col_theta_scale; + const float sin_block_theta = sinf(block_theta); + const float cos_block_theta = cosf(block_theta); + + const float x2 = x[i + half_n_dims * 2]; + const float x3 = x[i + half_n_dims * 3]; + + dst[i + half_n_dims * 2] = x2*cos_block_theta - x3*sin_block_theta; + dst[i + half_n_dims * 3] = x2*sin_block_theta + x3*cos_block_theta; +} + +static __global__ void alibi_f32(const float * x, float * dst, const int ncols, const int k_rows, + const int n_heads_log2_floor, const float m0, const float m1) { + const int col = blockDim.x*blockIdx.x + threadIdx.x; + + if (col >= ncols) { + return; + } + + const int row = blockDim.y*blockIdx.y + threadIdx.y; + const int i = row*ncols + col; + + const int k = row/k_rows; + + float m_k; + if (k < n_heads_log2_floor) { + m_k = powf(m0, k + 1); + } else { + m_k = powf(m1, 2 * (k - n_heads_log2_floor) + 1); + } + + dst[i] = col * m_k + x[i]; +} + +static __global__ void diag_mask_inf_f32(const float * x, float * dst, const int ncols, const int rows_per_channel, const int n_past) { + const int col = blockDim.y*blockIdx.y + threadIdx.y; + const int row = blockDim.x*blockIdx.x + threadIdx.x; if (col >= ncols) { return; @@ -1468,44 +4108,44 @@ static __global__ void diag_mask_inf_f32(const float * x, float * dst, const int // the CUDA soft max implementation differs from the CPU implementation // instead of doubles floats are used -// values are also not normalized to the maximum value by subtracting it in the exponential function -// theoretically these changes could cause problems with rounding error and arithmetic overflow but for LLaMa it seems to be fine static __global__ void soft_max_f32(const float * x, float * dst, const int ncols) { - const int row = blockDim.y*blockIdx.y + threadIdx.y; - const int block_size = blockDim.x; - const int tid = threadIdx.x; + const int row = blockDim.x*blockIdx.x + threadIdx.x; + const int block_size = blockDim.y; + const int tid = threadIdx.y; - float tmp = 0.0; - - for (int block_start = 0; block_start < ncols; block_start += block_size) { - const int col = block_start + tid; - - if (col >= ncols) { - break; - } + float max_val = -INFINITY; + for (int col = tid; col < ncols; col += block_size) { const int i = row*ncols + col; - const float val = expf(x[i]); + max_val = max(max_val, x[i]); + } + + // find the max value in the block +#pragma unroll + for (int mask = 16; mask > 0; mask >>= 1) { + max_val = max(max_val, __shfl_xor_sync(0xffffffff, max_val, mask, 32)); + } + + float tmp = 0.f; + + for (int col = tid; col < ncols; col += block_size) { + const int i = row*ncols + col; + const float val = expf(x[i] - max_val); tmp += val; dst[i] = val; } // sum up partial sums - __syncthreads(); #pragma unroll for (int mask = 16; mask > 0; mask >>= 1) { tmp += __shfl_xor_sync(0xffffffff, tmp, mask, 32); } - for (int block_start = 0; block_start < ncols; block_start += block_size) { - const int col = block_start + tid; - - if (col >= ncols) { - break; - } + const float inv_tmp = 1.f / tmp; + for (int col = tid; col < ncols; col += block_size) { const int i = row*ncols + col; - dst[i] /= tmp; + dst[i] *= inv_tmp; } } @@ -1519,9 +4159,9 @@ static __global__ void scale_f32(const float * x, float * dst, const float scale dst[i] = scale * x[i]; } -static void add_f32_cuda(const float * x, const float * y, float * dst, const int k, cudaStream_t stream) { - const int num_blocks = (k + CUDA_ADD_BLOCK_SIZE - 1) / CUDA_ADD_BLOCK_SIZE; - add_f32<<>>(x, y, dst, k); +static void add_f32_cuda(const float * x, const float * y, float * dst, const int kx, const int ky, cudaStream_t stream) { + const int num_blocks = (kx + CUDA_ADD_BLOCK_SIZE - 1) / CUDA_ADD_BLOCK_SIZE; + add_f32<<>>(x, y, dst, kx, ky); } static void add_f16_f32_f16_cuda(const half * x, const float * y, half * dst, const int k, cudaStream_t stream) { @@ -1534,15 +4174,33 @@ static void mul_f32_cuda(const float * x, const float * y, float * dst, const in mul_f32<<>>(x, y, dst, kx, ky); } +static void gelu_f32_cuda(const float * x, float * dst, const int k, cudaStream_t stream) { + const int num_blocks = (k + CUDA_GELU_BLOCK_SIZE - 1) / CUDA_GELU_BLOCK_SIZE; + gelu_f32<<>>(x, dst, k); +} + static void silu_f32_cuda(const float * x, float * dst, const int k, cudaStream_t stream) { const int num_blocks = (k + CUDA_SILU_BLOCK_SIZE - 1) / CUDA_SILU_BLOCK_SIZE; silu_f32<<>>(x, dst, k); } -static void rms_norm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, cudaStream_t stream) { +static void norm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % WARP_SIZE == 0); const dim3 block_dims(WARP_SIZE, 1, 1); - rms_norm_f32<<>>(x, dst, ncols); + norm_f32<<>>(x, dst, ncols); +} + +static void rms_norm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float eps, cudaStream_t stream) { + GGML_ASSERT(ncols % WARP_SIZE == 0); + const dim3 block_dims(WARP_SIZE, 1, 1); + rms_norm_f32<<>>(x, dst, ncols, eps); +} + +static void quantize_row_q8_1_cuda(const float * x, void * vy, const int kx, const int ky, const int kx_padded, cudaStream_t stream) { + const int block_num_x = (kx_padded + CUDA_QUANTIZE_BLOCK_SIZE - 1) / CUDA_QUANTIZE_BLOCK_SIZE; + const dim3 num_blocks(block_num_x, ky, 1); + const dim3 block_size(CUDA_DEQUANTIZE_BLOCK_SIZE, 1, 1); + quantize_q8_1<<>>(x, vy, kx, kx_padded); } static void dequantize_row_q4_0_cuda(const void * vx, float * y, const int k, cudaStream_t stream) { @@ -1613,45 +4271,45 @@ static void dequantize_row_q6_K_cuda(const void * vx, float * y, const int k, cu static void dequantize_mul_mat_vec_q4_0_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0); - const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y; + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; const dim3 block_nums(1, block_num_y, 1); - const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); dequantize_mul_mat_vec <<>>(vx, y, dst, ncols, nrows); } static void dequantize_mul_mat_vec_q4_1_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0); - const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y; + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; const dim3 block_nums(1, block_num_y, 1); - const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); dequantize_mul_mat_vec <<>>(vx, y, dst, ncols, nrows); } static void dequantize_mul_mat_vec_q5_0_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0); - const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y; + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; const dim3 block_nums(1, block_num_y, 1); - const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); dequantize_mul_mat_vec <<>>(vx, y, dst, ncols, nrows); } static void dequantize_mul_mat_vec_q5_1_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0); - const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y; + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; const dim3 block_nums(1, block_num_y, 1); - const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); dequantize_mul_mat_vec <<>>(vx, y, dst, ncols, nrows); } static void dequantize_mul_mat_vec_q8_0_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0); - const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y; + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; const dim3 block_nums(1, block_num_y, 1); - const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); dequantize_mul_mat_vec <<>>(vx, y, dst, ncols, nrows); } @@ -1698,6 +4356,96 @@ static void dequantize_mul_mat_vec_q6_K_cuda(const void * vx, const float * y, f dequantize_mul_mat_vec_q6_k<<>>(vx, y, dst, ncols, nrows); } +static void mul_mat_vec_q4_0_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK4_0 == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q4_1_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK4_1 == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q5_0_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK5_0 == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q5_1_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK5_1 == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q8_0_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK8_0 == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q2_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK_K == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q3_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK_K == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q4_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK_K == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q5_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK_K == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + +static void mul_mat_vec_q6_K_q8_1_cuda(const void * vx, const void * vy, float * dst, const int ncols, const int nrows, cudaStream_t stream) { + GGML_ASSERT(ncols % QK_K == 0); + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; + const dim3 block_nums(1, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); + mul_mat_vec_q + <<>>(vx, vy, dst, ncols, nrows); +} + static void convert_fp16_to_fp32_cuda(const void * vx, float * y, const int k, cudaStream_t stream) { const int num_blocks = (k + CUDA_DEQUANTIZE_BLOCK_SIZE - 1) / CUDA_DEQUANTIZE_BLOCK_SIZE; dequantize_block<1, 1, convert_f16><<>>(vx, y, k); @@ -1705,9 +4453,9 @@ static void convert_fp16_to_fp32_cuda(const void * vx, float * y, const int k, c static void convert_mul_mat_vec_f16_cuda(const void * vx, const dfloat * y, float * dst, const int ncols, const int nrows, cudaStream_t stream) { GGML_ASSERT(ncols % GGML_CUDA_DMMV_X == 0); - const int block_num_y = (nrows + GGML_CUDA_DMMV_Y - 1) / GGML_CUDA_DMMV_Y; + const int block_num_y = (nrows + GGML_CUDA_MMV_Y - 1) / GGML_CUDA_MMV_Y; const dim3 block_nums(1, block_num_y, 1); - const dim3 block_dims(WARP_SIZE, GGML_CUDA_DMMV_Y, 1); + const dim3 block_dims(WARP_SIZE, GGML_CUDA_MMV_Y, 1); dequantize_mul_mat_vec<1, 1, convert_f16> <<>>(vx, y, dst, ncols, nrows); } @@ -1741,20 +4489,396 @@ static to_fp32_cuda_t ggml_get_to_fp32_cuda(ggml_type type) { } } -static void ggml_mul_mat_p021_f16_f32_cuda(const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, const int nchannels_x, cudaStream_t stream) { - const dim3 block_nums(1, nrows_x, nchannels_x); +static void ggml_mul_mat_q4_0_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q4_0_AMPERE; + mmq_y = MMQ_Y_Q4_0_AMPERE; + nwarps = NWARPS_Q4_0_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q4_0_PASCAL; + mmq_y = MMQ_Y_Q4_0_PASCAL; + nwarps = NWARPS_Q4_0_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q4_0<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q4_0<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q4_1_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q4_1_AMPERE; + mmq_y = MMQ_Y_Q4_1_AMPERE; + nwarps = NWARPS_Q4_1_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q4_1_PASCAL; + mmq_y = MMQ_Y_Q4_1_PASCAL; + nwarps = NWARPS_Q4_1_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q4_1<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q4_1<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q5_0_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q5_0_AMPERE; + mmq_y = MMQ_Y_Q5_0_AMPERE; + nwarps = NWARPS_Q5_0_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q5_0_PASCAL; + mmq_y = MMQ_Y_Q5_0_PASCAL; + nwarps = NWARPS_Q5_0_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q5_0<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q5_0<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q5_1_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q5_1_AMPERE; + mmq_y = MMQ_Y_Q5_1_AMPERE; + nwarps = NWARPS_Q5_1_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q5_1_PASCAL; + mmq_y = MMQ_Y_Q5_1_PASCAL; + nwarps = NWARPS_Q5_1_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q5_1<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q5_1<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q8_0_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q8_0_AMPERE; + mmq_y = MMQ_Y_Q8_0_AMPERE; + nwarps = NWARPS_Q8_0_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q8_0_PASCAL; + mmq_y = MMQ_Y_Q8_0_PASCAL; + nwarps = NWARPS_Q8_0_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q8_0<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q8_0<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q2_K_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q2_K_AMPERE; + mmq_y = MMQ_Y_Q2_K_AMPERE; + nwarps = NWARPS_Q2_K_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q2_K_PASCAL; + mmq_y = MMQ_Y_Q2_K_PASCAL; + nwarps = NWARPS_Q2_K_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q2_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q2_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q3_K_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + +#if QK_K == 256 + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q3_K_AMPERE; + mmq_y = MMQ_Y_Q3_K_AMPERE; + nwarps = NWARPS_Q3_K_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q3_K_PASCAL; + mmq_y = MMQ_Y_Q3_K_PASCAL; + nwarps = NWARPS_Q3_K_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q3_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q3_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +#endif +} + +static void ggml_mul_mat_q4_K_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q4_K_AMPERE; + mmq_y = MMQ_Y_Q4_K_AMPERE; + nwarps = NWARPS_Q4_K_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q4_K_PASCAL; + mmq_y = MMQ_Y_Q4_K_PASCAL; + nwarps = NWARPS_Q4_K_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q4_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q4_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q5_K_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q5_K_AMPERE; + mmq_y = MMQ_Y_Q5_K_AMPERE; + nwarps = NWARPS_Q5_K_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q5_K_PASCAL; + mmq_y = MMQ_Y_Q5_K_PASCAL; + nwarps = NWARPS_Q5_K_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q5_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q5_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_q6_K_q8_1_cuda( + const void * vx, const void * vy, float * dst, const int ncols_x, const int nrows_x, + const int ncols_y, const int nrows_y, const int nrows_dst, cudaStream_t stream) { + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + const int compute_capability = g_compute_capabilities[id]; + + int mmq_x, mmq_y, nwarps; + if (compute_capability >= CC_TURING) { + mmq_x = MMQ_X_Q6_K_AMPERE; + mmq_y = MMQ_Y_Q6_K_AMPERE; + nwarps = NWARPS_Q6_K_AMPERE; + } else if (compute_capability >= MIN_CC_DP4A) { + mmq_x = MMQ_X_Q6_K_PASCAL; + mmq_y = MMQ_Y_Q6_K_PASCAL; + nwarps = NWARPS_Q6_K_PASCAL; + } else { + GGML_ASSERT(false); + } + + const int block_num_x = (nrows_x + mmq_y - 1) / mmq_y; + const int block_num_y = (ncols_y + mmq_x - 1) / mmq_x; + const dim3 block_nums(block_num_x, block_num_y, 1); + const dim3 block_dims(WARP_SIZE, nwarps, 1); + + if (nrows_x % mmq_y == 0) { + const bool need_check = false; + mul_mat_q6_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } else { + const bool need_check = true; + mul_mat_q6_K<<>> + (vx, vy, dst, ncols_x, nrows_x, ncols_y, nrows_y, nrows_dst); + } +} + +static void ggml_mul_mat_p021_f16_f32_cuda( + const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, + const int nchannels_x, const int nchannels_y, cudaStream_t stream) { + + const dim3 block_nums(1, nrows_x, nchannels_y); const dim3 block_dims(WARP_SIZE, 1, 1); - mul_mat_p021_f16_f32<<>>(vx, y, dst, ncols_x, nrows_x, nchannels_x); + mul_mat_p021_f16_f32<<>>(vx, y, dst, ncols_x, nrows_x, nchannels_x, nchannels_y); } static void ggml_mul_mat_vec_nc_f16_f32_cuda( const void * vx, const float * y, float * dst, const int ncols_x, const int nrows_x, const int row_stride_x, - const int nchannels_x, const int channel_stride_x, cudaStream_t stream) { + const int nchannels_x, const int nchannels_y, const int channel_stride_x, cudaStream_t stream) { - const dim3 block_nums(1, nrows_x, nchannels_x); + const dim3 block_nums(1, nrows_x, nchannels_y); const dim3 block_dims(WARP_SIZE, 1, 1); mul_mat_vec_nc_f16_f32<<>> - (vx, y, dst, ncols_x, nrows_x, row_stride_x, channel_stride_x); + (vx, y, dst, ncols_x, nrows_x, row_stride_x, channel_stride_x, nchannels_y/nchannels_x); } static void ggml_cpy_f32_f32_cuda( @@ -1782,24 +4906,51 @@ static void scale_f32_cuda(const float * x, float * dst, const float scale, cons scale_f32<<>>(x, dst, scale, k); } -static void rope_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p, const float theta_scale, cudaStream_t stream) { - GGML_ASSERT(nrows % 2 == 0); - const dim3 block_dims(2*CUDA_ROPE_BLOCK_SIZE, 1, 1); +static void rope_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p0, + const float p_delta, const int p_delta_rows, const float theta_scale, cudaStream_t stream) { + GGML_ASSERT(ncols % 2 == 0); + const dim3 block_dims(1, CUDA_ROPE_BLOCK_SIZE, 1); const int num_blocks_x = (ncols + 2*CUDA_ROPE_BLOCK_SIZE - 1) / (2*CUDA_ROPE_BLOCK_SIZE); + const dim3 block_nums(nrows, num_blocks_x, 1); + rope_f32<<>>(x, dst, ncols, p0, p_delta, p_delta_rows, theta_scale); +} + +static void rope_neox_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p0, + const float p_delta, const int p_delta_rows, const float theta_scale, cudaStream_t stream) { + GGML_ASSERT(ncols % 2 == 0); + const dim3 block_dims(1, CUDA_ROPE_BLOCK_SIZE, 1); + const int num_blocks_x = (ncols + 2*CUDA_ROPE_BLOCK_SIZE - 1) / (2*CUDA_ROPE_BLOCK_SIZE); + const dim3 block_nums(nrows, num_blocks_x, 1); + rope_neox_f32<<>>(x, dst, ncols, p0, p_delta, p_delta_rows, theta_scale); +} + +static void rope_glm_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, const float p, const float block_p, const float theta_scale, cudaStream_t stream) { + GGML_ASSERT(nrows % 4 == 0); + const dim3 block_dims(4*CUDA_ROPE_BLOCK_SIZE, 1, 1); + const int num_blocks_x = (ncols + 4*CUDA_ROPE_BLOCK_SIZE - 1) / (4*CUDA_ROPE_BLOCK_SIZE); const dim3 block_nums(num_blocks_x, nrows, 1); - rope_f32<<>>(x, dst, ncols, p, theta_scale); + rope_glm_f32<<>>(x, dst, ncols, p, block_p, theta_scale); +} + +static void alibi_f32_cuda(const float * x, float * dst, const int ncols, const int nrows, + const int k_rows, const int n_heads_log2_floor, const float m0, + const float m1, cudaStream_t stream) { + const dim3 block_dims(CUDA_ALIBI_BLOCK_SIZE, 1, 1); + const int num_blocks_x = (ncols + CUDA_ALIBI_BLOCK_SIZE - 1) / (CUDA_ALIBI_BLOCK_SIZE); + const dim3 block_nums(num_blocks_x, nrows, 1); + alibi_f32<<>>(x, dst, ncols, k_rows, n_heads_log2_floor, m0, m1); } static void diag_mask_inf_f32_cuda(const float * x, float * dst, const int ncols_x, const int nrows_x, const int rows_per_channel, const int n_past, cudaStream_t stream) { - const dim3 block_dims(CUDA_DIAG_MASK_INF_BLOCK_SIZE, 1, 1); + const dim3 block_dims(1, CUDA_DIAG_MASK_INF_BLOCK_SIZE, 1); const int block_num_x = (ncols_x + CUDA_DIAG_MASK_INF_BLOCK_SIZE - 1) / CUDA_DIAG_MASK_INF_BLOCK_SIZE; - const dim3 block_nums(block_num_x, nrows_x, 1); + const dim3 block_nums(nrows_x, block_num_x, 1); diag_mask_inf_f32<<>>(x, dst, ncols_x, rows_per_channel, n_past); } static void soft_max_f32_cuda(const float * x, float * dst, const int ncols_x, const int nrows_x, cudaStream_t stream) { - const dim3 block_dims(WARP_SIZE, 1, 1); - const dim3 block_nums(1, nrows_x, 1); + const dim3 block_dims(1, WARP_SIZE, 1); + const dim3 block_nums(nrows_x, 1, 1); soft_max_f32<<>>(x, dst, ncols_x); } @@ -1832,20 +4983,53 @@ static void * ggml_cuda_pool_malloc(size_t size, size_t * actual_size) { scoped_spin_lock lock(g_cuda_pool_lock); int id; CUDA_CHECK(cudaGetDevice(&id)); - +#ifdef DEBUG_CUDA_MALLOC + int nnz = 0; + size_t max_size = 0, tot_size = 0; +#endif + size_t best_diff = 1ull << 36; + int ibest = -1; for (int i = 0; i < MAX_CUDA_BUFFERS; ++i) { cuda_buffer& b = g_cuda_buffer_pool[id][i]; - if (b.size >= size && b.ptr != nullptr) { - void * ptr = b.ptr; - *actual_size = b.size; - b.ptr = nullptr; - b.size = 0; - return ptr; + if (b.ptr != nullptr) { +#ifdef DEBUG_CUDA_MALLOC + ++nnz; + tot_size += b.size; + if (b.size > max_size) max_size = b.size; +#endif + if (b.size >= size) { + size_t diff = b.size - size; + if (diff < best_diff) { + best_diff = diff; + ibest = i; + if (!best_diff) { + void * ptr = b.ptr; + *actual_size = b.size; + b.ptr = nullptr; + b.size = 0; + return ptr; + } + } + } } } + if (ibest >= 0) { + cuda_buffer& b = g_cuda_buffer_pool[id][ibest]; + void * ptr = b.ptr; + *actual_size = b.size; + b.ptr = nullptr; + b.size = 0; + return ptr; + } +#ifdef DEBUG_CUDA_MALLOC + fprintf(stderr, "%s: %d buffers, max_size = %u MB, tot_size = %u MB, requested %u MB\n", __func__, nnz, + (uint32_t)(max_size/1024/1024), (uint32_t)(tot_size/1024/1024), (uint32_t)(size/1024/1024)); +#endif void * ptr; - CUDA_CHECK(cudaMalloc((void **) &ptr, size)); - *actual_size = size; + size_t look_ahead_size = (size_t) (1.05 * size); + look_ahead_size = 256 * ((look_ahead_size + 255)/256); + CUDA_CHECK(cudaMalloc((void **) &ptr, look_ahead_size)); + *actual_size = look_ahead_size; return ptr; } @@ -1867,32 +5051,31 @@ static void ggml_cuda_pool_free(void * ptr, size_t size) { } -static void * g_scratch_buffer = nullptr; -static size_t g_scratch_size = 1024*1024*1024; // 1 GB by default -static size_t g_scratch_offset = 0; - -static int g_device_count = -1; -static int g_main_device = 0; -static float g_tensor_split[GGML_CUDA_MAX_DEVICES] = {0}; - -static cublasHandle_t g_cublas_handles[GGML_CUDA_MAX_DEVICES] = {nullptr}; - -static cudaStream_t g_cudaStreams_main[GGML_CUDA_MAX_DEVICES] = { nullptr }; - void ggml_init_cublas() { static bool initialized = false; if (!initialized) { + +#ifdef __HIP_PLATFORM_AMD__ + // Workaround for a rocBLAS bug when using multiple graphics cards: + // https://github.com/ROCmSoftwarePlatform/rocBLAS/issues/1346 + rocblas_initialize(); + CUDA_CHECK(cudaDeviceSynchronize()); +#endif + CUDA_CHECK(cudaGetDeviceCount(&g_device_count)); GGML_ASSERT(g_device_count <= GGML_CUDA_MAX_DEVICES); int64_t total_vram = 0; - fprintf(stderr, "%s: found %d CUDA devices:\n", __func__, g_device_count); + fprintf(stderr, "%s: found %d " GGML_CUDA_NAME " devices:\n", __func__, g_device_count); for (int id = 0; id < g_device_count; ++id) { cudaDeviceProp prop; CUDA_CHECK(cudaGetDeviceProperties(&prop, id)); - fprintf(stderr, " Device %d: %s\n", id, prop.name); + fprintf(stderr, " Device %d: %s, compute capability %d.%d\n", id, prop.name, prop.major, prop.minor); + g_tensor_split[id] = total_vram; total_vram += prop.totalGlobalMem; + + g_compute_capabilities[id] = 100*prop.major + 10*prop.minor; } for (int id = 0; id < g_device_count; ++id) { g_tensor_split[id] /= total_vram; @@ -1917,6 +5100,9 @@ void ggml_init_cublas() { } void ggml_cuda_set_tensor_split(const float * tensor_split) { + if (tensor_split == nullptr) { + return; + } bool all_zero = true; for (int i = 0; i < g_device_count; ++i) { if (tensor_split[i] != 0.0f) { @@ -2013,16 +5199,19 @@ inline void ggml_cuda_op_add( GGML_ASSERT(src0_ddq_i != nullptr || src0_ddf_i != nullptr); GGML_ASSERT(src1_ddf_i != nullptr); - GGML_ASSERT(dst_ddf_i != nullptr); + GGML_ASSERT(dst_ddf_i != nullptr); - const int64_t ne0 = src0->ne[0]; + const int64_t ne00 = src0->ne[0]; const int64_t i01_diff = i01_high - i01_low; + const int64_t ne10 = src1->ne[0]; + const int64_t ne11 = src1->ne[1]; + // compute if (src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32) { - add_f32_cuda(src0_ddf_i, src1_ddf_i, dst_ddf_i, ne0*i01_diff, cudaStream_main); + add_f32_cuda(src0_ddf_i, src1_ddf_i, dst_ddf_i, ne00*i01_diff, ne10*ne11, cudaStream_main); } else if (src0->type == GGML_TYPE_F16 && dst->type == GGML_TYPE_F16) { - add_f16_f32_f16_cuda((half *) src0_ddq_i, src1_ddf_i, (half *) dst_ddf_i, ne0*i01_diff, cudaStream_main); + add_f16_f32_f16_cuda((half *) src0_ddq_i, src1_ddf_i, (half *) dst_ddf_i, ne00*i01_diff, cudaStream_main); } else { GGML_ASSERT(false); } @@ -2041,27 +5230,42 @@ inline void ggml_cuda_op_mul( GGML_ASSERT(src0_ddf_i != nullptr); GGML_ASSERT(src1_ddf_i != nullptr); - GGML_ASSERT(dst_ddf_i != nullptr); + GGML_ASSERT(dst_ddf_i != nullptr); const int64_t ne00 = src0->ne[0]; + const int64_t i01_diff = i01_high - i01_low; const int64_t ne10 = src1->ne[0]; const int64_t ne11 = src1->ne[1]; - for (int64_t i01 = i01_low; i01 < i01_high; i01++) { - const int64_t i11 = i1*ne11 + i01%ne11; // broadcast src1 across src0 - - float * src0_ddf_i01 = src0_ddf_i + i01*ne00; - float * src1_ddf_i01 = src1_ddf_i + i11*ne10; - float * dst_ddf_i01 = dst_ddf_i + i01*ne00; - - // compute - mul_f32_cuda(src0_ddf_i01, src1_ddf_i01, dst_ddf_i01, ne00, ne10, cudaStream_main); - } + mul_f32_cuda(src0_ddf_i, src1_ddf_i, dst_ddf_i, ne00*i01_diff, ne10*ne11, cudaStream_main); (void) dst; (void) src0_ddq_i; (void) i02; + (void) i1; +} + +inline void ggml_cuda_op_gelu( + const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, + float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, + cudaStream_t & cudaStream_main){ + + GGML_ASSERT(src0_ddf_i != nullptr); + GGML_ASSERT(dst_ddf_i != nullptr); + + const int64_t ne00 = src0->ne[0]; + const int64_t i01_diff = i01_high - i01_low; + + // compute + gelu_f32_cuda(src0_ddf_i, dst_ddf_i, ne00*i01_diff, cudaStream_main); + + (void) src1; + (void) dst; + (void) src0_ddq_i; + (void) src1_ddf_i; + (void) i02; + (void) i1; } inline void ggml_cuda_op_silu( @@ -2086,7 +5290,7 @@ inline void ggml_cuda_op_silu( (void) i1; } -inline void ggml_cuda_op_rms_norm( +inline void ggml_cuda_op_norm( const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, cudaStream_t & cudaStream_main){ @@ -2098,7 +5302,7 @@ inline void ggml_cuda_op_rms_norm( const int64_t i01_diff = i01_high - i01_low; // compute - rms_norm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, cudaStream_main); + norm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, cudaStream_main); (void) src1; (void) dst; @@ -2108,7 +5312,140 @@ inline void ggml_cuda_op_rms_norm( (void) i1; } -inline void ggml_cuda_op_dequantize_mul_mat_vec( +inline void ggml_cuda_op_rms_norm( + const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, + float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, + cudaStream_t & cudaStream_main){ + + GGML_ASSERT(src0_ddf_i != nullptr); + GGML_ASSERT(dst_ddf_i != nullptr); + + const int64_t ne00 = src0->ne[0]; + const int64_t i01_diff = i01_high - i01_low; + + float eps; + memcpy(&eps, dst->op_params, sizeof(float)); + + // compute + rms_norm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, eps, cudaStream_main); + + (void) src1; + (void) dst; + (void) src0_ddq_i; + (void) src1_ddf_i; + (void) i02; + (void) i1; +} + +inline void ggml_cuda_op_mul_mat_q( + const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, + float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, + cudaStream_t & cudaStream_main){ + + GGML_ASSERT(src0_ddq_i != nullptr); + GGML_ASSERT(src1_ddf_i != nullptr); + GGML_ASSERT(dst_ddf_i != nullptr); + + const int64_t ne00 = src0->ne[0]; + + const int64_t ne10 = src1->ne[0]; + const int64_t ne11 = src1->ne[1]; + GGML_ASSERT(ne10 % QK8_1 == 0); + + const int64_t ne0 = dst->ne[0]; + + const int64_t i01_diff = i01_high - i01_low; + + int id; + CUDA_CHECK(cudaGetDevice(&id)); + + // the main device has a larger memory buffer to hold the results from all GPUs + // nrows_dst == nrows of the matrix that the dequantize_mul_mat kernel writes into + const int64_t nrows_dst = dst->backend == GGML_BACKEND_GPU && id == g_main_device ? ne0 : i01_diff; + + const int64_t padded_row_size = ne10 % MATRIX_ROW_PADDING == 0 ? + ne10 : ne10 - ne10 % MATRIX_ROW_PADDING + MATRIX_ROW_PADDING; + size_t as; + void * src1_q8_1 = ggml_cuda_pool_malloc(padded_row_size*ne11*sizeof(block_q8_1)/QK8_1, &as); + quantize_row_q8_1_cuda(src1_ddf_i, src1_q8_1, ne10, ne11, padded_row_size, cudaStream_main); + + switch (src0->type) { + case GGML_TYPE_Q4_0: + ggml_mul_mat_q4_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q4_1: + ggml_mul_mat_q4_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q5_0: + ggml_mul_mat_q5_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q5_1: + ggml_mul_mat_q5_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q8_0: + ggml_mul_mat_q8_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q2_K: + ggml_mul_mat_q2_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q3_K: + ggml_mul_mat_q3_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q4_K: + ggml_mul_mat_q4_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q5_K: + ggml_mul_mat_q5_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + case GGML_TYPE_Q6_K: + ggml_mul_mat_q6_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, i01_diff, ne11, padded_row_size, nrows_dst, cudaStream_main); + break; + default: + GGML_ASSERT(false); + break; + } + + ggml_cuda_pool_free(src1_q8_1, as); + + (void) src1; + (void) dst; + (void) src0_ddf_i; + (void) i02; + (void) i1; +} + +static int64_t get_row_rounding(ggml_type type) { + int max_compute_capability = INT_MIN; + for (int id = 0; id < g_device_count; ++id) { + if (max_compute_capability < g_compute_capabilities[id] + && g_tensor_split[id] < (id + 1 < g_device_count ? g_tensor_split[id + 1] : 1.0f)) { + max_compute_capability = g_compute_capabilities[id]; + } + } + + switch(type) { + case GGML_TYPE_Q4_0: + case GGML_TYPE_Q4_1: + return max_compute_capability >= CC_TURING ? 128 : 64; + case GGML_TYPE_Q5_0: + case GGML_TYPE_Q5_1: + case GGML_TYPE_Q8_0: + return 64; + case GGML_TYPE_F16: + return 1; + case GGML_TYPE_Q2_K: + case GGML_TYPE_Q3_K: + case GGML_TYPE_Q4_K: + case GGML_TYPE_Q5_K: + return max_compute_capability >= CC_TURING ? 128 : 64; + case GGML_TYPE_Q6_K: + return 64; + default: + GGML_ASSERT(false); + } +} + +inline void ggml_cuda_op_mul_mat_vec( const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, cudaStream_t & cudaStream_main){ @@ -2120,69 +5457,140 @@ inline void ggml_cuda_op_dequantize_mul_mat_vec( const int64_t ne00 = src0->ne[0]; const int64_t nrows = i01_high - i01_low; -// on some GPUs it is faster to convert src1 to half and to use half precision intrinsics -#ifdef GGML_CUDA_DMMV_F16 - size_t ash; - dfloat * src1_dfloat = nullptr; // dfloat == half - - bool src1_convert_f16 = src0->type == GGML_TYPE_Q4_0 || src0->type == GGML_TYPE_Q4_1 || - src0->type == GGML_TYPE_Q5_0 || src0->type == GGML_TYPE_Q5_1 || - src0->type == GGML_TYPE_Q8_0 || src0->type == GGML_TYPE_F16; - - if (src1_convert_f16) { - src1_dfloat = (half *) ggml_cuda_pool_malloc(ne00*sizeof(half), &ash); - ggml_cpy_f32_f16_cuda((char *) src1_ddf_i, (char *) src1_dfloat, ne00, - ne00, 1, sizeof(float), 0, 0, - ne00, 1, sizeof(half), 0, 0, cudaStream_main); - } +#ifdef GGML_CUDA_FORCE_DMMV + const bool use_mul_mat_vec_q = false; + (void) g_compute_capabilities[0]; #else - dfloat * src1_dfloat = src1_ddf_i; // dfloat == float, no conversion -#endif // GGML_CUDA_DMMV_F16 + int id; + CUDA_CHECK(cudaGetDevice(&id)); - switch (src0->type) { - case GGML_TYPE_Q4_0: - dequantize_mul_mat_vec_q4_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q4_1: - dequantize_mul_mat_vec_q4_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q5_0: - dequantize_mul_mat_vec_q5_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q5_1: - dequantize_mul_mat_vec_q5_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q8_0: - dequantize_mul_mat_vec_q8_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q2_K: - dequantize_mul_mat_vec_q2_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q3_K: - dequantize_mul_mat_vec_q3_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q4_K: - dequantize_mul_mat_vec_q4_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q5_K: - dequantize_mul_mat_vec_q5_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_Q6_K: - dequantize_mul_mat_vec_q6_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - case GGML_TYPE_F16: - convert_mul_mat_vec_f16_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); - break; - default: - GGML_ASSERT(false); - break; - } + bool mul_mat_vec_q_implemented = + src0->type == GGML_TYPE_Q4_0 || + src0->type == GGML_TYPE_Q4_1 || + src0->type == GGML_TYPE_Q5_0 || + src0->type == GGML_TYPE_Q5_1 || + src0->type == GGML_TYPE_Q8_0; +#if QK_K == 256 + mul_mat_vec_q_implemented = mul_mat_vec_q_implemented || + src0->type == GGML_TYPE_Q2_K || + src0->type == GGML_TYPE_Q3_K || + src0->type == GGML_TYPE_Q4_K || + src0->type == GGML_TYPE_Q5_K || + src0->type == GGML_TYPE_Q6_K; +#endif // QK_K == 256 -#ifdef GGML_CUDA_DMMV_F16 - if (src1_convert_f16) { - ggml_cuda_pool_free(src1_dfloat, ash); + const bool use_mul_mat_vec_q = g_compute_capabilities[id] >= MIN_CC_DP4A && mul_mat_vec_q_implemented; +#endif + + if (use_mul_mat_vec_q) { + const int64_t padded_row_size = ne00 % MATRIX_ROW_PADDING == 0 ? + ne00 : ne00 - ne00 % MATRIX_ROW_PADDING + MATRIX_ROW_PADDING; + size_t as; + void * src1_q8_1 = ggml_cuda_pool_malloc(padded_row_size*sizeof(block_q8_1)/QK8_1, &as); + quantize_row_q8_1_cuda(src1_ddf_i, src1_q8_1, ne00, 1, padded_row_size, cudaStream_main); + + switch (src0->type) { + case GGML_TYPE_Q4_0: + mul_mat_vec_q4_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q4_1: + mul_mat_vec_q4_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q5_0: + mul_mat_vec_q5_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q5_1: + mul_mat_vec_q5_1_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q8_0: + mul_mat_vec_q8_0_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q2_K: + mul_mat_vec_q2_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q3_K: + mul_mat_vec_q3_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q4_K: + mul_mat_vec_q4_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q5_K: + mul_mat_vec_q5_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q6_K: + mul_mat_vec_q6_K_q8_1_cuda(src0_ddq_i, src1_q8_1, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + default: + GGML_ASSERT(false); + break; + } + + ggml_cuda_pool_free(src1_q8_1, as); + } else { + // on some GPUs it is faster to convert src1 to half and to use half precision intrinsics +#ifdef GGML_CUDA_F16 + size_t ash; + dfloat * src1_dfloat = nullptr; // dfloat == half + + bool src1_convert_f16 = src0->type == GGML_TYPE_Q4_0 || src0->type == GGML_TYPE_Q4_1 || + src0->type == GGML_TYPE_Q5_0 || src0->type == GGML_TYPE_Q5_1 || + src0->type == GGML_TYPE_Q8_0 || src0->type == GGML_TYPE_F16; + + if (src1_convert_f16) { + src1_dfloat = (half *) ggml_cuda_pool_malloc(ne00*sizeof(half), &ash); + ggml_cpy_f32_f16_cuda((char *) src1_ddf_i, (char *) src1_dfloat, ne00, + ne00, 1, sizeof(float), 0, 0, + ne00, 1, sizeof(half), 0, 0, cudaStream_main); + } +#else + dfloat * src1_dfloat = src1_ddf_i; // dfloat == float, no conversion +#endif // GGML_CUDA_F16 + + switch (src0->type) { + case GGML_TYPE_Q4_0: + dequantize_mul_mat_vec_q4_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q4_1: + dequantize_mul_mat_vec_q4_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q5_0: + dequantize_mul_mat_vec_q5_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q5_1: + dequantize_mul_mat_vec_q5_1_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q8_0: + dequantize_mul_mat_vec_q8_0_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q2_K: + dequantize_mul_mat_vec_q2_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q3_K: + dequantize_mul_mat_vec_q3_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q4_K: + dequantize_mul_mat_vec_q4_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q5_K: + dequantize_mul_mat_vec_q5_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_Q6_K: + dequantize_mul_mat_vec_q6_K_cuda(src0_ddq_i, src1_ddf_i, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + case GGML_TYPE_F16: + convert_mul_mat_vec_f16_cuda(src0_ddq_i, src1_dfloat, dst_ddf_i, ne00, nrows, cudaStream_main); + break; + default: + GGML_ASSERT(false); + break; + } + +#ifdef GGML_CUDA_F16 + if (src1_convert_f16) { + ggml_cuda_pool_free(src1_dfloat, ash); + } +#endif // GGML_CUDA_F16 } -#endif // GGML_CUDA_DMMV_F16 (void) src1; (void) dst; @@ -2241,25 +5649,82 @@ inline void ggml_cuda_op_rope( GGML_ASSERT(dst_ddf_i != nullptr); const int64_t ne00 = src0->ne[0]; + const int64_t ne01 = src0->ne[1]; const int64_t i01_diff = i01_high - i01_low; - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; - GGML_ASSERT(mode == 0); + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_dims = ((int32_t *) dst->op_params)[1]; + const int mode = ((int32_t *) dst->op_params)[2]; + const int n_ctx = ((int32_t *) dst->op_params)[3]; + // RoPE alteration for extended context - const float theta_scale = powf(10000.0, -2.0f/n_dims); - const float p = ((mode & 1) == 0 ? n_past + i02 : i02); + float freq_base, freq_scale; + memcpy(&freq_base, (int32_t *) dst->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float)); + + const float theta_scale = powf(freq_base, -2.0f/n_dims); + + const bool is_neox = mode & 2; + const bool is_glm = mode & 4; // compute - rope_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, p, theta_scale, cudaStream_main); + if (is_glm) { + const float p = (((mode & 1) == 0 ? n_past + i02 : i02)) * freq_scale; + const float id_p = min(p, n_ctx - 2.f); + const float block_p = max(p - (n_ctx - 2.f), 0.f); + rope_glm_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, id_p, block_p, theta_scale, cudaStream_main); + } else if (is_neox) { + GGML_ASSERT(ne00 == n_dims && "ne00 != n_dims is not implemented for CUDA yet"); + const float p0 = (((mode & 1) == 0 ? n_past : 0)) * freq_scale; + rope_neox_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, p0, freq_scale, ne01, theta_scale, cudaStream_main); + } else { + const float p0 = (((mode & 1) == 0 ? n_past : 0)) * freq_scale; + rope_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, p0, freq_scale, ne01, theta_scale, cudaStream_main); + } + (void) src1; (void) dst; (void) src0_ddq_i; (void) src1_ddf_i; (void) i1; } +inline void ggml_cuda_op_alibi( + const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, + float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, + cudaStream_t & cudaStream_main){ + + GGML_ASSERT(src0_ddf_i != nullptr); + GGML_ASSERT(dst_ddf_i != nullptr); + + const int64_t ne00 = src0->ne[0]; + const int64_t ne01 = src0->ne[1]; + const int64_t ne02 = src0->ne[2]; + const int64_t i01_diff = i01_high - i01_low; + + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_head = ((int32_t *) dst->op_params)[1]; + float max_bias; + memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float)); + + GGML_ASSERT(ne01 + n_past == ne00); + GGML_ASSERT(n_head == ne02); + + const int n_heads_log2_floor = 1 << (int) floor(log2(n_head)); + + const float m0 = powf(2.0f, -(max_bias) / n_heads_log2_floor); + const float m1 = powf(2.0f, -(max_bias / 2.0f) / n_heads_log2_floor); + + // compute + alibi_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, ne01, n_heads_log2_floor, m0, m1, cudaStream_main); + + (void) src1; + (void) src0_ddq_i; + (void) src1_ddf_i; + (void) i02; + (void) i1; +} + inline void ggml_cuda_op_diag_mask_inf( const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst, char * src0_ddq_i, float * src0_ddf_i, float * src1_ddf_i, float * dst_ddf_i, int64_t i02, int64_t i01_low, int64_t i01_high, int i1, @@ -2272,11 +5737,12 @@ inline void ggml_cuda_op_diag_mask_inf( const int64_t ne01 = src0->ne[1]; const int64_t i01_diff = i01_high - i01_low; - const int n_past = ((int32_t *) src1->data)[0]; + const int n_past = ((int32_t *) dst->op_params)[0]; // compute diag_mask_inf_f32_cuda(src0_ddf_i, dst_ddf_i, ne00, i01_diff, ne01, n_past, cudaStream_main); + (void) src1; (void) dst; (void) src0_ddq_i; (void) src1_ddf_i; @@ -2344,6 +5810,9 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm const int64_t ne11 = use_src1 ? src1->ne[1] : 1; const int64_t ne12 = use_src1 ? src1->ne[2] : 1; const int64_t ne13 = use_src1 ? src1->ne[3] : 1; + const int64_t nrows1 = use_src1 ? ggml_nrows(src1) : 1; + + GGML_ASSERT(ne03 == ne13); const int64_t ne0 = dst->ne[0]; const int64_t ne1 = dst->ne[1]; @@ -2355,12 +5824,19 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm GGML_ASSERT(!use_src1 || src1->backend != GGML_BACKEND_GPU_SPLIT); // strides for iteration over dims 3 and 2 - const int64_t num_iters = flatten_rows ? 1 : ne02 * ne03; - const int64_t stride_mod = flatten_rows ? ne02 * ne03 : 1; + const int64_t num_iters_0 = ne02 >= ne12 ? ne02*ne03 : ne12*ne13; + const int64_t num_iters = flatten_rows ? 1 : num_iters_0; + const int64_t stride_mod = flatten_rows ? num_iters_0 : 1; const int64_t src0_stride = ne00 * ne01 * stride_mod; const int64_t src1_stride = ne10 * ne11 * stride_mod; const int64_t dst_stride = ne0 * ne1 * stride_mod; + const int64_t rows_per_iter = flatten_rows ? nrows0 : ne01; + const int64_t i03_max = flatten_rows ? 1 : ne03; + const int64_t i02_max = flatten_rows ? 1 : (ne02 >= ne12 ? ne02 : ne12); + const int64_t i02_divisor = ne02 >= ne12 ? 1 : ne12 / ne02; + GGML_ASSERT(!(flatten_rows && ne02 < ne12)); + const size_t src0_ts = ggml_type_size(src0->type); const size_t src0_bs = ggml_blck_size(src0->type); @@ -2377,6 +5853,7 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm dst->op == GGML_OP_SCALE || dst->op == GGML_OP_DIAG_MASK_INF || dst->op == GGML_OP_ROPE); const bool split = src0->backend == GGML_BACKEND_GPU_SPLIT; + GGML_ASSERT(!(split && ne02 < ne12)); const to_fp32_cuda_t to_fp32_cuda = ggml_get_to_fp32_cuda(src0->type); @@ -2409,11 +5886,20 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm int64_t row_low, row_high; if (split) { + const int64_t rounding = get_row_rounding(src0->type); + row_low = id == 0 ? 0 : nrows0*g_tensor_split[id]; - row_high = id == g_device_count - 1 ? nrows0 : nrows0*g_tensor_split[id + 1]; + row_low -= row_low % rounding; + + if (id == g_device_count - 1) { + row_high = nrows0; + } else { + row_high = nrows0*g_tensor_split[id + 1]; + row_high -= row_high % rounding; + } } else { row_low = 0; - row_high = nrows0; + row_high = nrows0*i02_divisor; } if (row_low == row_high) { continue; @@ -2461,16 +5947,12 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm dst_ddf[id] = (float *) ggml_cuda_pool_malloc(size_dst_ddf, &dst_asf[id]); } - const int64_t i03_max = flatten_rows ? 1 : ne03; - const int64_t i02_max = flatten_rows ? 1 : ne02; - const int64_t rows_per_iter = flatten_rows ? nrows0 : ne01; - for (int64_t i03 = 0; i03 < i03_max; i03++) { const int64_t i13 = i03 % ne13; for (int64_t i02 = 0; i02 < i02_max; i02++) { const int64_t i12 = i02 % ne12; - const int64_t i0 = i03*ne02 + i02; + const int64_t i0 = i03*i02_max + i02; // i0 values that contain the lower/upper rows for a split tensor when using multiple GPUs const int64_t i0_offset_low = row_low/rows_per_iter; @@ -2504,10 +5986,10 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm const int64_t i11 = i13*ne12 + i12; // for split tensors the data begins at i0 == i0_offset_low - char * src0_ddq_i = src0_ddq[id] + (i0 - i0_offset_low)*src0_stride*src0_ts/src0_bs; - float * src0_ddf_i = src0_ddf[id] + (i0 - i0_offset_low)*src0_stride; + char * src0_ddq_i = src0_ddq[id] + (i0/i02_divisor - i0_offset_low)*src0_stride*src0_ts/src0_bs; + float * src0_ddf_i = src0_ddf[id] + (i0/i02_divisor - i0_offset_low)*src0_stride; float * src1_ddf_i = src1_ddf[id] + i11*src1_stride; - float * dst_ddf_i = dst_ddf[id] + (i0 - i0_offset_low)*dst_stride; + float * dst_ddf_i = dst_ddf[id] + (i0 - i0_offset_low)*dst_stride; // for split tensors the data pointer needs to be rounded down // to the bin edge for i03, i02 bins beyond the first @@ -2546,11 +6028,11 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm } } - if (!src0_on_device || !src0_is_contiguous) { + if ((!src0_on_device || !src0_is_contiguous) && i02 % i02_divisor == 0) { if (src0_is_f32) { - CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddf_i, src0, i03, i02, i01_low, i01_high, cudaStream_main)); + CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddf_i, src0, i03, i02/i02_divisor, i01_low, i01_high, cudaStream_main)); } else { - CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddq_i, src0, i03, i02, i01_low, i01_high, cudaStream_main)); + CUDA_CHECK(ggml_cuda_cpy_tensor_2d(src0_ddq_i, src0, i03, i02/i02_divisor, i01_low, i01_high, cudaStream_main)); } } @@ -2580,13 +6062,12 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm if (split) { // src0 = weight matrix is saved as a transposed matrix for better memory layout. // dst is NOT transposed. - // The outputs of cuBLAS matrix matrix multiplications can therefore NOT simply be concatenated for >1 GPU. + // The outputs of matrix matrix multiplications can therefore NOT simply be concatenated for >1 GPU. // Instead they need to be copied to the correct slice in ne0 = dst row index. // If dst is a vector with ne0 == 1 then you don't have to do this but it still produces correct results. - for (int64_t j = 0; j < ne1; ++j) { - float * dhf_dst_i = (float *) ((char *) dst_off_device + (j*ne0 + i01_low)*sizeof(float) + i02*nb2 + i03*nb3); - CUDA_CHECK(cudaMemcpyAsync(dhf_dst_i, dst_ddf_i + j*i01_diff, i01_diff*sizeof(float), kind, cudaStream_main)); - } + float * dhf_dst_i = (float *) ((char *) dst_off_device + i01_low*sizeof(float) + i02*nb2 + i03*nb3); + CUDA_CHECK(cudaMemcpy2DAsync(dhf_dst_i, ne0*sizeof(float), dst_ddf_i, i01_diff*sizeof(float), + i01_diff*sizeof(float), ne1, kind, cudaStream_main)); } else { float * dhf_dst_i = (float *) ((char *) dst_off_device + i02*nb2 + i03*nb3); CUDA_CHECK(cudaMemcpyAsync(dhf_dst_i, dst_ddf_i, dst_stride*sizeof(float), kind, cudaStream_main)); @@ -2627,7 +6108,7 @@ static void ggml_cuda_op(const ggml_tensor * src0, const ggml_tensor * src1, ggm if (split && g_device_count > 1) { CUDA_CHECK(cudaSetDevice(g_main_device)); for (int id = 0; id < g_device_count; ++id) { - if (id != g_main_device) { + if (id != g_main_device && src0_extra->events[id]) { CUDA_CHECK(cudaStreamWaitEvent(g_cudaStreams_main[g_main_device], src0_extra->events[id])); } } @@ -2655,11 +6136,21 @@ void ggml_cuda_mul(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tens ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul, true, false); // TODO ggml_cuda_op needs modification for flatten } +void ggml_cuda_gelu(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { + GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_gelu, true, true); +} + void ggml_cuda_silu(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); ggml_cuda_op(src0, src1, dst, ggml_cuda_op_silu, true, true); } +void ggml_cuda_norm(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { + GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_norm, true, true); +} + void ggml_cuda_rms_norm(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); ggml_cuda_op(src0, src1, dst, ggml_cuda_op_rms_norm, true, true); @@ -2694,6 +6185,8 @@ void ggml_cuda_mul_mat_vec_p021(const ggml_tensor * src0, const ggml_tensor * sr const int64_t ne01 = src0->ne[1]; const int64_t ne02 = src0->ne[2]; + const int64_t ne12 = src1->ne[2]; + CUDA_CHECK(cudaSetDevice(g_main_device)); cudaStream_t cudaStream_main = g_cudaStreams_main[g_main_device]; @@ -2706,7 +6199,7 @@ void ggml_cuda_mul_mat_vec_p021(const ggml_tensor * src0, const ggml_tensor * sr struct ggml_tensor_extra_gpu * dst_extra = (ggml_tensor_extra_gpu *) dst->extra; float * dst_ddf = (float *) dst_extra->data_device[g_main_device]; - ggml_mul_mat_p021_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, ne02, cudaStream_main); + ggml_mul_mat_p021_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, ne02, ne12, cudaStream_main); } void ggml_cuda_mul_mat_vec_nc(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst){ @@ -2720,6 +6213,8 @@ void ggml_cuda_mul_mat_vec_nc(const ggml_tensor * src0, const ggml_tensor * src1 const int64_t ne01 = src0->ne[1]; const int64_t ne02 = src0->ne[2]; + const int64_t ne12 = src1->ne[2]; + const int64_t nb01 = src0->nb[1]; const int64_t nb02 = src0->nb[2]; @@ -2738,7 +6233,7 @@ void ggml_cuda_mul_mat_vec_nc(const ggml_tensor * src0, const ggml_tensor * src1 const int row_stride_x = nb01 / sizeof(half); const int channel_stride_x = nb02 / sizeof(half); - ggml_mul_mat_vec_nc_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, row_stride_x, ne02, channel_stride_x, cudaStream_main); + ggml_mul_mat_vec_nc_f16_f32_cuda(src0_ddq, src1_ddf, dst_ddf, ne00, ne01, row_stride_x, ne02, ne12, channel_stride_x, cudaStream_main); } void ggml_cuda_mul_mat(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { @@ -2752,10 +6247,22 @@ void ggml_cuda_mul_mat(const ggml_tensor * src0, const ggml_tensor * src1, ggml_ }else if (src0->type == GGML_TYPE_F32) { ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_cublas, true, false); } else if (ggml_is_quantized(src0->type) || src0->type == GGML_TYPE_F16) { - if (src1->ne[1] == 1 && src0->ne[0] % GGML_CUDA_DMMV_X == 0 && src0->ne[1] % GGML_CUDA_DMMV_Y == 0) { - ggml_cuda_op(src0, src1, dst, ggml_cuda_op_dequantize_mul_mat_vec, false, false); + if (src1->ne[1] == 1 && src0->ne[0] % GGML_CUDA_DMMV_X == 0) { + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_vec, false, false); } else { - ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_cublas, true, false); + int min_compute_capability = INT_MAX; + for (int id = 0; id < g_device_count; ++id) { + if (min_compute_capability > g_compute_capabilities[id] + && g_tensor_split[id] < (id + 1 < g_device_count ? g_tensor_split[id + 1] : 1.0f)) { + min_compute_capability = g_compute_capabilities[id]; + } + } + + if (g_mul_mat_q && ggml_is_quantized(src0->type) && min_compute_capability >= MIN_CC_DP4A) { + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_q, false, false); + } else { + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_mul_mat_cublas, true, false); + } } } else { GGML_ASSERT(false); @@ -2815,6 +6322,11 @@ void ggml_cuda_cpy(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tens (void) dst; } +void ggml_cuda_dup(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { + ggml_cuda_cpy(src0, dst, nullptr); + (void) src1; +} + void ggml_cuda_diag_mask_inf(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); ggml_cuda_op(src0, src1, dst, ggml_cuda_op_diag_mask_inf, true, true); @@ -2827,7 +6339,17 @@ void ggml_cuda_soft_max(const ggml_tensor * src0, const ggml_tensor * src1, ggml void ggml_cuda_rope(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); - ggml_cuda_op(src0, src1, dst, ggml_cuda_op_rope, true, false); // FIXME flatten changes results + GGML_ASSERT(ggml_is_contiguous(src0)); // TODO: this restriction is temporary until non-cont support is implemented + + const int mode = ((int32_t *) dst->op_params)[2]; + const bool is_glm = mode & 4; + + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_rope, true, !is_glm); // flatten support not implemented for glm +} + +void ggml_cuda_alibi(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { + GGML_ASSERT(src0->type == GGML_TYPE_F32 && dst->type == GGML_TYPE_F32); + ggml_cuda_op(src0, src1, dst, ggml_cuda_op_alibi, true, true); } void ggml_cuda_nop(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tensor * dst) { @@ -2838,7 +6360,11 @@ void ggml_cuda_nop(const ggml_tensor * src0, const ggml_tensor * src1, ggml_tens void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) { int nrows = ggml_nrows(tensor); + + const int64_t ne0 = tensor->ne[0]; + const size_t nb1 = tensor->nb[1]; + ggml_backend backend = tensor->backend; struct ggml_tensor_extra_gpu * extra = new struct ggml_tensor_extra_gpu; memset(extra, 0, sizeof(*extra)); @@ -2855,8 +6381,17 @@ void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) { row_low = 0; row_high = nrows; } else if (backend == GGML_BACKEND_GPU_SPLIT) { + const int64_t rounding = get_row_rounding(tensor->type); + row_low = id == 0 ? 0 : nrows*g_tensor_split[id]; - row_high = id == g_device_count - 1 ? nrows : nrows*g_tensor_split[id + 1]; + row_low -= row_low % rounding; + + if (id == g_device_count - 1) { + row_high = nrows; + } else { + row_high = nrows*g_tensor_split[id + 1]; + row_high -= row_high % rounding; + } } else { GGML_ASSERT(false); } @@ -2867,13 +6402,26 @@ void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) { int64_t nrows_split = row_high - row_low; const size_t offset_split = row_low*nb1; - const size_t size = ggml_nbytes_split(tensor, nrows_split); + size_t size = ggml_nbytes_split(tensor, nrows_split); + const size_t original_size = size; - void * buf; + // pad last row to a multiple of 512 elements to avoid out-of-bounds memory accesses + if (ne0 % MATRIX_ROW_PADDING != 0) { + size += (MATRIX_ROW_PADDING - ne0 % MATRIX_ROW_PADDING) + * ggml_type_size(tensor->type)/ggml_blck_size(tensor->type); + } + + char * buf; CUDA_CHECK(cudaMalloc(&buf, size)); - void * buf_host = (char*)data + offset_split; + char * buf_host = (char*)data + offset_split; - cudaMemcpy(buf, buf_host, size, cudaMemcpyHostToDevice); + // set padding to 0 to avoid possible NaN values + if (size > original_size) { + CUDA_CHECK(cudaMemset(buf + original_size, 0, size - original_size)); + } + + + CUDA_CHECK(cudaMemcpy(buf, buf_host, original_size, cudaMemcpyHostToDevice)); extra->data_device[id] = buf; @@ -2886,7 +6434,7 @@ void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor) { } void ggml_cuda_free_data(struct ggml_tensor * tensor) { - if (tensor->backend != GGML_BACKEND_GPU && tensor->backend != GGML_BACKEND_GPU_SPLIT) { + if (!tensor || (tensor->backend != GGML_BACKEND_GPU && tensor->backend != GGML_BACKEND_GPU_SPLIT) ) { return; } @@ -2907,43 +6455,65 @@ void ggml_cuda_free_data(struct ggml_tensor * tensor) { delete extra; } -void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bool force_inplace) { +static struct ggml_tensor_extra_gpu * g_temp_tensor_extras = nullptr; +static size_t g_temp_tensor_extra_index = 0; + +static struct ggml_tensor_extra_gpu * ggml_cuda_alloc_temp_tensor_extra() { + if (g_temp_tensor_extras == nullptr) { + g_temp_tensor_extras = new ggml_tensor_extra_gpu[GGML_MAX_NODES]; + } + + size_t alloc_index = g_temp_tensor_extra_index; + g_temp_tensor_extra_index = (g_temp_tensor_extra_index + 1) % GGML_MAX_NODES; + struct ggml_tensor_extra_gpu * extra = &g_temp_tensor_extras[alloc_index]; + memset(extra, 0, sizeof(*extra)); + + return extra; +} + +void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bool force_inplace, bool no_alloc) { if (scratch && g_scratch_size == 0) { return; } // recursively assign CUDA buffers until a compute tensor is found - if (tensor->src0 != nullptr && tensor->src0->backend == GGML_BACKEND_CPU) { - const ggml_op src0_op = tensor->src0->op; - if (src0_op == GGML_OP_RESHAPE || src0_op == GGML_OP_TRANSPOSE || src0_op == GGML_OP_VIEW) { - ggml_cuda_assign_buffers_impl(tensor->src0, scratch, force_inplace); + if (tensor->src[0] != nullptr && tensor->src[0]->backend == GGML_BACKEND_CPU) { + const ggml_op src0_op = tensor->src[0]->op; + if (src0_op == GGML_OP_RESHAPE || src0_op == GGML_OP_TRANSPOSE || src0_op == GGML_OP_VIEW || src0_op == GGML_OP_PERMUTE) { + ggml_cuda_assign_buffers_impl(tensor->src[0], scratch, force_inplace, no_alloc); } } - if (tensor->op == GGML_OP_CPY && tensor->src1->backend == GGML_BACKEND_CPU) { - ggml_cuda_assign_buffers_impl(tensor->src1, scratch, force_inplace); + if (tensor->op == GGML_OP_CPY && tensor->src[1]->backend == GGML_BACKEND_CPU) { + ggml_cuda_assign_buffers_impl(tensor->src[1], scratch, force_inplace, no_alloc); } tensor->backend = GGML_BACKEND_GPU; - struct ggml_tensor_extra_gpu * extra = new ggml_tensor_extra_gpu; - memset(extra, 0, sizeof(*extra)); - const bool inplace = (tensor->src0 != nullptr && tensor->src0->data == tensor->data) || + if (scratch && no_alloc) { + return; + } + + struct ggml_tensor_extra_gpu * extra; + + const bool inplace = (tensor->src[0] != nullptr && tensor->src[0]->data == tensor->data) || tensor->op == GGML_OP_VIEW || force_inplace; const size_t size = ggml_nbytes(tensor); CUDA_CHECK(cudaSetDevice(g_main_device)); - if (inplace && (tensor->src0->backend == GGML_BACKEND_GPU || tensor->src0->backend == GGML_BACKEND_GPU_SPLIT)) { - struct ggml_tensor_extra_gpu * src0_extra = (ggml_tensor_extra_gpu * ) tensor->src0->extra; + if (inplace && (tensor->src[0]->backend == GGML_BACKEND_GPU || tensor->src[0]->backend == GGML_BACKEND_GPU_SPLIT)) { + struct ggml_tensor_extra_gpu * src0_extra = (ggml_tensor_extra_gpu * ) tensor->src[0]->extra; char * src0_ddc = (char *) src0_extra->data_device[g_main_device]; size_t offset = 0; if (tensor->op == GGML_OP_VIEW) { - memcpy(&offset, tensor->opt[0]->data, sizeof(size_t)); + memcpy(&offset, tensor->op_params, sizeof(size_t)); } + extra = ggml_cuda_alloc_temp_tensor_extra(); extra->data_device[g_main_device] = src0_ddc + offset; } else if (tensor->op == GGML_OP_CPY) { - struct ggml_tensor_extra_gpu * src1_extra = (ggml_tensor_extra_gpu * ) tensor->src1->extra; + struct ggml_tensor_extra_gpu * src1_extra = (ggml_tensor_extra_gpu * ) tensor->src[1]->extra; void * src1_ddv = src1_extra->data_device[g_main_device]; + extra = ggml_cuda_alloc_temp_tensor_extra(); extra->data_device[g_main_device] = src1_ddv; } else if (scratch) { GGML_ASSERT(size <= g_scratch_size); @@ -2956,6 +6526,7 @@ void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bo CUDA_CHECK(cudaMalloc(&data, g_scratch_size)); g_scratch_buffer = data; } + extra = ggml_cuda_alloc_temp_tensor_extra(); extra->data_device[g_main_device] = data + g_scratch_offset; g_scratch_offset += size; @@ -2965,22 +6536,56 @@ void ggml_cuda_assign_buffers_impl(struct ggml_tensor * tensor, bool scratch, bo void * data; CUDA_CHECK(cudaMalloc(&data, size)); CUDA_CHECK(cudaMemset(data, 0, size)); + extra = new ggml_tensor_extra_gpu; + memset(extra, 0, sizeof(*extra)); extra->data_device[g_main_device] = data; } tensor->extra = extra; } +void ggml_cuda_assign_scratch_offset(struct ggml_tensor * tensor, size_t offset) { + if (g_scratch_size == 0) { + return; + } + if (g_scratch_buffer == nullptr) { + CUDA_CHECK(cudaMalloc(&g_scratch_buffer, g_scratch_size)); + } + + struct ggml_tensor_extra_gpu * extra = ggml_cuda_alloc_temp_tensor_extra(); + + const bool inplace = (tensor->src[0] != nullptr && tensor->src[0]->data == tensor->data) || + tensor->op == GGML_OP_VIEW; + + if (inplace && (tensor->src[0]->backend == GGML_BACKEND_GPU || tensor->src[0]->backend == GGML_BACKEND_GPU_SPLIT)) { + struct ggml_tensor_extra_gpu * src0_extra = (ggml_tensor_extra_gpu * ) tensor->src[0]->extra; + char * src0_ddc = (char *) src0_extra->data_device[g_main_device]; + size_t view_offset = 0; + if (tensor->op == GGML_OP_VIEW) { + memcpy(&view_offset, tensor->op_params, sizeof(size_t)); + } + extra->data_device[g_main_device] = src0_ddc + view_offset; + } else { + extra->data_device[g_main_device] = (char *) g_scratch_buffer + offset; + } + + tensor->extra = extra; +} + void ggml_cuda_assign_buffers(struct ggml_tensor * tensor) { - ggml_cuda_assign_buffers_impl(tensor, true, false); + ggml_cuda_assign_buffers_impl(tensor, true, false, false); +} + +void ggml_cuda_assign_buffers_no_alloc(struct ggml_tensor * tensor) { + ggml_cuda_assign_buffers_impl(tensor, true, false, true); } void ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor) { - ggml_cuda_assign_buffers_impl(tensor, false, false); + ggml_cuda_assign_buffers_impl(tensor, false, false, false); } void ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor) { - ggml_cuda_assign_buffers_impl(tensor, false, true); + ggml_cuda_assign_buffers_impl(tensor, false, true, false); } void ggml_cuda_set_main_device(int main_device) { @@ -2997,6 +6602,10 @@ void ggml_cuda_set_main_device(int main_device) { } } +void ggml_cuda_set_mul_mat_q(bool mul_mat_q) { + g_mul_mat_q = mul_mat_q; +} + void ggml_cuda_set_scratch_size(size_t scratch_size) { g_scratch_size = scratch_size; } @@ -3013,10 +6622,16 @@ void ggml_cuda_free_scratch() { bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor){ ggml_cuda_func_t func; const bool any_on_device = tensor->backend == GGML_BACKEND_GPU - || (tensor->src0 != nullptr && (tensor->src0->backend == GGML_BACKEND_GPU || tensor->src0->backend == GGML_BACKEND_GPU_SPLIT)) - || (tensor->src1 != nullptr && tensor->src1->backend == GGML_BACKEND_GPU); + || (tensor->src[0] != nullptr && (tensor->src[0]->backend == GGML_BACKEND_GPU || tensor->src[0]->backend == GGML_BACKEND_GPU_SPLIT)) + || (tensor->src[1] != nullptr && tensor->src[1]->backend == GGML_BACKEND_GPU); switch (tensor->op) { + case GGML_OP_DUP: + if (!any_on_device) { + return false; + } + func = ggml_cuda_dup; + break; case GGML_OP_ADD: if (!any_on_device) { return false; @@ -3029,11 +6644,28 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_ } func = ggml_cuda_mul; break; - case GGML_OP_SILU: + case GGML_OP_UNARY: + switch (ggml_get_unary_op(tensor)) { + case GGML_UNARY_OP_GELU: + if (!any_on_device) { + return false; + } + func = ggml_cuda_gelu; + break; + case GGML_UNARY_OP_SILU: + if (!any_on_device) { + return false; + } + func = ggml_cuda_silu; + break; + default: + return false; + } break; + case GGML_OP_NORM: if (!any_on_device) { return false; } - func = ggml_cuda_silu; + func = ggml_cuda_norm; break; case GGML_OP_RMS_NORM: if (!any_on_device) { @@ -3042,7 +6674,7 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_ func = ggml_cuda_rms_norm; break; case GGML_OP_MUL_MAT: - if (!any_on_device && !ggml_cuda_can_mul_mat(tensor->src0, tensor->src1, tensor)) { + if (!any_on_device && !ggml_cuda_can_mul_mat(tensor->src[0], tensor->src[1], tensor)) { return false; } func = ggml_cuda_mul_mat; @@ -3059,6 +6691,12 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_ } func = ggml_cuda_cpy; break; + case GGML_OP_CONT: + if (!any_on_device) { + return false; + } + func = ggml_cuda_dup; + break; case GGML_OP_RESHAPE: case GGML_OP_VIEW: case GGML_OP_PERMUTE: @@ -3086,6 +6724,12 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_ } func = ggml_cuda_rope; break; + case GGML_OP_ALIBI: + if (!any_on_device) { + return false; + } + func = ggml_cuda_alibi; + break; default: return false; } @@ -3096,6 +6740,18 @@ bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_ if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return true; } - func(tensor->src0, tensor->src1, tensor); + func(tensor->src[0], tensor->src[1], tensor); return true; } + +int ggml_cuda_get_device_count() { + int device_count; + CUDA_CHECK(cudaGetDeviceCount(&device_count)); + return device_count; +} + +void ggml_cuda_get_device_description(int device, char * description, size_t description_size) { + cudaDeviceProp prop; + CUDA_CHECK(cudaGetDeviceProperties(&prop, device)); + snprintf(description, description_size, "%s", prop.name); +} diff --git a/ggml-cuda.h b/ggml-cuda.h index 3c1e8deb..a72e8206 100644 --- a/ggml-cuda.h +++ b/ggml-cuda.h @@ -2,34 +2,44 @@ #include "ggml.h" +#ifdef GGML_USE_HIPBLAS +#define GGML_CUDA_NAME "ROCm" +#define GGML_CUBLAS_NAME "hipBLAS" +#else +#define GGML_CUDA_NAME "CUDA" +#define GGML_CUBLAS_NAME "cuBLAS" +#endif + #ifdef __cplusplus extern "C" { #endif #define GGML_CUDA_MAX_DEVICES 16 -void ggml_init_cublas(void); -void ggml_cuda_set_tensor_split(const float * tensor_split); +GGML_API void ggml_init_cublas(void); +GGML_API void * ggml_cuda_host_malloc(size_t size); +GGML_API void ggml_cuda_host_free(void * ptr); -void ggml_cuda_mul(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst); -bool ggml_cuda_can_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst); -size_t ggml_cuda_mul_mat_get_wsize(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst); -void ggml_cuda_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst, void * wdata, size_t wsize); +GGML_API bool ggml_cuda_can_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst); +GGML_API void ggml_cuda_set_tensor_split(const float * tensor_split); +GGML_API void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor); +GGML_API void ggml_cuda_free_data(struct ggml_tensor * tensor); -// TODO: export these with GGML_API -void * ggml_cuda_host_malloc(size_t size); -void ggml_cuda_host_free(void * ptr); +GGML_API void ggml_cuda_assign_buffers(struct ggml_tensor * tensor); +GGML_API void ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor); +GGML_API void ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor); -void ggml_cuda_transform_tensor(void * data, struct ggml_tensor * tensor); +GGML_API void ggml_cuda_assign_buffers_no_alloc(struct ggml_tensor * tensor); +GGML_API void ggml_cuda_assign_scratch_offset(struct ggml_tensor * tensor, size_t offset); -void ggml_cuda_free_data(struct ggml_tensor * tensor); -void ggml_cuda_assign_buffers(struct ggml_tensor * tensor); -void ggml_cuda_assign_buffers_no_scratch(struct ggml_tensor * tensor); -void ggml_cuda_assign_buffers_force_inplace(struct ggml_tensor * tensor); -void ggml_cuda_set_main_device(int main_device); -void ggml_cuda_set_scratch_size(size_t scratch_size); -void ggml_cuda_free_scratch(void); -bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor); +GGML_API void ggml_cuda_set_main_device(int main_device); +GGML_API void ggml_cuda_set_mul_mat_q(bool mul_mat_q); +GGML_API void ggml_cuda_set_scratch_size(size_t scratch_size); +GGML_API void ggml_cuda_free_scratch(void); +GGML_API bool ggml_cuda_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor); + +GGML_API int ggml_cuda_get_device_count(void); +GGML_API void ggml_cuda_get_device_description(int device, char * description, size_t description_size); #ifdef __cplusplus } diff --git a/ggml-metal.h b/ggml-metal.h index b9e50ac7..fca28d37 100644 --- a/ggml-metal.h +++ b/ggml-metal.h @@ -24,6 +24,7 @@ // max memory buffers that can be mapped to the device #define GGML_METAL_MAX_BUFFERS 16 +#define GGML_METAL_MAX_COMMAND_BUFFERS 32 struct ggml_tensor; struct ggml_cgraph; @@ -34,9 +35,16 @@ extern "C" { struct ggml_metal_context; -struct ggml_metal_context * ggml_metal_init(void); +// number of command buffers to use +struct ggml_metal_context * ggml_metal_init(int n_cb); void ggml_metal_free(struct ggml_metal_context * ctx); +void * ggml_metal_host_malloc(size_t n); +void ggml_metal_host_free (void * data); + +// set the number of command buffers to use +void ggml_metal_set_n_cb(struct ggml_metal_context * ctx, int n_cb); + // creates a mapping between a host memory buffer and a device memory buffer // - make sure to map all buffers used in the graph before calling ggml_metal_graph_compute // - the mapping is used during computation to determine the arguments of the compute kernels @@ -57,6 +65,16 @@ void ggml_metal_set_tensor(struct ggml_metal_context * ctx, struct ggml_tensor * // get data from the device into host memory void ggml_metal_get_tensor(struct ggml_metal_context * ctx, struct ggml_tensor * t); +// try to find operations that can be run concurrently in the graph +// you should run it again if the topology of your graph changes +void ggml_metal_graph_find_concurrency(struct ggml_metal_context * ctx, struct ggml_cgraph * gf, bool check_mem); + +// if the graph has been optimized for concurrently dispatch, return length of the concur_list if optimized +int ggml_metal_if_optimized(struct ggml_metal_context * ctx); + +// output the concur_list for ggml_alloc +int * ggml_metal_get_concur_list(struct ggml_metal_context * ctx); + // same as ggml_graph_compute but uses Metal // creates gf->n_threads command buffers in parallel void ggml_metal_graph_compute(struct ggml_metal_context * ctx, struct ggml_cgraph * gf); diff --git a/ggml-metal.m b/ggml-metal.m index fd69c41f..ad2ee8cf 100644 --- a/ggml-metal.m +++ b/ggml-metal.m @@ -5,7 +5,11 @@ #import #import -#import + +#undef MIN +#undef MAX +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) #ifdef GGML_METAL_NDEBUG #define metal_printf(...) @@ -15,6 +19,8 @@ #define UNUSED(x) (void)(x) +#define GGML_MAX_CONCUR (2*GGML_MAX_NODES) + struct ggml_metal_buffer { const char * name; @@ -25,21 +31,30 @@ struct ggml_metal_buffer { }; struct ggml_metal_context { - float * logits; + int n_cb; id device; id queue; id library; + id command_buffers [GGML_METAL_MAX_COMMAND_BUFFERS]; + id command_encoders[GGML_METAL_MAX_COMMAND_BUFFERS]; + + dispatch_queue_t d_queue; + int n_buffers; struct ggml_metal_buffer buffers[GGML_METAL_MAX_BUFFERS]; + int concur_list[GGML_MAX_CONCUR]; + int concur_list_len; + // custom kernels #define GGML_METAL_DECL_KERNEL(name) \ id function_##name; \ id pipeline_##name GGML_METAL_DECL_KERNEL(add); + GGML_METAL_DECL_KERNEL(add_row); // TODO: avoid this extra kernel, instead extend the "add" kernel to support broadcast GGML_METAL_DECL_KERNEL(mul); GGML_METAL_DECL_KERNEL(mul_row); // TODO: avoid this extra kernel, instead extend the "mul" kernel to support broadcast GGML_METAL_DECL_KERNEL(scale); @@ -51,6 +66,7 @@ struct ggml_metal_context { GGML_METAL_DECL_KERNEL(get_rows_f16); GGML_METAL_DECL_KERNEL(get_rows_q4_0); GGML_METAL_DECL_KERNEL(get_rows_q4_1); + GGML_METAL_DECL_KERNEL(get_rows_q8_0); GGML_METAL_DECL_KERNEL(get_rows_q2_K); GGML_METAL_DECL_KERNEL(get_rows_q3_K); GGML_METAL_DECL_KERNEL(get_rows_q4_K); @@ -61,11 +77,21 @@ struct ggml_metal_context { GGML_METAL_DECL_KERNEL(mul_mat_f16_f32); GGML_METAL_DECL_KERNEL(mul_mat_q4_0_f32); GGML_METAL_DECL_KERNEL(mul_mat_q4_1_f32); + GGML_METAL_DECL_KERNEL(mul_mat_q8_0_f32); GGML_METAL_DECL_KERNEL(mul_mat_q2_K_f32); GGML_METAL_DECL_KERNEL(mul_mat_q3_K_f32); GGML_METAL_DECL_KERNEL(mul_mat_q4_K_f32); GGML_METAL_DECL_KERNEL(mul_mat_q5_K_f32); GGML_METAL_DECL_KERNEL(mul_mat_q6_K_f32); + GGML_METAL_DECL_KERNEL(mul_mm_f16_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q4_0_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q4_1_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q8_0_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q2_K_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q3_K_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q4_K_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q5_K_f32); + GGML_METAL_DECL_KERNEL(mul_mm_q6_K_f32); GGML_METAL_DECL_KERNEL(rope); GGML_METAL_DECL_KERNEL(alibi_f32); GGML_METAL_DECL_KERNEL(cpy_f32_f16); @@ -86,22 +112,18 @@ static NSString * const msl_library_source = @"see metal.metal"; @implementation GGMLMetalClass @end -struct ggml_metal_context * ggml_metal_init(void) { +struct ggml_metal_context * ggml_metal_init(int n_cb) { fprintf(stderr, "%s: allocating\n", __func__); struct ggml_metal_context * ctx = malloc(sizeof(struct ggml_metal_context)); + ctx->n_cb = MIN(n_cb, GGML_METAL_MAX_BUFFERS); ctx->device = MTLCreateSystemDefaultDevice(); ctx->queue = [ctx->device newCommandQueue]; ctx->n_buffers = 0; + ctx->concur_list_len = 0; - // determine if we can use MPS - if (MPSSupportsMTLDevice(ctx->device)) { - fprintf(stderr, "%s: using MPS\n", __func__); - } else { - fprintf(stderr, "%s: not using MPS\n", __func__); - GGML_ASSERT(false && "MPS not supported"); - } + ctx->d_queue = dispatch_queue_create("llama.cpp", DISPATCH_QUEUE_CONCURRENT); #if 0 // compile from source string and show compile log @@ -111,7 +133,7 @@ struct ggml_metal_context * ggml_metal_init(void) { ctx->library = [ctx->device newLibraryWithSource:msl_library_source options:nil error:&error]; if (error) { fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]); - exit(1); + return NULL; } } #else @@ -129,7 +151,7 @@ struct ggml_metal_context * ggml_metal_init(void) { NSString * src = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; if (error) { fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]); - exit(1); + return NULL; } #ifdef GGML_QKK_64 @@ -141,19 +163,27 @@ struct ggml_metal_context * ggml_metal_init(void) { #endif if (error) { fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]); - exit(1); + return NULL; } } #endif // load kernels { + NSError * error = nil; #define GGML_METAL_ADD_KERNEL(name) \ ctx->function_##name = [ctx->library newFunctionWithName:@"kernel_"#name]; \ - ctx->pipeline_##name = [ctx->device newComputePipelineStateWithFunction:ctx->function_##name error:nil]; \ - fprintf(stderr, "%s: loaded %-32s %16p\n", __func__, "kernel_"#name, (void *) ctx->pipeline_##name); + ctx->pipeline_##name = [ctx->device newComputePipelineStateWithFunction:ctx->function_##name error:&error]; \ + fprintf(stderr, "%s: loaded %-32s %16p | th_max = %4d | th_width = %4d\n", __func__, "kernel_"#name, (void *) ctx->pipeline_##name, \ + (int) ctx->pipeline_##name.maxTotalThreadsPerThreadgroup, \ + (int) ctx->pipeline_##name.threadExecutionWidth); \ + if (error) { \ + fprintf(stderr, "%s: load pipeline error: %s\n", __func__, [[error description] UTF8String]); \ + return NULL; \ + } GGML_METAL_ADD_KERNEL(add); + GGML_METAL_ADD_KERNEL(add_row); GGML_METAL_ADD_KERNEL(mul); GGML_METAL_ADD_KERNEL(mul_row); GGML_METAL_ADD_KERNEL(scale); @@ -165,6 +195,7 @@ struct ggml_metal_context * ggml_metal_init(void) { GGML_METAL_ADD_KERNEL(get_rows_f16); GGML_METAL_ADD_KERNEL(get_rows_q4_0); GGML_METAL_ADD_KERNEL(get_rows_q4_1); + GGML_METAL_ADD_KERNEL(get_rows_q8_0); GGML_METAL_ADD_KERNEL(get_rows_q2_K); GGML_METAL_ADD_KERNEL(get_rows_q3_K); GGML_METAL_ADD_KERNEL(get_rows_q4_K); @@ -175,11 +206,21 @@ struct ggml_metal_context * ggml_metal_init(void) { GGML_METAL_ADD_KERNEL(mul_mat_f16_f32); GGML_METAL_ADD_KERNEL(mul_mat_q4_0_f32); GGML_METAL_ADD_KERNEL(mul_mat_q4_1_f32); + GGML_METAL_ADD_KERNEL(mul_mat_q8_0_f32); GGML_METAL_ADD_KERNEL(mul_mat_q2_K_f32); GGML_METAL_ADD_KERNEL(mul_mat_q3_K_f32); GGML_METAL_ADD_KERNEL(mul_mat_q4_K_f32); GGML_METAL_ADD_KERNEL(mul_mat_q5_K_f32); GGML_METAL_ADD_KERNEL(mul_mat_q6_K_f32); + GGML_METAL_ADD_KERNEL(mul_mm_f16_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q4_0_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q8_0_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q4_1_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q2_K_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q3_K_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q4_K_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q5_K_f32); + GGML_METAL_ADD_KERNEL(mul_mm_q6_K_f32); GGML_METAL_ADD_KERNEL(rope); GGML_METAL_ADD_KERNEL(alibi_f32); GGML_METAL_ADD_KERNEL(cpy_f32_f16); @@ -189,12 +230,12 @@ struct ggml_metal_context * ggml_metal_init(void) { #undef GGML_METAL_ADD_KERNEL } - fprintf(stderr, "%s: recommendedMaxWorkingSetSize = %8.2f MB\n", __func__, ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0); - fprintf(stderr, "%s: hasUnifiedMemory = %s\n", __func__, ctx->device.hasUnifiedMemory ? "true" : "false"); + fprintf(stderr, "%s: recommendedMaxWorkingSetSize = %8.2f MB\n", __func__, ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0); + fprintf(stderr, "%s: hasUnifiedMemory = %s\n", __func__, ctx->device.hasUnifiedMemory ? "true" : "false"); if (ctx->device.maxTransferRate != 0) { - fprintf(stderr, "%s: maxTransferRate = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0); + fprintf(stderr, "%s: maxTransferRate = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0); } else { - fprintf(stderr, "%s: maxTransferRate = built-in GPU\n", __func__); + fprintf(stderr, "%s: maxTransferRate = built-in GPU\n", __func__); } return ctx; @@ -202,12 +243,97 @@ struct ggml_metal_context * ggml_metal_init(void) { void ggml_metal_free(struct ggml_metal_context * ctx) { fprintf(stderr, "%s: deallocating\n", __func__); +#define GGML_METAL_DEL_KERNEL(name) \ + [ctx->function_##name release]; \ + [ctx->pipeline_##name release]; + + GGML_METAL_DEL_KERNEL(add); + GGML_METAL_DEL_KERNEL(add_row); + GGML_METAL_DEL_KERNEL(mul); + GGML_METAL_DEL_KERNEL(mul_row); + GGML_METAL_DEL_KERNEL(scale); + GGML_METAL_DEL_KERNEL(silu); + GGML_METAL_DEL_KERNEL(relu); + GGML_METAL_DEL_KERNEL(gelu); + GGML_METAL_DEL_KERNEL(soft_max); + GGML_METAL_DEL_KERNEL(diag_mask_inf); + GGML_METAL_DEL_KERNEL(get_rows_f16); + GGML_METAL_DEL_KERNEL(get_rows_q4_0); + GGML_METAL_DEL_KERNEL(get_rows_q4_1); + GGML_METAL_DEL_KERNEL(get_rows_q8_0); + GGML_METAL_DEL_KERNEL(get_rows_q2_K); + GGML_METAL_DEL_KERNEL(get_rows_q3_K); + GGML_METAL_DEL_KERNEL(get_rows_q4_K); + GGML_METAL_DEL_KERNEL(get_rows_q5_K); + GGML_METAL_DEL_KERNEL(get_rows_q6_K); + GGML_METAL_DEL_KERNEL(rms_norm); + GGML_METAL_DEL_KERNEL(norm); + GGML_METAL_DEL_KERNEL(mul_mat_f16_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q4_0_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q4_1_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q8_0_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q2_K_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q3_K_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q4_K_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q5_K_f32); + GGML_METAL_DEL_KERNEL(mul_mat_q6_K_f32); + GGML_METAL_DEL_KERNEL(mul_mm_f16_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q4_0_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q8_0_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q4_1_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q2_K_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q3_K_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q4_K_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q5_K_f32); + GGML_METAL_DEL_KERNEL(mul_mm_q6_K_f32); + GGML_METAL_DEL_KERNEL(rope); + GGML_METAL_DEL_KERNEL(alibi_f32); + GGML_METAL_DEL_KERNEL(cpy_f32_f16); + GGML_METAL_DEL_KERNEL(cpy_f32_f32); + GGML_METAL_DEL_KERNEL(cpy_f16_f16); + +#undef GGML_METAL_DEL_KERNEL + for (int i = 0; i < ctx->n_buffers; ++i) { [ctx->buffers[i].metal release]; } + + [ctx->library release]; + [ctx->queue release]; + [ctx->device release]; + + dispatch_release(ctx->d_queue); + free(ctx); } +void * ggml_metal_host_malloc(size_t n) { + void * data = NULL; + const int result = posix_memalign((void **) &data, getpagesize(), n); + if (result != 0) { + fprintf(stderr, "%s: error: posix_memalign failed\n", __func__); + return NULL; + } + + return data; +} + +void ggml_metal_host_free(void * data) { + free(data); +} + +void ggml_metal_set_n_cb(struct ggml_metal_context * ctx, int n_cb) { + ctx->n_cb = MIN(n_cb, GGML_METAL_MAX_BUFFERS); +} + +int ggml_metal_if_optimized(struct ggml_metal_context * ctx) { + return ctx->concur_list_len; +} + +int * ggml_metal_get_concur_list(struct ggml_metal_context * ctx) { + return ctx->concur_list; +} + // finds the Metal buffer that contains the tensor data on the GPU device // the assumption is that there is 1-to-1 mapping between the host and device memory buffers, so we can find the // Metal buffer based on the host memory pointer @@ -346,48 +472,154 @@ void ggml_metal_get_tensor( memcpy(t->data, (void *) ((uint8_t *) id_src.contents + offs), ggml_nbytes(t)); } +void ggml_metal_graph_find_concurrency( + struct ggml_metal_context * ctx, + struct ggml_cgraph * gf, bool check_mem) { + int search_depth = gf->n_nodes; //we only find concurrency in this range to avoid wasting too much time + int nodes_unused[GGML_MAX_CONCUR]; + + for (int i = 0; i < GGML_MAX_CONCUR; i++) { ctx->concur_list[i] = 0; } + for (int i = 0; i < gf->n_nodes; i++) { nodes_unused[i] = 1; } + ctx->concur_list_len = 0; + + int n_left = gf->n_nodes; + int n_start = 0; // all nodes before n_start at nodes_unused array have been sorted and store back to ctx->concur_list + int level_pos = 0; // at ctx->concur_list, the last layer (level) ends at level_pos + + while (n_left > 0) { + // number of nodes at a layer (that can be issued concurrently) + int concurrency = 0; + for (int i = n_start; i < ((n_start + search_depth > gf->n_nodes) ? gf->n_nodes : n_start + search_depth); i++) { + if (nodes_unused[i]) { + // if the requirements for gf->nodes[i] are satisfied + int exe_flag = 1; + + // scan all srcs + for (int src_ind = 0; src_ind < GGML_MAX_SRC; src_ind++) { + struct ggml_tensor * src_cur = gf->nodes[i]->src[src_ind]; + if (src_cur) { + // if is leaf nodes it's satisfied. + // TODO: ggml_is_leaf() + if (src_cur->op == GGML_OP_NONE && src_cur->grad == NULL) { + continue; + } + + // otherwise this src should be the output from previous nodes. + int is_found = 0; + + // scan 2*search_depth back because we inserted barrier. + //for (int j = ((level_pos - 2*search_depth) < 0 ? 0 : (level_pos - 2*search_depth)); j < level_pos; j++) { + for (int j = MAX(0, level_pos - 2*search_depth); j < level_pos; j++) { + if (ctx->concur_list[j] >= 0 && gf->nodes[ctx->concur_list[j]] == src_cur) { + is_found = 1; + break; + } + } + if (is_found == 0) { + exe_flag = 0; + break; + } + } + } + if (exe_flag && check_mem) { + // check if nodes[i]'s data will be overwritten by a node before nodes[i]. + // if node[5] and node[3] write to the same memory region, then we can't issue node[5] before node[3] + int64_t data_start = (int64_t) gf->nodes[i]->data; + int64_t length = (int64_t) ggml_nbytes(gf->nodes[i]); + for (int j = n_start; j < i; j++) { + if (nodes_unused[j] && gf->nodes[j]->op != GGML_OP_RESHAPE \ + && gf->nodes[j]->op != GGML_OP_VIEW \ + && gf->nodes[j]->op != GGML_OP_TRANSPOSE \ + && gf->nodes[j]->op != GGML_OP_PERMUTE) { + if (((int64_t)gf->nodes[j]->data) >= data_start + length || \ + ((int64_t)gf->nodes[j]->data) + (int64_t) ggml_nbytes(gf->nodes[j]) <= data_start) { + continue; + } + + exe_flag = 0; + } + } + } + if (exe_flag) { + ctx->concur_list[level_pos + concurrency] = i; + nodes_unused[i] = 0; + concurrency++; + ctx->concur_list_len++; + } + } + } + n_left -= concurrency; + // adding a barrier different layer + ctx->concur_list[level_pos + concurrency] = -1; + ctx->concur_list_len++; + // jump all sorted nodes at nodes_bak + while (!nodes_unused[n_start]) { + n_start++; + } + level_pos += concurrency + 1; + } + + if (ctx->concur_list_len > GGML_MAX_CONCUR) { + fprintf(stderr, "%s: too many elements for metal ctx->concur_list!\n", __func__); + } +} + void ggml_metal_graph_compute( struct ggml_metal_context * ctx, struct ggml_cgraph * gf) { metal_printf("%s: evaluating graph\n", __func__); + @autoreleasepool { + + // if there is ctx->concur_list, dispatch concurrently + // else fallback to serial dispatch + MTLComputePassDescriptor * edesc = MTLComputePassDescriptor.computePassDescriptor; + + const bool has_concur = ctx->concur_list_len && ctx->concur_list_len <= GGML_MAX_CONCUR; + + const int n_nodes = has_concur ? ctx->concur_list_len : gf->n_nodes; + edesc.dispatchType = has_concur ? MTLDispatchTypeConcurrent : MTLDispatchTypeSerial; + // create multiple command buffers and enqueue them // then, we encode the graph into the command buffers in parallel - const int n_cb = gf->n_threads; - - NSMutableArray * command_buffers = [NSMutableArray arrayWithCapacity:n_cb]; + const int n_cb = ctx->n_cb; for (int i = 0; i < n_cb; ++i) { - command_buffers[i] = [ctx->queue commandBuffer]; + ctx->command_buffers[i] = [ctx->queue commandBuffer]; // enqueue the command buffers in order to specify their execution order - [command_buffers[i] enqueue]; + [ctx->command_buffers[i] enqueue]; + + ctx->command_encoders[i] = [ctx->command_buffers[i] computeCommandEncoderWithDescriptor: edesc]; } - // TODO: is this the best way to start threads? - dispatch_queue_t queue = dispatch_queue_create("llama.cpp", DISPATCH_QUEUE_CONCURRENT); - for (int cb_idx = 0; cb_idx < n_cb; ++cb_idx) { - const int n_nodes_per_cb = (gf->n_nodes + n_cb - 1) / n_cb; + const int n_nodes_per_cb = (n_nodes + n_cb - 1) / n_cb; - dispatch_async(queue, ^{ + dispatch_async(ctx->d_queue, ^{ size_t offs_src0 = 0; size_t offs_src1 = 0; size_t offs_dst = 0; - id command_buffer = command_buffers[cb_idx]; - - id encoder = nil; + id command_buffer = ctx->command_buffers[cb_idx]; + id encoder = ctx->command_encoders[cb_idx]; const int node_start = (cb_idx + 0) * n_nodes_per_cb; - const int node_end = (cb_idx == n_cb - 1) ? gf->n_nodes : (cb_idx + 1) * n_nodes_per_cb; + const int node_end = MIN((cb_idx == n_cb - 1) ? n_nodes : (cb_idx + 1) * n_nodes_per_cb, n_nodes); + + for (int ind = node_start; ind < node_end; ++ind) { + const int i = has_concur ? ctx->concur_list[ind] : ind; + + if (i == -1) { + [encoder memoryBarrierWithScope:MTLBarrierScopeBuffers]; + continue; + } - for (int i = node_start; i < node_end; ++i) { metal_printf("%s: encoding node %3d, op = %8s\n", __func__, i, ggml_op_name(gf->nodes[i]->op)); - struct ggml_tensor * src0 = gf->nodes[i]->src0; - struct ggml_tensor * src1 = gf->nodes[i]->src1; + struct ggml_tensor * src0 = gf->nodes[i]->src[0]; + struct ggml_tensor * src1 = gf->nodes[i]->src[1]; struct ggml_tensor * dst = gf->nodes[i]; const int64_t ne00 = src0 ? src0->ne[0] : 0; @@ -443,6 +675,7 @@ void ggml_metal_graph_compute( //} switch (dst->op) { + case GGML_OP_NONE: case GGML_OP_RESHAPE: case GGML_OP_VIEW: case GGML_OP_TRANSPOSE: @@ -452,14 +685,16 @@ void ggml_metal_graph_compute( } break; case GGML_OP_ADD: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; + if (ggml_nelements(src1) == ne10) { + // src1 is a row + [encoder setComputePipelineState:ctx->pipeline_add_row]; + } else { + [encoder setComputePipelineState:ctx->pipeline_add]; } - - [encoder setComputePipelineState:ctx->pipeline_add]; [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; [encoder setBuffer:id_src1 offset:offs_src1 atIndex:1]; [encoder setBuffer:id_dst offset:offs_dst atIndex:2]; + [encoder setBytes:&ne00 length:sizeof(ne00) atIndex:3]; const int64_t n = ggml_nelements(dst); @@ -467,10 +702,6 @@ void ggml_metal_graph_compute( } break; case GGML_OP_MUL: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - if (ggml_nelements(src1) == ne10) { // src1 is a row [encoder setComputePipelineState:ctx->pipeline_mul_row]; @@ -488,10 +719,6 @@ void ggml_metal_graph_compute( } break; case GGML_OP_SCALE: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - const float scale = *(const float *) src1->data; [encoder setComputePipelineState:ctx->pipeline_scale]; @@ -503,54 +730,46 @@ void ggml_metal_graph_compute( [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; } break; - case GGML_OP_SILU: - { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } + case GGML_OP_UNARY: + switch (ggml_get_unary_op(gf->nodes[i])) { + case GGML_UNARY_OP_SILU: + { + [encoder setComputePipelineState:ctx->pipeline_silu]; + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - [encoder setComputePipelineState:ctx->pipeline_silu]; - [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; - [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; + const int64_t n = ggml_nelements(dst); - const int64_t n = ggml_nelements(dst); + [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; + } break; + case GGML_UNARY_OP_RELU: + { + [encoder setComputePipelineState:ctx->pipeline_relu]; + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; + const int64_t n = ggml_nelements(dst); + + [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; + } break; + case GGML_UNARY_OP_GELU: + { + [encoder setComputePipelineState:ctx->pipeline_gelu]; + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; + + const int64_t n = ggml_nelements(dst); + + [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; + } break; + default: + { + fprintf(stderr, "%s: node %3d, op = %8s not implemented\n", __func__, i, ggml_op_name(dst->op)); + GGML_ASSERT(false); + } } break; - case GGML_OP_RELU: - { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - - [encoder setComputePipelineState:ctx->pipeline_relu]; - [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; - [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - - const int64_t n = ggml_nelements(dst); - - [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; - } break; - case GGML_OP_GELU: - { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - - [encoder setComputePipelineState:ctx->pipeline_gelu]; - [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; - [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - - const int64_t n = ggml_nelements(dst); - - [encoder dispatchThreadgroups:MTLSizeMake(n, 1, 1) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; - } break; case GGML_OP_SOFT_MAX: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - const int nth = 32; [encoder setComputePipelineState:ctx->pipeline_soft_max]; @@ -565,11 +784,7 @@ void ggml_metal_graph_compute( } break; case GGML_OP_DIAG_MASK_INF: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - - const int n_past = ((int32_t *)(src1->data))[0]; + const int n_past = ((int32_t *)(dst->op_params))[0]; [encoder setComputePipelineState:ctx->pipeline_diag_mask_inf]; [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; @@ -585,53 +800,44 @@ void ggml_metal_graph_compute( // TODO: needs to be updated after PR: https://github.com/ggerganov/ggml/pull/224 GGML_ASSERT(ne00 == ne10); - GGML_ASSERT(ne02 == ne12); + // GGML_ASSERT(ne02 == ne12); // Should be checked on individual data types until broadcast is implemented everywhere + uint gqa = ne12/ne02; + GGML_ASSERT(ne03 == ne13); + // for now the matrix-matrix multiplication kernel only works on A14+/M1+ SoCs + // AMD GPU and older A-chips will reuse matrix-vector multiplication kernel if (ggml_is_contiguous(src0) && ggml_is_contiguous(src1) && - (src0t == GGML_TYPE_F32 || src0t == GGML_TYPE_F16) && ne11 > 1) { - - if (encoder != nil) { - [encoder endEncoding]; - encoder = nil; - } - - MPSDataType src0dt = src0t == GGML_TYPE_F32 ? MPSDataTypeFloat32 : MPSDataTypeFloat16; - MPSDataType src1dt = src1t == GGML_TYPE_F32 ? MPSDataTypeFloat32 : MPSDataTypeFloat16; - - // for F32 x F32 we use MPS - MPSMatrixDescriptor * desc0 = [MPSMatrixDescriptor - matrixDescriptorWithRows:ne01 columns:ne00 rowBytes:src0->nb[1] dataType:src0dt]; - - MPSMatrixDescriptor * desc1 = [MPSMatrixDescriptor - matrixDescriptorWithRows:ne11 columns:ne10 rowBytes:src1->nb[1] dataType:src1dt]; - - MPSMatrixDescriptor * desc = [MPSMatrixDescriptor - matrixDescriptorWithRows:ne1 columns:ne0 rowBytes:dst->nb[1] dataType:MPSDataTypeFloat32]; - - MPSMatrixMultiplication * mul = [[MPSMatrixMultiplication alloc] - initWithDevice:ctx->device transposeLeft:false transposeRight:true - resultRows:ne11 resultColumns:ne01 interiorColumns:ne00 alpha:1.0 beta:0.0]; - - // we need to do ne02 multiplications - // TODO: is there a way to do this in parallel - currently very slow .. - // TODO: might be possible to offload part of the computation to ANE using Accelerate's CBLAS - for (int64_t i02 = 0; i02 < ne02; ++i02) { - size_t offs_src0_cur = offs_src0 + i02*nb02; - size_t offs_src1_cur = offs_src1 + i02*nb12; - size_t offs_dst_cur = offs_dst + i02*nb2; - - MPSMatrix * mat_src0 = [[MPSMatrix alloc] initWithBuffer:id_src0 offset:offs_src0_cur descriptor:desc0]; - MPSMatrix * mat_src1 = [[MPSMatrix alloc] initWithBuffer:id_src1 offset:offs_src1_cur descriptor:desc1]; - MPSMatrix * mat_dst = [[MPSMatrix alloc] initWithBuffer:id_dst offset:offs_dst_cur descriptor:desc ]; - - [mul encodeToCommandBuffer:command_buffer leftMatrix:mat_src1 rightMatrix:mat_src0 resultMatrix:mat_dst]; + src1t == GGML_TYPE_F32 && + [ctx->device supportsFamily:MTLGPUFamilyApple7] && + ne00%32 == 0 && + ne11 > 1) { + switch (src0->type) { + case GGML_TYPE_F16: [encoder setComputePipelineState:ctx->pipeline_mul_mm_f16_f32]; break; + case GGML_TYPE_Q4_0: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q4_0_f32]; break; + case GGML_TYPE_Q4_1: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q4_1_f32]; break; + case GGML_TYPE_Q8_0: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q8_0_f32]; break; + case GGML_TYPE_Q2_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q2_K_f32]; break; + case GGML_TYPE_Q3_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q3_K_f32]; break; + case GGML_TYPE_Q4_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q4_K_f32]; break; + case GGML_TYPE_Q5_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q5_K_f32]; break; + case GGML_TYPE_Q6_K: [encoder setComputePipelineState:ctx->pipeline_mul_mm_q6_K_f32]; break; + default: GGML_ASSERT(false && "MUL MAT-MAT not implemented"); } + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_src1 offset:offs_src1 atIndex:1]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:2]; + [encoder setBytes:&ne00 length:sizeof(ne00) atIndex:3]; + [encoder setBytes:&ne02 length:sizeof(ne02) atIndex:4]; + [encoder setBytes:&nb01 length:sizeof(nb01) atIndex:5]; + [encoder setBytes:&nb02 length:sizeof(nb02) atIndex:6]; + [encoder setBytes:&ne12 length:sizeof(ne12) atIndex:7]; + [encoder setBytes:&ne0 length:sizeof(ne0) atIndex:8]; + [encoder setBytes:&ne1 length:sizeof(ne1) atIndex:9]; + [encoder setBytes:&gqa length:sizeof(gqa) atIndex:10]; + [encoder setThreadgroupMemoryLength:8192 atIndex:0]; + [encoder dispatchThreadgroups:MTLSizeMake( (ne11+31)/32, (ne01+63) / 64, ne12) threadsPerThreadgroup:MTLSizeMake(128, 1, 1)]; } else { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - int nth0 = 32; int nth1 = 1; @@ -639,8 +845,6 @@ void ggml_metal_graph_compute( switch (src0t) { case GGML_TYPE_F16: { - GGML_ASSERT(ne02 == ne12); - nth0 = 64; nth1 = 1; [encoder setComputePipelineState:ctx->pipeline_mul_mat_f16_f32]; @@ -663,13 +867,22 @@ void ggml_metal_graph_compute( nth1 = 8; [encoder setComputePipelineState:ctx->pipeline_mul_mat_q4_1_f32]; } break; + case GGML_TYPE_Q8_0: + { + GGML_ASSERT(ne02 == 1); + GGML_ASSERT(ne12 == 1); + + nth0 = 8; + nth1 = 8; + [encoder setComputePipelineState:ctx->pipeline_mul_mat_q8_0_f32]; + } break; case GGML_TYPE_Q2_K: { GGML_ASSERT(ne02 == 1); GGML_ASSERT(ne12 == 1); - nth0 = 4; - nth1 = 16; + nth0 = 2; + nth1 = 32; [encoder setComputePipelineState:ctx->pipeline_mul_mat_q2_K_f32]; } break; case GGML_TYPE_Q3_K: @@ -677,8 +890,8 @@ void ggml_metal_graph_compute( GGML_ASSERT(ne02 == 1); GGML_ASSERT(ne12 == 1); - nth0 = 4; - nth1 = 16; + nth0 = 2; + nth1 = 32; [encoder setComputePipelineState:ctx->pipeline_mul_mat_q3_K_f32]; } break; case GGML_TYPE_Q4_K: @@ -686,8 +899,8 @@ void ggml_metal_graph_compute( GGML_ASSERT(ne02 == 1); GGML_ASSERT(ne12 == 1); - nth0 = 4; - nth1 = 16; + nth0 = 2; + nth1 = 32; [encoder setComputePipelineState:ctx->pipeline_mul_mat_q4_K_f32]; } break; case GGML_TYPE_Q5_K: @@ -695,8 +908,8 @@ void ggml_metal_graph_compute( GGML_ASSERT(ne02 == 1); GGML_ASSERT(ne12 == 1); - nth0 = 4; - nth1 = 16; + nth0 = 2; + nth1 = 32; [encoder setComputePipelineState:ctx->pipeline_mul_mat_q5_K_f32]; } break; case GGML_TYPE_Q6_K: @@ -704,8 +917,8 @@ void ggml_metal_graph_compute( GGML_ASSERT(ne02 == 1); GGML_ASSERT(ne12 == 1); - nth0 = 4; - nth1 = 16; + nth0 = 2; + nth1 = 32; [encoder setComputePipelineState:ctx->pipeline_mul_mat_q6_K_f32]; } break; default: @@ -720,28 +933,36 @@ void ggml_metal_graph_compute( [encoder setBuffer:id_dst offset:offs_dst atIndex:2]; [encoder setBytes:&ne00 length:sizeof(ne00) atIndex:3]; [encoder setBytes:&ne01 length:sizeof(ne01) atIndex:4]; - [encoder setBytes:&nb00 length:sizeof(nb00) atIndex:5]; - [encoder setBytes:&nb01 length:sizeof(nb01) atIndex:6]; - [encoder setBytes:&nb02 length:sizeof(nb02) atIndex:7]; - [encoder setBytes:&ne10 length:sizeof(ne10) atIndex:8]; - [encoder setBytes:&ne11 length:sizeof(ne11) atIndex:9]; - [encoder setBytes:&nb10 length:sizeof(nb10) atIndex:10]; - [encoder setBytes:&nb11 length:sizeof(nb11) atIndex:11]; - [encoder setBytes:&nb12 length:sizeof(nb12) atIndex:12]; - [encoder setBytes:&ne0 length:sizeof(ne0) atIndex:13]; - [encoder setBytes:&ne1 length:sizeof(ne1) atIndex:14]; + [encoder setBytes:&ne02 length:sizeof(ne02) atIndex:5]; + [encoder setBytes:&nb00 length:sizeof(nb00) atIndex:6]; + [encoder setBytes:&nb01 length:sizeof(nb01) atIndex:7]; + [encoder setBytes:&nb02 length:sizeof(nb02) atIndex:8]; + [encoder setBytes:&ne10 length:sizeof(ne10) atIndex:9]; + [encoder setBytes:&ne11 length:sizeof(ne11) atIndex:10]; + [encoder setBytes:&ne12 length:sizeof(ne12) atIndex:11]; + [encoder setBytes:&nb10 length:sizeof(nb10) atIndex:12]; + [encoder setBytes:&nb11 length:sizeof(nb11) atIndex:13]; + [encoder setBytes:&nb12 length:sizeof(nb12) atIndex:14]; + [encoder setBytes:&ne0 length:sizeof(ne0) atIndex:15]; + [encoder setBytes:&ne1 length:sizeof(ne1) atIndex:16]; + [encoder setBytes:&gqa length:sizeof(gqa) atIndex:17]; - if (src0t == GGML_TYPE_Q4_0 || src0t == GGML_TYPE_Q4_1) { - [encoder setThreadgroupMemoryLength:nth0*nth1*sizeof(float) atIndex:0]; - [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne11, 1) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; + if (src0t == GGML_TYPE_Q4_0 || src0t == GGML_TYPE_Q4_1 || src0t == GGML_TYPE_Q8_0 || + src0t == GGML_TYPE_Q2_K || src0t == GGML_TYPE_Q4_K) { + [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 7)/8, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; } - else if (src0t == GGML_TYPE_Q2_K || - src0t == GGML_TYPE_Q3_K || - src0t == GGML_TYPE_Q4_K || - src0t == GGML_TYPE_Q5_K || - src0t == GGML_TYPE_Q6_K) { - [encoder setThreadgroupMemoryLength:nth0*nth1*sizeof(float) atIndex:0]; - [encoder dispatchThreadgroups:MTLSizeMake(ne01, 1, 1) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; + else if (src0t == GGML_TYPE_Q3_K) { +#ifdef GGML_QKK_64 + [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 1)/2, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; +#else + [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 3)/4, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; +#endif + } + else if (src0t == GGML_TYPE_Q5_K) { + [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 3)/4, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; + } + else if (src0t == GGML_TYPE_Q6_K) { + [encoder dispatchThreadgroups:MTLSizeMake((ne01 + 1)/2, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; } else { [encoder setThreadgroupMemoryLength:nth0*sizeof(float) atIndex:0]; [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne11, ne12) threadsPerThreadgroup:MTLSizeMake(nth0, nth1, 1)]; @@ -750,14 +971,11 @@ void ggml_metal_graph_compute( } break; case GGML_OP_GET_ROWS: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - switch (src0->type) { - case GGML_TYPE_F16: [encoder setComputePipelineState:ctx->pipeline_get_rows_f16]; break; + case GGML_TYPE_F16: [encoder setComputePipelineState:ctx->pipeline_get_rows_f16]; break; case GGML_TYPE_Q4_0: [encoder setComputePipelineState:ctx->pipeline_get_rows_q4_0]; break; case GGML_TYPE_Q4_1: [encoder setComputePipelineState:ctx->pipeline_get_rows_q4_1]; break; + case GGML_TYPE_Q8_0: [encoder setComputePipelineState:ctx->pipeline_get_rows_q8_0]; break; case GGML_TYPE_Q2_K: [encoder setComputePipelineState:ctx->pipeline_get_rows_q2_K]; break; case GGML_TYPE_Q3_K: [encoder setComputePipelineState:ctx->pipeline_get_rows_q3_K]; break; case GGML_TYPE_Q4_K: [encoder setComputePipelineState:ctx->pipeline_get_rows_q4_K]; break; @@ -779,13 +997,10 @@ void ggml_metal_graph_compute( } break; case GGML_OP_RMS_NORM: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } + float eps; + memcpy(&eps, dst->op_params, sizeof(float)); - const float eps = 1e-6f; - - const int nth = 256; + const int nth = 512; [encoder setComputePipelineState:ctx->pipeline_rms_norm]; [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; @@ -793,7 +1008,7 @@ void ggml_metal_graph_compute( [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:3]; [encoder setBytes:&eps length:sizeof( float) atIndex:4]; - [encoder setThreadgroupMemoryLength:nth*sizeof(float) atIndex:0]; + [encoder setThreadgroupMemoryLength:nth/32*sizeof(float) atIndex:0]; const int64_t nrows = ggml_nrows(src0); @@ -801,20 +1016,17 @@ void ggml_metal_graph_compute( } break; case GGML_OP_NORM: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - - const float eps = 1e-5f; + float eps; + memcpy(&eps, dst->op_params, sizeof(float)); const int nth = 256; [encoder setComputePipelineState:ctx->pipeline_norm]; - [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; - [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; - [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:3]; - [encoder setBytes:&eps length:sizeof( float) atIndex:4]; + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; + [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; + [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:3]; + [encoder setBytes:&eps length:sizeof( float) atIndex:4]; [encoder setThreadgroupMemoryLength:nth*sizeof(float) atIndex:0]; const int64_t nrows = ggml_nrows(src0); @@ -823,15 +1035,12 @@ void ggml_metal_graph_compute( } break; case GGML_OP_ALIBI: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - GGML_ASSERT((src0t == GGML_TYPE_F32)); - const int n_past = ((int32_t *) src1->data)[0]; UNUSED(n_past); - const int n_head = ((int32_t *) src1->data)[1]; - const float max_bias = ((float *) src1->data)[2]; + const int n_past = ((int32_t *) dst->op_params)[0]; UNUSED(n_past); + const int n_head = ((int32_t *) dst->op_params)[1]; + float max_bias; + memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float)); if (__builtin_popcount(n_head) != 1) { GGML_ASSERT(false && "only power-of-two n_head implemented"); @@ -860,51 +1069,53 @@ void ggml_metal_graph_compute( [encoder setBytes:&nb2 length:sizeof(uint64_t) atIndex:16]; [encoder setBytes:&nb3 length:sizeof(uint64_t) atIndex:17]; [encoder setBytes:&m0 length:sizeof( float) atIndex:18]; + const int nth = 32; + [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne02, ne03) threadsPerThreadgroup:MTLSizeMake(nth, 1, 1)]; } break; case GGML_OP_ROPE: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_dims = ((int32_t *) dst->op_params)[1]; + const int mode = ((int32_t *) dst->op_params)[2]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; - - const int n_past = ((int32_t *)(src1->data))[0]; + float freq_base; + float freq_scale; + memcpy(&freq_base, (int32_t *) dst->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float)); [encoder setComputePipelineState:ctx->pipeline_rope]; - [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; - [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; - [encoder setBytes:&ne01 length:sizeof( int64_t) atIndex:3]; - [encoder setBytes:&ne02 length:sizeof( int64_t) atIndex:4]; - [encoder setBytes:&ne03 length:sizeof( int64_t) atIndex:5]; - [encoder setBytes:&nb00 length:sizeof(uint64_t) atIndex:6]; - [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:7]; - [encoder setBytes:&nb02 length:sizeof(uint64_t) atIndex:8]; - [encoder setBytes:&nb03 length:sizeof(uint64_t) atIndex:9]; - [encoder setBytes:&ne0 length:sizeof( int64_t) atIndex:10]; - [encoder setBytes:&ne1 length:sizeof( int64_t) atIndex:11]; - [encoder setBytes:&ne2 length:sizeof( int64_t) atIndex:12]; - [encoder setBytes:&ne3 length:sizeof( int64_t) atIndex:13]; - [encoder setBytes:&nb0 length:sizeof(uint64_t) atIndex:14]; - [encoder setBytes:&nb1 length:sizeof(uint64_t) atIndex:15]; - [encoder setBytes:&nb2 length:sizeof(uint64_t) atIndex:16]; - [encoder setBytes:&nb3 length:sizeof(uint64_t) atIndex:17]; - [encoder setBytes:&n_past length:sizeof( int) atIndex:18]; - [encoder setBytes:&n_dims length:sizeof( int) atIndex:19]; - [encoder setBytes:&mode length:sizeof( int) atIndex:20]; + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; + [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; + [encoder setBytes:&ne01 length:sizeof( int64_t) atIndex:3]; + [encoder setBytes:&ne02 length:sizeof( int64_t) atIndex:4]; + [encoder setBytes:&ne03 length:sizeof( int64_t) atIndex:5]; + [encoder setBytes:&nb00 length:sizeof(uint64_t) atIndex:6]; + [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:7]; + [encoder setBytes:&nb02 length:sizeof(uint64_t) atIndex:8]; + [encoder setBytes:&nb03 length:sizeof(uint64_t) atIndex:9]; + [encoder setBytes:&ne0 length:sizeof( int64_t) atIndex:10]; + [encoder setBytes:&ne1 length:sizeof( int64_t) atIndex:11]; + [encoder setBytes:&ne2 length:sizeof( int64_t) atIndex:12]; + [encoder setBytes:&ne3 length:sizeof( int64_t) atIndex:13]; + [encoder setBytes:&nb0 length:sizeof(uint64_t) atIndex:14]; + [encoder setBytes:&nb1 length:sizeof(uint64_t) atIndex:15]; + [encoder setBytes:&nb2 length:sizeof(uint64_t) atIndex:16]; + [encoder setBytes:&nb3 length:sizeof(uint64_t) atIndex:17]; + [encoder setBytes:&n_past length:sizeof( int) atIndex:18]; + [encoder setBytes:&n_dims length:sizeof( int) atIndex:19]; + [encoder setBytes:&mode length:sizeof( int) atIndex:20]; + [encoder setBytes:&freq_base length:sizeof(float) atIndex:21]; + [encoder setBytes:&freq_scale length:sizeof(float) atIndex:22]; [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne02, ne03) threadsPerThreadgroup:MTLSizeMake(1, 1, 1)]; } break; + case GGML_OP_DUP: case GGML_OP_CPY: + case GGML_OP_CONT: { - if (encoder == nil) { - encoder = [command_buffer computeCommandEncoder]; - } - const int nth = 32; switch (src0t) { @@ -927,30 +1138,32 @@ void ggml_metal_graph_compute( default: GGML_ASSERT(false && "not implemented"); } - [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; - [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; - [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; - [encoder setBytes:&ne01 length:sizeof( int64_t) atIndex:3]; - [encoder setBytes:&ne02 length:sizeof( int64_t) atIndex:4]; - [encoder setBytes:&ne03 length:sizeof( int64_t) atIndex:5]; - [encoder setBytes:&nb00 length:sizeof(uint64_t) atIndex:6]; - [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:7]; - [encoder setBytes:&nb02 length:sizeof(uint64_t) atIndex:8]; - [encoder setBytes:&nb03 length:sizeof(uint64_t) atIndex:9]; - [encoder setBytes:&ne0 length:sizeof( int64_t) atIndex:10]; - [encoder setBytes:&ne1 length:sizeof( int64_t) atIndex:11]; - [encoder setBytes:&ne2 length:sizeof( int64_t) atIndex:12]; - [encoder setBytes:&ne3 length:sizeof( int64_t) atIndex:13]; - [encoder setBytes:&nb0 length:sizeof(uint64_t) atIndex:14]; - [encoder setBytes:&nb1 length:sizeof(uint64_t) atIndex:15]; - [encoder setBytes:&nb2 length:sizeof(uint64_t) atIndex:16]; - [encoder setBytes:&nb3 length:sizeof(uint64_t) atIndex:17]; + [encoder setBuffer:id_src0 offset:offs_src0 atIndex:0]; + [encoder setBuffer:id_dst offset:offs_dst atIndex:1]; + [encoder setBytes:&ne00 length:sizeof( int64_t) atIndex:2]; + [encoder setBytes:&ne01 length:sizeof( int64_t) atIndex:3]; + [encoder setBytes:&ne02 length:sizeof( int64_t) atIndex:4]; + [encoder setBytes:&ne03 length:sizeof( int64_t) atIndex:5]; + [encoder setBytes:&nb00 length:sizeof(uint64_t) atIndex:6]; + [encoder setBytes:&nb01 length:sizeof(uint64_t) atIndex:7]; + [encoder setBytes:&nb02 length:sizeof(uint64_t) atIndex:8]; + [encoder setBytes:&nb03 length:sizeof(uint64_t) atIndex:9]; + [encoder setBytes:&ne0 length:sizeof( int64_t) atIndex:10]; + [encoder setBytes:&ne1 length:sizeof( int64_t) atIndex:11]; + [encoder setBytes:&ne2 length:sizeof( int64_t) atIndex:12]; + [encoder setBytes:&ne3 length:sizeof( int64_t) atIndex:13]; + [encoder setBytes:&nb0 length:sizeof(uint64_t) atIndex:14]; + [encoder setBytes:&nb1 length:sizeof(uint64_t) atIndex:15]; + [encoder setBytes:&nb2 length:sizeof(uint64_t) atIndex:16]; + [encoder setBytes:&nb3 length:sizeof(uint64_t) atIndex:17]; [encoder dispatchThreadgroups:MTLSizeMake(ne01, ne02, ne03) threadsPerThreadgroup:MTLSizeMake(nth, 1, 1)]; } break; default: - fprintf(stderr, "%s: node %3d, op = %8s not implemented\n", __func__, i, ggml_op_name(dst->op)); - GGML_ASSERT(false); + { + fprintf(stderr, "%s: node %3d, op = %8s not implemented\n", __func__, i, ggml_op_name(dst->op)); + GGML_ASSERT(false); + } } } @@ -964,17 +1177,19 @@ void ggml_metal_graph_compute( } // wait for all threads to finish - dispatch_barrier_sync(queue, ^{}); - - [command_buffers[n_cb - 1] waitUntilCompleted]; + dispatch_barrier_sync(ctx->d_queue, ^{}); // check status of command buffers // needed to detect if the device ran out-of-memory for example (#1881) for (int i = 0; i < n_cb; i++) { - MTLCommandBufferStatus status = (MTLCommandBufferStatus) [command_buffers[i] status]; + [ctx->command_buffers[i] waitUntilCompleted]; + + MTLCommandBufferStatus status = (MTLCommandBufferStatus) [ctx->command_buffers[i] status]; if (status != MTLCommandBufferStatusCompleted) { fprintf(stderr, "%s: command buffer %d failed with status %lu\n", __func__, i, status); GGML_ASSERT(false); } } + + } } diff --git a/ggml-metal.metal b/ggml-metal.metal index e62fe684..82e1a0c7 100644 --- a/ggml-metal.metal +++ b/ggml-metal.metal @@ -18,46 +18,11 @@ typedef struct { uint8_t qs[QK4_1 / 2]; // nibbles / quants } block_q4_1; -static void dequantize_row_q4_0(device const block_q4_0 * x, device float * y, int k) { - const int qk = QK4_0; - - assert(k % qk == 0); - - const int nb = k / qk; - - for (int i = 0; i < nb; i++) { - const half d = x[i].d; - - for (int j = 0; j < qk/2; ++j) { - const int x0 = (x[i].qs[j] & 0x0F) - 8; - const int x1 = (x[i].qs[j] >> 4) - 8; - - y[i*qk + j + 0 ] = x0*d; - y[i*qk + j + qk/2] = x1*d; - } - } -} - -static void dequantize_row_q4_1(device const block_q4_1 * x, device float * y, int k) { - const int qk = QK4_1; - - assert(k % qk == 0); - - const int nb = k / qk; - - for (int i = 0; i < nb; i++) { - const half d = x[i].d; - const half m = x[i].m; - - for (int j = 0; j < qk/2; ++j) { - const int x0 = (x[i].qs[j] & 0x0F); - const int x1 = (x[i].qs[j] >> 4); - - y[i*qk + j + 0 ] = x0*d + m; - y[i*qk + j + qk/2] = x1*d + m; - } - } -} +#define QK8_0 32 +typedef struct { + half d; // delta + int8_t qs[QK8_0]; // quants +} block_q8_0; kernel void kernel_add( device const float * src0, @@ -67,6 +32,17 @@ kernel void kernel_add( dst[tpig] = src0[tpig] + src1[tpig]; } +// assumption: src1 is a row +// broadcast src1 into src0 +kernel void kernel_add_row( + device const float * src0, + device const float * src1, + device float * dst, + constant int64_t & ne00, + uint tpig[[thread_position_in_grid]]) { + dst[tpig] = src0[tpig] + src1[tpig % ne00]; +} + kernel void kernel_mul( device const float * src0, device const float * src1, @@ -117,7 +93,12 @@ kernel void kernel_gelu( device float * dst, uint tpig[[thread_position_in_grid]]) { float x = src0[tpig]; - dst[tpig] = 0.5f*x*(1.0f + tanh(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x))); + + // BEWARE !!! + // Simply using "tanh" instead of "precise::tanh" will sometimes results in NaNs! + // This was observed with Falcon 7B and 40B models + // + dst[tpig] = 0.5f*x*(1.0f + precise::tanh(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x))); } kernel void kernel_soft_max( @@ -208,54 +189,6 @@ kernel void kernel_diag_mask_inf( } } -kernel void kernel_get_rows_f16( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - for (int j = 0; j < ne00; j++) { - dst[i*nb1 + j] = ((device half *) ((device char *) src0 + r*nb01))[j]; - } -} - -kernel void kernel_get_rows_q4_0( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q4_0( - (device const block_q4_0 *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - -kernel void kernel_get_rows_q4_1( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q4_1( - (device const block_q4_1 *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - kernel void kernel_norm( device const void * src0, device float * dst, @@ -331,26 +264,33 @@ kernel void kernel_rms_norm( threadgroup float * sum [[threadgroup(0)]], uint tgpig[[threadgroup_position_in_grid]], uint tpitg[[thread_position_in_threadgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]], + uint tiisg[[thread_index_in_simdgroup]], uint ntg[[threads_per_threadgroup]]) { - device const float * x = (device const float *) ((device const char *) src0 + tgpig*nb01); + device const float4 * x = (device const float4 *) ((device const char *) src0 + tgpig*nb01); + device const float * x_scalar = (device const float *) x; + float4 sumf=0; + float all_sum=0; // parallel sum - sum[tpitg] = 0.0f; - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { - sum[tpitg] += x[i00] * x[i00]; + for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) { + sumf += x[i00] * x[i00]; + } + all_sum = sumf[0] + sumf[1] + sumf[2] + sumf[3]; + all_sum = simd_sum(all_sum); + if (tiisg == 0) { + sum[sgitg] = all_sum; } - // reduce threadgroup_barrier(mem_flags::mem_threadgroup); - for (uint i = ntg/2; i > 0; i /= 2) { - if (tpitg < i) { - sum[tpitg] += sum[tpitg + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); + // broadcast, simd group number is ntg / 32 + for (uint i = ntg / 32 / 2; i > 0; i /= 2) { + if (tpitg < i) { + sum[tpitg] += sum[tpitg + i]; + } } - - // broadcast if (tpitg == 0) { + for (int i = 4 * (ne00 / 4); i < ne00; i++) {sum[0] += x_scalar[i];} sum[0] /= ne00; } @@ -359,10 +299,104 @@ kernel void kernel_rms_norm( const float mean = sum[0]; const float scale = 1.0f/sqrt(mean + eps); - device float * y = dst + tgpig*ne00; - for (int i00 = tpitg; i00 < ne00; i00 += ntg) { + device float4 * y = (device float4 *) (dst + tgpig*ne00); + device float * y_scalar = (device float *) y; + for (int i00 = tpitg; i00 < ne00/4; i00 += ntg) { y[i00] = x[i00] * scale; } + if (tpitg == 0) { + for (int i00 = 4 * (ne00 / 4); i00 < ne00; i00++) {y_scalar[i00] = x_scalar[i00] * scale;} + } +} + +// function for calculate inner product between half a q4_0 block and 16 floats (yl), sumy is SUM(yl[i]) +// il indicates where the q4 quants begin (0 or QK4_0/4) +// we assume that the yl's have been multiplied with the appropriate scale factor +// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096) +inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thread float * yl, int il) { + float d = qb_curr->d; + float2 acc = 0.f; + device const uint16_t * qs = ((device const uint16_t *)qb_curr + 1 + il/2); + for (int i = 0; i < 8; i+=2) { + acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F) + + yl[i + 1] * (qs[i / 2] & 0x0F00); + acc[1] += yl[i + 8] * (qs[i / 2] & 0x00F0) + + yl[i + 9] * (qs[i / 2] & 0xF000); + } + return d * (sumy * -8.f + acc[0] + acc[1]); +} + +// function for calculate inner product between half a q4_1 block and 16 floats (yl), sumy is SUM(yl[i]) +// il indicates where the q4 quants begin (0 or QK4_0/4) +// we assume that the yl's have been multiplied with the appropriate scale factor +// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096) +inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thread float * yl, int il) { + float d = qb_curr->d; + float m = qb_curr->m; + device const uint16_t * qs = ((device const uint16_t *)qb_curr + 2 + il/2); + float2 acc = 0.f; + for (int i = 0; i < 8; i+=2) { + acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F) + + yl[i + 1] * (qs[i / 2] & 0x0F00); + acc[1] += yl[i + 8] * (qs[i / 2] & 0x00F0) + + yl[i + 9] * (qs[i / 2] & 0xF000); + } + return d * (acc[0] + acc[1]) + sumy * m; +} + +// putting them in the kernel cause a significant performance penalty +#define N_DST 4 // each SIMD group works on 4 rows +#define N_SIMDGROUP 2 // number of SIMD groups in a thread group +#define N_SIMDWIDTH 32 // assuming SIMD group size is 32 +//Note: This is a template, but strictly speaking it only applies to +// quantizations where the block size is 32. It also does not +// giard against the number of rows not being divisible by +// N_DST, so this is another explicit assumption of the implementation. +template +void mul_vec_q_n_f32(device const void * src0, device const float * src1, device float * dst, + int64_t ne00, int64_t ne01, int64_t ne02, int64_t ne10, int64_t ne12, int64_t ne0, int64_t ne1, uint gqa, + uint3 tgpig, uint tiisg, uint sgitg) { + const int nb = ne00/QK4_0; + const int r0 = tgpig.x; + const int r1 = tgpig.y; + const int im = tgpig.z; + const int first_row = (r0 * nsg + sgitg) * nr; + const uint offset0 = first_row * nb + im/gqa*(nb*ne0); + device const block_q_type * x = (device const block_q_type *) src0 + offset0; + device const float * y = (device const float *) src1 + r1*ne10 + im*ne00*ne1; + float yl[16]; // src1 vector cache + float sumf[nr]={0.f}; + + const int ix = tiisg/2; + const int il = 8*(tiisg%2); + + device const float * yb = y + ix * QK4_0 + il; + + // each thread in a SIMD group deals with half a block. + for (int ib = ix; ib < nb; ib += nw/2) { + float sumy = 0; + for (int i = 0; i < 8; i += 2) { + sumy += yb[i] + yb[i+1]; + yl[i+0] = yb[i+ 0]; + yl[i+1] = yb[i+ 1]/256.f; + sumy += yb[i+16] + yb[i+17]; + yl[i+8] = yb[i+16]/16.f; + yl[i+9] = yb[i+17]/4096.f; + } + + for (int row = 0; row < nr; row++) { + sumf[row] += block_q_n_dot_y(x+ib+row*nb, sumy, yl, il); + } + + yb += QK4_0 * 16; + } + + for (int row = 0; row < nr; ++row) { + const float tot = simd_sum(sumf[row]); + if (tiisg == 0 && first_row + row < ne01) { + dst[r1*ne0 + im*ne0*ne1 + first_row + row] = tot; + } + } } kernel void kernel_mul_mat_q4_0_f32( @@ -370,67 +404,17 @@ kernel void kernel_mul_mat_q4_0_f32( device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { - const int nb = ne00/QK4_0; - - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; - - device const block_q4_0 * x = (device const block_q4_0 *) src0 + r0*nb; - device const float * y = (device const float *) src1 + r1*ne10; - - const int nth = tptg.x*tptg.y; - const int ith = tptg.y*tpitg.x + tpitg.y; - - const int ix = tpitg.y/4; // 0 or 1 - const int iy = tpitg.y - 4*ix; // 0...3 - - const int first = 4 * iy; - - float sumf = 0; - - for (int i = 2*tpitg.x + ix; i < nb; i += 2*tptg.x) { - - const float d = (float)x[i].d; - - device const uint8_t * xl = x[i].qs + first; - device const float * yl = y + i * QK4_0 + first; - - float2 acc = {0.0f, 0.0f}; - - for (int j = 0; j < 4; ++j) { - - acc[0] += yl[j] * (xl[j] & 0xF) + yl[j+16] * (xl[j] >> 4); - acc[1] += yl[j] + yl[j+16]; - - } - - sumf += d * (acc[0] - 8.f*acc[1]); - } - - sum[ith] = sumf; - - // - // Accumulate the sum from all threads in the threadgroup - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - sum[ith] += sum[ith+1] + sum[ith+2] + sum[ith+3]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - sum[ith] += sum[ith+4] + sum[ith+8] + sum[ith+12]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (int i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; - } + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { + mul_vec_q_n_f32(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg); } kernel void kernel_mul_mat_q4_1_f32( @@ -438,67 +422,78 @@ kernel void kernel_mul_mat_q4_1_f32( device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { - const int nb = ne00/QK4_1; + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { + mul_vec_q_n_f32(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg); +} - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; +kernel void kernel_mul_mat_q8_0_f32( + device const void * src0, + device const float * src1, + device float * dst, + constant int64_t & ne00, + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { + const int nr = N_DST; + const int nsg = N_SIMDGROUP; + const int nw = N_SIMDWIDTH; - device const block_q4_1 * x = (device const block_q4_1 *) src0 + r0*nb; - device const float * y = (device const float *) src1 + r1*ne10; + const int nb = ne00/QK8_0; + const int r0 = tgpig.x; + const int r1 = tgpig.y; + const int im = tgpig.z; + const int first_row = (r0 * nsg + sgitg) * nr; + const uint offset0 = first_row * nb + im/gqa*(nb*ne0); + device const block_q8_0 * x = (device const block_q8_0 *) src0 + offset0; + device const float * y = (device const float *) src1 + r1*ne10 + im*ne00*ne1; - const uint nth = tptg.x*tptg.y; - const uint ith = tptg.y*tpitg.x + tpitg.y; + float yl[16]; + float sumf[nr]={0.f}; - const int ix = tpitg.y/4; // 0 or 1 - const int iy = tpitg.y - 4*ix; // 0...3 + const int ix = tiisg/2; + const int il = tiisg%2; - const int first = 4 * iy; - - float sumf = 0; - - for (int i = 2*tpitg.x + ix; i < nb; i += 2*tptg.x) { - - const float d = (float)x[i].d; - const float m = (float)x[i].m; - - device const uint8_t * xl = x[i].qs + first; - device const float * yl = y + i * QK4_1 + first; - - float2 acc = {0.0f, 0.0f}; - - for (int j = 0; j < 4; ++j) { - - acc[0] += yl[j+ 0] * (d * (xl[j] & 0xF) + m); - acc[1] += yl[j+16] * (d * (xl[j] >> 4) + m); + device const float * yb = y + ix * QK8_0 + 16*il; + // each thread in a SIMD group deals with half a block. + for (int ib = ix; ib < nb; ib += nw/2) { + for (int i = 0; i < 16; ++i) { + yl[i] = yb[i]; } - sumf += acc[0] + acc[1]; + for (int row = 0; row < nr; row++) { + device const int8_t * qs = x[ib+row*nb].qs + 16*il; + float sumq = 0.f; + for (int iq = 0; iq < 16; ++iq) { + sumq += qs[iq] * yl[iq]; + } + sumf[row] += sumq*x[ib+row*nb].d; + } + + yb += QK8_0 * 16; } - sum[ith] = sumf; - - // - // Accumulate the sum from all threads in the threadgroup - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - sum[ith] += sum[ith+1] + sum[ith+2] + sum[ith+3]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - sum[ith] += sum[ith+4] + sum[ith+8] + sum[ith+12]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (uint i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; + for (int row = 0; row < nr; ++row) { + const float tot = simd_sum(sumf[row]); + if (tiisg == 0 && first_row + row < ne01) { + dst[r1*ne0 + im*ne0*ne1 + first_row + row] = tot; + } } } @@ -508,11 +503,13 @@ kernel void kernel_mul_mat_f16_f32( device float * dst, constant int64_t & ne00, constant int64_t & ne01, + constant int64_t & ne02, constant uint64_t & nb00, constant uint64_t & nb01, constant uint64_t & nb02, constant int64_t & ne10, constant int64_t & ne11, + constant int64_t & ne12, constant uint64_t & nb10, constant uint64_t & nb11, constant uint64_t & nb12, @@ -528,7 +525,7 @@ kernel void kernel_mul_mat_f16_f32( const int64_t r1 = tgpig.y; const int64_t im = tgpig.z; - device const half * x = (device const half *) (src0 + r0*nb01 + im*nb02); + device const half * x = (device const half *) (src0 + r0*nb01 + im/(ne12/ne02)*nb02); device const float * y = (device const float *) (src1 + r1*nb11 + im*nb12); sum[tpitg.x] = 0.0f; @@ -615,17 +612,19 @@ kernel void kernel_rope( constant int & n_past, constant int & n_dims, constant int & mode, + constant float & freq_base, + constant float & freq_scale, uint3 tpig[[thread_position_in_grid]]) { const int64_t i3 = tpig[2]; const int64_t i2 = tpig[1]; const int64_t i1 = tpig[0]; const bool is_neox = mode & 2; - const float theta_scale = pow(10000.0, -2.0f/n_dims); + const float theta_scale = pow(freq_base, -2.0f/n_dims); const int64_t p = ((mode & 1) == 0 ? n_past + i2 : i2); - float theta = (float)p; + float theta = freq_scale * (float)p; if (!is_neox) { for (int64_t i0 = 0; i0 < ne0; i0 += 2) { @@ -644,7 +643,25 @@ kernel void kernel_rope( dst_data[1] = x0*sin_theta + x1*cos_theta; } } else { - // TODO: implement + for (int64_t ib = 0; ib < ne0/n_dims; ++ib) { + for (int64_t ic = 0; ic < n_dims; ic += 2) { + const float cos_theta = cos(theta); + const float sin_theta = sin(theta); + + theta *= theta_scale; + + const int64_t i0 = ib*n_dims + ic/2; + + device const float * const src = (device float *)((device char *) src0 + i3*nb03 + i2*nb02 + i1*nb01 + i0*nb00); + device float * dst_data = (device float *)((device char *) dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0); + + const float x0 = src[0]; + const float x1 = src[n_dims/2]; + + dst_data[0] = x0*cos_theta - x1*sin_theta; + dst_data[n_dims/2] = x0*sin_theta + x1*cos_theta; + } + } } } @@ -863,354 +880,6 @@ static inline uchar4 get_scale_min_k4(int j, device const uint8_t * q) { return r; } -//========================================== dequantization ============================= - -static void dequantize_row_q2_K(device const block_q2_K * x, device float * y, int k) { - assert(k % QK_K == 0); - const int nb = k / QK_K; - - for (int i = 0; i < nb; i++) { - - const float d = x[i].d; - const float min = x[i].dmin; - - device const uint8_t * q = x[i].qs; - -#if QK_K == 256 - int is = 0; - float dl, ml; - for (int n = 0; n < QK_K; n += 128) { - int shift = 0; - for (int j = 0; j < 4; ++j) { - - uint8_t sc = x[i].scales[is++]; - dl = d * (sc & 0xF); ml = min * (sc >> 4); - for (int l = 0; l < 16; ++l) *y++ = dl * ((int8_t)((q[l] >> shift) & 3)) - ml; - - sc = x[i].scales[is++]; - dl = d * (sc & 0xF); ml = min * (sc >> 4); - for (int l = 0; l < 16; ++l) *y++ = dl * ((int8_t)((q[l+16] >> shift) & 3)) - ml; - - shift += 2; - } - q += 32; - } -#else - float dl1 = d * (x[i].scales[0] & 0xF), ml1 = min * (x[i].scales[0] >> 4); - float dl2 = d * (x[i].scales[1] & 0xF), ml2 = min * (x[i].scales[1] >> 4); - float dl3 = d * (x[i].scales[2] & 0xF), ml3 = min * (x[i].scales[2] >> 4); - float dl4 = d * (x[i].scales[3] & 0xF), ml4 = min * (x[i].scales[3] >> 4); - for (int l = 0; l < 16; ++l) { - y[l+ 0] = dl1 * ((q[l] >> 0) & 3) - ml1; - y[l+16] = dl2 * ((q[l] >> 2) & 3) - ml2; - y[l+32] = dl3 * ((q[l] >> 4) & 3) - ml3; - y[l+48] = dl4 * ((q[l] >> 6) & 3) - ml4; - } - y += QK_K; -#endif - - } -} - -static void dequantize_row_q3_K(device const block_q3_K * x, device float * y, int k) { - assert(k % QK_K == 0); - const int nb = k / QK_K; - -#if QK_K == 256 - - const uint16_t kmask1 = 0x0303; - const uint16_t kmask2 = 0x0f0f; - - uint16_t aux[8]; - thread const int8_t * scales = (thread const int8_t*)aux; - - for (int i = 0; i < nb; i++) { - - const float d_all = (float)(x[i].d); - - device const uint8_t * q = x[i].qs; - device const uint8_t * h = x[i].hmask; - uint8_t m = 1; - - device const uint16_t * a = (device const uint16_t *)x[i].scales; - aux[0] = (a[0] & kmask2) | (((a[4] >> 0) & kmask1) << 4); - aux[1] = (a[1] & kmask2) | (((a[5] >> 0) & kmask1) << 4); - aux[2] = (a[2] & kmask2) | (((a[4] >> 2) & kmask1) << 4); - aux[3] = (a[3] & kmask2) | (((a[5] >> 2) & kmask1) << 4); - aux[4] = ((a[0] >> 4) & kmask2) | (((a[4] >> 4) & kmask1) << 4); - aux[5] = ((a[1] >> 4) & kmask2) | (((a[5] >> 4) & kmask1) << 4); - aux[6] = ((a[2] >> 4) & kmask2) | (((a[4] >> 6) & kmask1) << 4); - aux[7] = ((a[3] >> 4) & kmask2) | (((a[5] >> 6) & kmask1) << 4); - - int is = 0; - float dl; - for (int n = 0; n < QK_K; n += 128) { - int shift = 0; - for (int j = 0; j < 4; ++j) { - - dl = d_all * (scales[is++] - 32); - for (int l = 0; l < 16; ++l) { - *y++ = dl * ((int8_t)((q[l+ 0] >> shift) & 3) - ((h[l+ 0] & m) ? 0 : 4)); - } - - dl = d_all * (scales[is++] - 32); - for (int l = 0; l < 16; ++l) { - *y++ = dl * ((int8_t)((q[l+16] >> shift) & 3) - ((h[l+16] & m) ? 0 : 4)); - } - - shift += 2; - m <<= 1; - } - q += 32; - } - } -#else - for (int i = 0; i < nb; i++) { - - const float d_all = (float)(x[i].d); - - device const uint8_t * q = x[i].qs; - device const uint8_t * hm = x[i].hmask; - - const float d1 = d_all * ((x[i].scales[0] & 0xF) - 8); - const float d2 = d_all * ((x[i].scales[0] >> 4) - 8); - const float d3 = d_all * ((x[i].scales[1] & 0xF) - 8); - const float d4 = d_all * ((x[i].scales[1] >> 4) - 8); - - for (int l = 0; l < 8; ++l) { - uint8_t h = hm[l]; - y[l+ 0] = d1 * ((int8_t)((q[l+0] >> 0) & 3) - ((h & 0x01) ? 0 : 4)); - y[l+ 8] = d1 * ((int8_t)((q[l+8] >> 0) & 3) - ((h & 0x02) ? 0 : 4)); - y[l+16] = d2 * ((int8_t)((q[l+0] >> 2) & 3) - ((h & 0x04) ? 0 : 4)); - y[l+24] = d2 * ((int8_t)((q[l+8] >> 2) & 3) - ((h & 0x08) ? 0 : 4)); - y[l+32] = d3 * ((int8_t)((q[l+0] >> 4) & 3) - ((h & 0x10) ? 0 : 4)); - y[l+40] = d3 * ((int8_t)((q[l+8] >> 4) & 3) - ((h & 0x20) ? 0 : 4)); - y[l+48] = d4 * ((int8_t)((q[l+0] >> 6) & 3) - ((h & 0x40) ? 0 : 4)); - y[l+56] = d4 * ((int8_t)((q[l+8] >> 6) & 3) - ((h & 0x80) ? 0 : 4)); - } - y += QK_K; - } -#endif - -} - -static void dequantize_row_q4_K(device const block_q4_K * x, device float * y, int k) { - assert(k % QK_K == 0); - const int nb = k / QK_K; - - for (int i = 0; i < nb; i++) { - - device const uint8_t * q = x[i].qs; - -#if QK_K == 256 - const float d = x[i].d; - const float min = x[i].dmin; - - device const uint8_t * scales = x[i].scales; - - int is = 0; - for (int j = 0; j < QK_K; j += 64) { - const uchar4 sc = get_scale_min_k4(is, scales); - const float d1 = d * sc[0]; const float m1 = min * sc[1]; - const float d2 = d * sc[2]; const float m2 = min * sc[3]; - for (int l = 0; l < 32; ++l) *y++ = d1 * (q[l] & 0xF) - m1; - for (int l = 0; l < 32; ++l) *y++ = d2 * (q[l] >> 4) - m2; - q += 32; is += 2; - } -#else - device const uint8_t * s = x[i].scales; - device const half2 * dh = (device const half2 *)x[i].d; - const float2 d = (float2)dh[0]; - const float d1 = d[0] * (s[0] & 0xF); - const float d2 = d[0] * (s[1] & 0xF); - const float m1 = d[1] * (s[0] >> 4); - const float m2 = d[1] * (s[1] >> 4); - for (int l = 0; l < 32; ++l) { - y[l+ 0] = d1 * (q[l] & 0xF) - m1; - y[l+32] = d2 * (q[l] >> 4) - m2; - } - y += QK_K; -#endif - - } -} - -static void dequantize_row_q5_K(device const block_q5_K * x, device float * y, int k) { - assert(k % QK_K == 0); - const int nb = k / QK_K; - -#if QK_K == 256 - for (int i = 0; i < nb; i++) { - - const float d = (float)(x[i].d); - const float min = (float)(x[i].dmin); - - device const uint8_t * ql = x[i].qs; - device const uint8_t * qh = x[i].qh; - - int is = 0; - uint8_t u1 = 1, u2 = 2; - for (int j = 0; j < QK_K; j += 64) { - const uchar4 sc = get_scale_min_k4(is, x[i].scales); - const float d1 = d * sc[0]; const float m1 = min * sc[1]; - const float d2 = d * sc[2]; const float m2 = min * sc[3]; - for (int l = 0; l < 32; ++l) *y++ = d1 * ((ql[l] & 0xF) + (qh[l] & u1 ? 16 : 0)) - m1; - for (int l = 0; l < 32; ++l) *y++ = d2 * ((ql[l] >> 4) + (qh[l] & u2 ? 16 : 0)) - m2; - ql += 32; is += 2; - u1 <<= 2; u2 <<= 2; - } - } -#else - for (int i = 0; i < nb; i++) { - - const float d = (float)x[i].d; - - device const uint8_t * ql = x[i].qs; - device const uint8_t * qh = x[i].qh; - device const int8_t * sc = x[i].scales; - - for (int l = 0; l < 8; ++l) { - y[l+ 0] = d * sc[0] * ((ql[l+ 0] & 0xF) - (qh[l] & 0x01 ? 0 : 16)); - y[l+ 8] = d * sc[0] * ((ql[l+ 8] & 0xF) - (qh[l] & 0x02 ? 0 : 16)); - y[l+16] = d * sc[1] * ((ql[l+16] & 0xF) - (qh[l] & 0x04 ? 0 : 16)); - y[l+24] = d * sc[1] * ((ql[l+24] & 0xF) - (qh[l] & 0x08 ? 0 : 16)); - y[l+32] = d * sc[2] * ((ql[l+ 0] >> 4) - (qh[l] & 0x10 ? 0 : 16)); - y[l+40] = d * sc[2] * ((ql[l+ 8] >> 4) - (qh[l] & 0x20 ? 0 : 16)); - y[l+48] = d * sc[3] * ((ql[l+16] >> 4) - (qh[l] & 0x40 ? 0 : 16)); - y[l+56] = d * sc[3] * ((ql[l+24] >> 4) - (qh[l] & 0x80 ? 0 : 16)); - } - y += QK_K; - } -#endif - -} - -static void dequantize_row_q6_K(device const block_q6_K * x, device float * y, int k) { - assert(k % QK_K == 0); - const int nb = k / QK_K; - - for (int i = 0; i < nb; i++) { - - device const uint8_t * ql = x[i].ql; - device const uint8_t * qh = x[i].qh; - device const int8_t * sc = x[i].scales; - - const float d = x[i].d; - -#if QK_K == 256 - for (int n = 0; n < QK_K; n += 128) { - for (int l = 0; l < 32; ++l) { - int is = l/16; - const int8_t q1 = (int8_t)((ql[l + 0] & 0xF) | (((qh[l] >> 0) & 3) << 4)) - 32; - const int8_t q2 = (int8_t)((ql[l + 32] & 0xF) | (((qh[l] >> 2) & 3) << 4)) - 32; - const int8_t q3 = (int8_t)((ql[l + 0] >> 4) | (((qh[l] >> 4) & 3) << 4)) - 32; - const int8_t q4 = (int8_t)((ql[l + 32] >> 4) | (((qh[l] >> 6) & 3) << 4)) - 32; - y[l + 0] = d * sc[is + 0] * q1; - y[l + 32] = d * sc[is + 2] * q2; - y[l + 64] = d * sc[is + 4] * q3; - y[l + 96] = d * sc[is + 6] * q4; - } - y += 128; - ql += 64; - qh += 32; - sc += 8; - } -#else - for (int l = 0; l < 16; ++l) { - const int8_t q1 = (int8_t)((ql[l+ 0] & 0xF) | (((qh[l] >> 0) & 3) << 4)) - 32; - const int8_t q2 = (int8_t)((ql[l+16] & 0xF) | (((qh[l] >> 2) & 3) << 4)) - 32; - const int8_t q3 = (int8_t)((ql[l+ 0] >> 4) | (((qh[l] >> 4) & 3) << 4)) - 32; - const int8_t q4 = (int8_t)((ql[l+16] >> 4) | (((qh[l] >> 6) & 3) << 4)) - 32; - y[l+ 0] = d * sc[0] * q1; - y[l+16] = d * sc[1] * q2; - y[l+32] = d * sc[2] * q3; - y[l+48] = d * sc[3] * q4; - } - y += 64; -#endif - } -} - -kernel void kernel_get_rows_q2_K( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q2_K( - (device const block_q2_K *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - -kernel void kernel_get_rows_q3_K( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q3_K( - (device const block_q3_K *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - -kernel void kernel_get_rows_q4_K( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q4_K( - (device const block_q4_K *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - -kernel void kernel_get_rows_q5_K( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q5_K( - (device const block_q5_K *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - -kernel void kernel_get_rows_q6_K( - device const void * src0, - device const int * src1, - device float * dst, - constant int64_t & ne00, - constant uint64_t & nb01, - constant uint64_t & nb1, - uint tpig[[thread_position_in_grid]]) { - const int i = tpig; - const int r = ((device int32_t *) src1)[i]; - - dequantize_row_q6_K( - (device const block_q6_K *) ((device char *) src0 + r*nb01), - (device float *) ((device char *) dst + i*nb1), ne00); -} - //====================================== dot products ========================= kernel void kernel_mul_mat_q2_K_f32( @@ -1218,155 +887,193 @@ kernel void kernel_mul_mat_q2_K_f32( device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { const int nb = ne00/QK_K; + const int r0 = tgpig.x; + const int r1 = tgpig.y; + const int r2 = tgpig.z; - const int64_t r0 = tgpig.x; - const int64_t r1 = tgpig.y; + const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST; + const int ib_row = first_row * nb; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q2_K * x = (device const block_q2_K *) src0 + ib_row + offset0; + device const float * y = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; + float yl[32]; + float sumf[N_DST]={0.f}, all_sum; - device const block_q2_K * x = (device const block_q2_K *) src0 + r0*nb; - device const float * yy = (device const float *) src1 + r1*ne10; - - const int nth = tptg.x*tptg.y; - const int ith = tptg.y*tpitg.x + tpitg.y; - - float sumf = 0; + const int step = sizeof(block_q2_K) * nb; #if QK_K == 256 - const int tid = tpitg.y; // 0...16 - const int il = tid/4; // 0...3 - const int ir = tid%4; // 0...3 - const int ip = il/2; // 0 or 1 - const int shift1 = 4*(il%2);// 0 or 4 - const int shift2 = shift1+2;// 2 or 6 - const int n = 8; - const int is = 4*il + (n*ir)/16; + const int ix = tiisg/8; // 0...3 + const int it = tiisg%8; // 0...7 + const int im = it/4; // 0 or 1 + const int ir = it%4; // 0...3 + const int is = (8*ir)/16;// 0 or 1 - const int y_offset = 64*il + n*ir; - const int q_offset = 32*ip + n*ir; + device const float * y4 = y + ix * QK_K + 128 * im + 8 * ir; - for (int i = tpitg.x; i < nb; i += tptg.x) { + for (int ib = ix; ib < nb; ib += 4) { - device const uint8_t * q = x[i].qs + q_offset; - device const uint8_t * scales = x[i].scales + is; - - uint8_t d1 = scales[0] & 0xF; - uint8_t d2 = scales[2] & 0xF; - uint8_t m1 = scales[0] >> 4; - uint8_t m2 = scales[2] >> 4; - - device const float * y = yy + i*QK_K + y_offset; - - float2 s = {0.f, 0.f}; - float smin = 0; - for (int l = 0; l < n; ++l) { - s[0] += y[l+ 0] * ((q[l] >> shift1) & 3); - s[1] += y[l+32] * ((q[l] >> shift2) & 3); - smin += y[l+ 0] * m1 + y[l+32] * m2; + float4 sumy = {0.f, 0.f, 0.f, 0.f}; + for (int i = 0; i < 8; ++i) { + yl[i+ 0] = y4[i+ 0]; sumy[0] += yl[i+ 0]; + yl[i+ 8] = y4[i+32]; sumy[1] += yl[i+ 8]; + yl[i+16] = y4[i+64]; sumy[2] += yl[i+16]; + yl[i+24] = y4[i+96]; sumy[3] += yl[i+24]; } - const float dall = (float)x[i].d; - const float dmin = (float)x[i].dmin; + device const uint8_t * sc = (device const uint8_t *)x[ib].scales + 8*im + is; + device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 16 * im + 4 * ir; + device const half * dh = &x[ib].d; - sumf += dall * (s[0] * d1 + s[1] * d2) - dmin * smin; + for (int row = 0; row < N_DST; row++) { + float4 acc1 = {0.f, 0.f, 0.f, 0.f}; + float4 acc2 = {0.f, 0.f, 0.f, 0.f}; + for (int i = 0; i < 8; i += 2) { + acc1[0] += yl[i+ 0] * (qs[i/2] & 0x0003); + acc2[0] += yl[i+ 1] * (qs[i/2] & 0x0300); + acc1[1] += yl[i+ 8] * (qs[i/2] & 0x000c); + acc2[1] += yl[i+ 9] * (qs[i/2] & 0x0c00); + acc1[2] += yl[i+16] * (qs[i/2] & 0x0030); + acc2[2] += yl[i+17] * (qs[i/2] & 0x3000); + acc1[3] += yl[i+24] * (qs[i/2] & 0x00c0); + acc2[3] += yl[i+25] * (qs[i/2] & 0xc000); + } + float dall = dh[0]; + float dmin = dh[1] * 1.f/16.f; + sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc2[0]) * (sc[0] & 0xF) * 1.f/ 1.f + + (acc1[1] + 1.f/256.f * acc2[1]) * (sc[2] & 0xF) * 1.f/ 4.f + + (acc1[2] + 1.f/256.f * acc2[2]) * (sc[4] & 0xF) * 1.f/16.f + + (acc1[3] + 1.f/256.f * acc2[3]) * (sc[6] & 0xF) * 1.f/64.f) - + dmin * (sumy[0] * (sc[0] & 0xF0) + sumy[1] * (sc[2] & 0xF0) + sumy[2] * (sc[4] & 0xF0) + sumy[3] * (sc[6] & 0xF0)); + + qs += step/2; + sc += step; + dh += step/2; + } + + y4 += 4 * QK_K; } #else - const int il = 4 * tpitg.x; + const int ix = tiisg/2; // 0...15 + const int it = tiisg%2; // 0...1 - uint32_t aux[2]; - thread const uint8_t * d = (thread const uint8_t *)aux; - thread const uint8_t * m = (thread const uint8_t *)aux + 4; + device const float * y4 = y + ix * QK_K + 8 * it; - for (int i = tpitg.y; i < nb; i += tptg.y) { + for (int ib = ix; ib < nb; ib += 16) { - device const uint8_t * q = x[i].qs + il; - device const float * y = yy + i*QK_K + il; - - const float dall = (float)x[i].d; - const float dmin = (float)x[i].dmin; - - device const uint32_t * a = (device const uint32_t *)x[i].scales; - aux[0] = a[0] & 0x0f0f0f0f; - aux[1] = (a[0] >> 4) & 0x0f0f0f0f; - - for (int l = 0; l < 4; ++l) { - sumf += y[l+ 0] * (dall * d[0] * ((q[l] >> 0) & 3) - dmin * m[0]) - + y[l+16] * (dall * d[1] * ((q[l] >> 2) & 3) - dmin * m[1]) - + y[l+32] * (dall * d[2] * ((q[l] >> 4) & 3) - dmin * m[2]) - + y[l+48] * (dall * d[3] * ((q[l] >> 6) & 3) - dmin * m[3]); + float4 sumy = {0.f, 0.f, 0.f, 0.f}; + for (int i = 0; i < 8; ++i) { + yl[i+ 0] = y4[i+ 0]; sumy[0] += yl[i+ 0]; + yl[i+ 8] = y4[i+16]; sumy[1] += yl[i+ 8]; + yl[i+16] = y4[i+32]; sumy[2] += yl[i+16]; + yl[i+24] = y4[i+48]; sumy[3] += yl[i+24]; } + + device const uint8_t * sc = (device const uint8_t *)x[ib].scales; + device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 4 * it; + device const half * dh = &x[ib].d; + + for (int row = 0; row < N_DST; row++) { + + float4 acc1 = {0.f, 0.f, 0.f, 0.f}; + float4 acc2 = {0.f, 0.f, 0.f, 0.f}; + for (int i = 0; i < 8; i += 2) { + acc1[0] += yl[i+ 0] * (qs[i/2] & 0x0003); + acc2[0] += yl[i+ 1] * (qs[i/2] & 0x0300); + acc1[1] += yl[i+ 8] * (qs[i/2] & 0x000c); + acc2[1] += yl[i+ 9] * (qs[i/2] & 0x0c00); + acc1[2] += yl[i+16] * (qs[i/2] & 0x0030); + acc2[2] += yl[i+17] * (qs[i/2] & 0x3000); + acc1[3] += yl[i+24] * (qs[i/2] & 0x00c0); + acc2[3] += yl[i+25] * (qs[i/2] & 0xc000); + } + + float dall = dh[0]; + float dmin = dh[1]; + sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc2[0]) * (sc[0] & 0xF) * 1.f/ 1.f + + (acc1[1] + 1.f/256.f * acc2[1]) * (sc[1] & 0xF) * 1.f/ 4.f + + (acc1[2] + 1.f/256.f * acc2[2]) * (sc[2] & 0xF) * 1.f/16.f + + (acc1[3] + 1.f/256.f * acc2[3]) * (sc[3] & 0xF) * 1.f/64.f) - + dmin * (sumy[0] * (sc[0] >> 4) + sumy[1] * (sc[1] >> 4) + sumy[2] * (sc[2] >> 4) + sumy[3] * (sc[3] >> 4)); + + qs += step/2; + sc += step; + dh += step/2; + } + + y4 += 16 * QK_K; } #endif - sum[ith] = sumf; - - // - // Accumulate the sum from all threads in the threadgroup - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (int i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; + for (int row = 0; row < N_DST; ++row) { + all_sum = simd_sum(sumf[row]); + if (tiisg == 0) { + dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = all_sum; + } } } +#if QK_K == 256 kernel void kernel_mul_mat_q3_K_f32( device const void * src0, device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - constant int64_t & ne1, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { const int nb = ne00/QK_K; const int64_t r0 = tgpig.x; const int64_t r1 = tgpig.y; + const int64_t r2 = tgpig.z; - device const block_q3_K * x = (device const block_q3_K *) src0 + r0*nb; - device const float * yy = (device const float *) src1 + r1*ne10; + const int first_row = (r0 * N_SIMDGROUP + sgitg) * 2; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q3_K * x = (device const block_q3_K *) src0 + first_row*nb + offset0; + device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - const int nth = tptg.x*tptg.y; - const int ith = tptg.y*tpitg.x + tpitg.y; - -#if QK_K == 256 - - const uint8_t m3 = 3; - const int8_t m4 = 4; + float yl[16]; const uint16_t kmask1 = 0x0303; const uint16_t kmask2 = 0x0f0f; - const int tid = tpitg.y; // expecting 16 + const int tid = tiisg/2; + const int ix = tiisg%2; const int ip = tid/8; // 0 or 1 const int il = tid/2 - 4*ip; // 0...3 const int ir = tid%2; const int n = 8; const int l0 = n*ir; - const uint8_t m = 1 << (4*ip + il); + const uint16_t m1 = 1 << (4*ip + il); + const uint16_t m2 = m1 << 8; const int shift = 2*il; + const uint16_t qm1 = 0x0003 << shift; + const uint16_t qm2 = 0x0300 << shift; + const int32_t v1 = 4 << shift; + const int32_t v2 = 1024 << shift; const uint16_t s_shift1 = 4*ip; const uint16_t s_shift2 = s_shift1 + 2*(il/2); @@ -1375,267 +1082,379 @@ kernel void kernel_mul_mat_q3_K_f32( const int q_offset = 32*ip + l0; const int y_offset = 128*ip + 32*il + l0; - //float sumf = 0; - float sumf1 = 0, sumf2 = 0; - for (int i = tpitg.x; i < nb; i += tptg.x) { + const int step = sizeof(block_q3_K) * nb / 2; - const float d_all = (float)(x[i].d); + device const float * y1 = yy + ix*QK_K + y_offset; - device const uint8_t * q = x[i].qs + q_offset; - device const uint8_t * h = x[i].hmask + l0; - device const float * y = yy + i * QK_K + y_offset; + float sumf1[2] = {0.f}, sumf2[2] = {0.f}; + for (int i = ix; i < nb; i += 2) { - device const uint16_t * a = (device const uint16_t *)x[i].scales; - const char2 scales = as_type((uint16_t)(((a[il] >> s_shift1) & kmask2) | (((a[ik] >> s_shift2) & kmask1) << 4))); - - float s = 0; - for (int l = 0; l < n; ++l) { - s += y[l+ 0] * ((int8_t)((q[l+ 0] >> shift) & m3) - ((h[l+ 0] & m) ? 0 : m4)); - } - float d = d_all * s; - sumf1 += d * scales[0]; - sumf2 += d; - //sumf += d_all * s * (scales[0] - 32); - - s = 0; - for (int l = 0; l < n; ++l) { - s += y[l+16] * ((int8_t)((q[l+16] >> shift) & m3) - ((h[l+16] & m) ? 0 : m4)); - } - d = d_all * s; - sumf1 += d * scales[1]; - sumf2 += d; - //sumf += d_all * s * (scales[1] - 32); - - } - - //sum[ith] = sumf; - sum[ith] = sumf1 - 32.f*sumf2; -#else - const int il = 4 * tpitg.x; // 0, 4, 8, 12 - const int im = il/8; // 0, 0, 1, 1 - const int in = il%8; // 0, 4, 0, 4 - - float sumf = 0; - - for (int i = tpitg.y; i < nb; i += tptg.y) { - - const float d_all = (float)(x[i].d); - - device const uint8_t * q = x[i].qs + il; - device const uint8_t * h = x[i].hmask + in; - device const float * y = yy + i * QK_K + il; - - const float d1 = d_all * ((x[i].scales[0] & 0xF) - 8); - const float d2 = d_all * ((x[i].scales[0] >> 4) - 8); - const float d3 = d_all * ((x[i].scales[1] & 0xF) - 8); - const float d4 = d_all * ((x[i].scales[1] >> 4) - 8); - - for (int l = 0; l < 4; ++l) { - const uint8_t hm = h[l] >> im; - sumf += y[l+ 0] * d1 * ((int8_t)((q[l+0] >> 0) & 3) - ((hm & 0x01) ? 0 : 4)) - + y[l+16] * d2 * ((int8_t)((q[l+0] >> 2) & 3) - ((hm & 0x04) ? 0 : 4)) - + y[l+32] * d3 * ((int8_t)((q[l+0] >> 4) & 3) - ((hm & 0x10) ? 0 : 4)) - + y[l+48] * d4 * ((int8_t)((q[l+0] >> 6) & 3) - ((hm & 0x40) ? 0 : 4)); + for (int l = 0; l < 8; ++l) { + yl[l+0] = y1[l+ 0]; + yl[l+8] = y1[l+16]; } + device const uint16_t * q = (device const uint16_t *)(x[i].qs + q_offset); + device const uint16_t * h = (device const uint16_t *)(x[i].hmask + l0); + device const uint16_t * a = (device const uint16_t *)(x[i].scales); + device const half * dh = &x[i].d; + + for (int row = 0; row < 2; ++row) { + + const float d_all = (float)dh[0]; + const char2 scales = as_type((uint16_t)(((a[il] >> s_shift1) & kmask2) | (((a[ik] >> s_shift2) & kmask1) << 4))); + + float s1 = 0, s2 = 0; + for (int l = 0; l < n; l += 2) { + const uint16_t qs = q[l/2]; + s1 += yl[l+0] * ((int32_t)(qs & qm1) - ((h[l/2] & m1) ? 0 : v1)); + s2 += yl[l+1] * ((int32_t)(qs & qm2) - ((h[l/2] & m2) ? 0 : v2)); + } + float d = d_all * (s1 + 1.f/256.f * s2); + sumf1[row] += d * scales[0]; + sumf2[row] += d; + + s1 = s2 = 0; + for (int l = 0; l < n; l += 2) { + const uint16_t qs = q[l/2+8]; + s1 += yl[l+8] * ((int32_t)(qs & qm1) - ((h[l/2+8] & m1) ? 0 : v1)); + s2 += yl[l+9] * ((int32_t)(qs & qm2) - ((h[l/2+8] & m2) ? 0 : v2)); + } + d = d_all * (s1 + 1.f/256.f * s2); + sumf1[row] += d * scales[1]; + sumf2[row] += d; + + q += step; + h += step; + a += step; + dh += step; + + } + + y1 += 2 * QK_K; + } - sum[ith] = sumf; - -#endif - - // - // Accumulate the sum from all threads in the threadgroup - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i]; + for (int row = 0; row < 2; ++row) { + const float sumf = (sumf1[row] - 32.f*sumf2[row]) / (1 << shift); + const float tot = simd_sum(sumf); + if (tiisg == 0) { + dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = tot; + } } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (int i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; - } - } - -kernel void kernel_mul_mat_q4_K_f32( +#else +kernel void kernel_mul_mat_q3_K_f32( device const void * src0, device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { const int nb = ne00/QK_K; const int64_t r0 = tgpig.x; const int64_t r1 = tgpig.y; + const int64_t r2 = tgpig.z; - const int nth = tptg.x*tptg.y; - const int ith = tptg.y*tpitg.x + tpitg.y; + const int row = 2 * r0 + sgitg; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q3_K * x = (device const block_q3_K *) src0 + row*nb + offset0; + device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; + const int ix = tiisg/4; + const int il = 4 * (tiisg%4);// 0, 4, 8, 12 + const int im = il/8; // 0, 0, 1, 1 + const int in = il%8; // 0, 4, 0, 4 - device const block_q4_K * x = (device const block_q4_K *) src0 + r0*nb; - device const float * yy = (device const float *) src1 + r1*ne10; + float2 sum = {0.f, 0.f}; - float sumf = 0; + for (int i = ix; i < nb; i += 8) { + + const float d_all = (float)(x[i].d); + + device const uint16_t * q = (device const uint16_t *)(x[i].qs + il); + device const uint16_t * h = (device const uint16_t *)(x[i].hmask + in); + device const uint16_t * s = (device const uint16_t *)(x[i].scales); + device const float * y = yy + i * QK_K + il; + + const float d1 = d_all * ((int32_t)(s[0] & 0x000F) - 8); + const float d2 = d_all * ((int32_t)(s[0] & 0x00F0) - 128) * 1.f/64.f; + const float d3 = d_all * ((int32_t)(s[0] & 0x0F00) - 2048) * 1.f/4096.f; + const float d4 = d_all * ((int32_t)(s[0] & 0xF000) - 32768) * 1.f/262144.f; + + for (int l = 0; l < 4; l += 2) { + const uint16_t hm = h[l/2] >> im; + sum[0] += y[l+ 0] * d1 * ((int32_t)(q[l/2] & 0x0003) - ((hm & 0x0001) ? 0 : 4)) + + y[l+16] * d2 * ((int32_t)(q[l/2] & 0x000c) - ((hm & 0x0004) ? 0 : 16)) + + y[l+32] * d3 * ((int32_t)(q[l/2] & 0x0030) - ((hm & 0x0010) ? 0 : 64)) + + y[l+48] * d4 * ((int32_t)(q[l/2] & 0x00c0) - ((hm & 0x0040) ? 0 : 256)); + sum[1] += y[l+ 1] * d1 * ((int32_t)(q[l/2] & 0x0300) - ((hm & 0x0100) ? 0 : 1024)) + + y[l+17] * d2 * ((int32_t)(q[l/2] & 0x0c00) - ((hm & 0x0400) ? 0 : 4096)) + + y[l+33] * d3 * ((int32_t)(q[l/2] & 0x3000) - ((hm & 0x1000) ? 0 : 16384)) + + y[l+49] * d4 * ((int32_t)(q[l/2] & 0xc000) - ((hm & 0x4000) ? 0 : 65536)); + } + + } + const float sumf = sum[0] + sum[1] * 1.f/256.f; + + const float tot = simd_sum(sumf); + if (tiisg == 0) { + dst[r1*ne0 + r2*ne0*ne1 + row] = tot; + } + +} +#endif #if QK_K == 256 +kernel void kernel_mul_mat_q4_K_f32( + device const void * src0, + device const float * src1, + device float * dst, + constant int64_t & ne00, + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { const uint16_t kmask1 = 0x3f3f; const uint16_t kmask2 = 0x0f0f; const uint16_t kmask3 = 0xc0c0; - const int tid = tpitg.y; // 0...16 - const int il = tid/4; // 0...3 - const int ir = tid - 4*il;// 0...3 - const int n = 4; + const int ix = tiisg/8; // 0...3 + const int it = tiisg%8; // 0...7 + const int im = it/4; // 0 or 1 + const int ir = it%4; // 0...3 - const int im = il/2; // 0 or 1. 0 computes 0,32 + 128,160, 1 computes 64,96 + 192,224 - const int in = il%2; + const int nb = ne00/QK_K; + const int r0 = tgpig.x; + const int r1 = tgpig.y; + const int r2 = tgpig.z; + const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST; + const int ib_row = first_row * nb; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q4_K * x = (device const block_q4_K *) src0 + ib_row + offset0; + device const float * y = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; + float yl[16]; + float yh[16]; + float sumf[N_DST]={0.f}, all_sum; - const int l0 = n*(2*ir + in); - const int q_offset = 32*im + l0; - const int y_offset = 64*im + l0; + const int step = sizeof(block_q4_K) * nb / 2; - uchar2 sc1, sc2, sc3, sc4; + device const float * y4 = y + ix * QK_K + 64 * im + 8 * ir; - for (int i = tpitg.x; i < nb; i += tptg.x) { + uint16_t sc16[4]; + thread const uint8_t * sc8 = (thread const uint8_t *)sc16; - device const uint8_t * q1 = (x + i)->qs + q_offset; - device const uint8_t * q2 = q1 + 64; - device const float * y1 = yy + i*QK_K + y_offset; - device const float * y2 = y1 + 128; - - const float dall = (float)((x + i)->d); - const float dmin = (float)((x + i)->dmin); - - device const uint16_t * a = (device const uint16_t *)(x + i)->scales; - sc1 = as_type((uint16_t)(a[im+0] & kmask1)); - sc2 = as_type((uint16_t)(a[im+2] & kmask1)); - sc3 = as_type((uint16_t)(((a[im+4] >> 0) & kmask2) | ((a[im+0] & kmask3) >> 2))); - sc4 = as_type((uint16_t)(((a[im+4] >> 4) & kmask2) | ((a[im+2] & kmask3) >> 2))); - - float4 s = {0.f, 0.f, 0.f, 0.f}; - float smin = 0; - for (int l = 0; l < n; ++l) { - - s[0] += y1[l] * (q1[l] & 0xF); s[1] += y1[l+32] * (q1[l] >> 4); - s[2] += y2[l] * (q2[l] & 0xF); s[3] += y2[l+32] * (q2[l] >> 4); - smin += y1[l] * sc2[0] + y1[l+32] * sc2[1] + y2[l] * sc4[0] + y2[l+32] * sc4[1]; + for (int ib = ix; ib < nb; ib += 4) { + float4 sumy = {0.f, 0.f, 0.f, 0.f}; + for (int i = 0; i < 8; ++i) { + yl[i+0] = y4[i+ 0]; sumy[0] += yl[i+0]; + yl[i+8] = y4[i+ 32]; sumy[1] += yl[i+8]; + yh[i+0] = y4[i+128]; sumy[2] += yh[i+0]; + yh[i+8] = y4[i+160]; sumy[3] += yh[i+8]; } - sumf += dall * (s[0] * sc1[0] + s[1] * sc1[1] + s[2] * sc3[0] + s[3] * sc3[1]) - dmin * smin; + device const uint16_t * sc = (device const uint16_t *)x[ib].scales + im; + device const uint16_t * q1 = (device const uint16_t *)x[ib].qs + 16 * im + 4 * ir; + device const half * dh = &x[ib].d; + + for (int row = 0; row < N_DST; row++) { + + sc16[0] = sc[0] & kmask1; + sc16[1] = sc[2] & kmask1; + sc16[2] = ((sc[4] >> 0) & kmask2) | ((sc[0] & kmask3) >> 2); + sc16[3] = ((sc[4] >> 4) & kmask2) | ((sc[2] & kmask3) >> 2); + + device const uint16_t * q2 = q1 + 32; + + float4 acc1 = {0.f, 0.f, 0.f, 0.f}; + float4 acc2 = {0.f, 0.f, 0.f, 0.f}; + for (int i = 0; i < 8; i += 2) { + acc1[0] += yl[i+0] * (q1[i/2] & 0x000F); + acc1[1] += yl[i+1] * (q1[i/2] & 0x0F00); + acc1[2] += yl[i+8] * (q1[i/2] & 0x00F0); + acc1[3] += yl[i+9] * (q1[i/2] & 0xF000); + acc2[0] += yh[i+0] * (q2[i/2] & 0x000F); + acc2[1] += yh[i+1] * (q2[i/2] & 0x0F00); + acc2[2] += yh[i+8] * (q2[i/2] & 0x00F0); + acc2[3] += yh[i+9] * (q2[i/2] & 0xF000); + } + + float dall = dh[0]; + float dmin = dh[1]; + sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc1[1]) * sc8[0] + + (acc1[2] + 1.f/256.f * acc1[3]) * sc8[1] * 1.f/16.f + + (acc2[0] + 1.f/256.f * acc2[1]) * sc8[4] + + (acc2[2] + 1.f/256.f * acc2[3]) * sc8[5] * 1.f/16.f) - + dmin * (sumy[0] * sc8[2] + sumy[1] * sc8[3] + sumy[2] * sc8[6] + sumy[3] * sc8[7]); + + q1 += step; + sc += step; + dh += step; + } + + y4 += 4 * QK_K; } -#else - uint16_t aux16[2]; - thread const uint8_t * scales = (thread const uint8_t *)aux16; - const int il = 4*tpitg.x; - - for (int i = tpitg.y; i < nb; i += tptg.y) { - - device const uint8_t * q = x[i].qs + il; - device const float * y = yy + i * QK_K + il; - - const float d = (float)x[i].d[0]; - const float m = (float)x[i].d[1]; - - device const uint16_t * a = (device const uint16_t *)x[i].scales; - aux16[0] = a[0] & 0x0f0f; - aux16[1] = (a[0] >> 4) & 0x0f0f; - - for (int l = 0; l < 4; ++l) { - sumf += d * scales[0] * (y[l+ 0] * (q[l] & 0xF) + y[l+16] * (q[l+16] & 0xF)) - m * scales[2] * (y[l+ 0] + y[l+16]) - + d * scales[1] * (y[l+32] * (q[l] >> 4) + y[l+48] * (q[l+16] >> 4)) - m * scales[3] * (y[l+32] + y[l+48]); + for (int row = 0; row < N_DST; ++row) { + all_sum = simd_sum(sumf[row]); + if (tiisg == 0) { + dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = all_sum; } } -#endif - - sum[ith] = sumf; - - // - // Accumulate the sum from all threads in the threadgroup - // This version is slightly faster than the commented out one below, - // which I copy-pasted from ggerganov's q4_0 dot product for metal. - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (int i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; - } - - //// accumulate the sum from all threads in the threadgroup - //threadgroup_barrier(mem_flags::mem_threadgroup); - //for (uint i = nth/2; i > 0; i /= 2) { - // if (ith < i) { - // sum[ith] += sum[ith + i]; - // } - // threadgroup_barrier(mem_flags::mem_threadgroup); - //} - - //if (ith == 0) { - // dst[r1*ne0 + r0] = sum[0]; - //} } +#else +kernel void kernel_mul_mat_q4_K_f32( + device const void * src0, + device const float * src1, + device float * dst, + constant int64_t & ne00, + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { + + const int ix = tiisg/4; // 0...7 + const int it = tiisg%4; // 0...3 + + const int nb = ne00/QK_K; + const int r0 = tgpig.x; + const int r1 = tgpig.y; + const int r2 = tgpig.z; + const int first_row = (r0 * N_SIMDGROUP + sgitg) * N_DST; + const int ib_row = first_row * nb; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q4_K * x = (device const block_q4_K *) src0 + ib_row + offset0; + device const float * y = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; + float yl[8]; + float yh[8]; + float sumf[N_DST]={0.f}, all_sum; + + const int step = sizeof(block_q4_K) * nb / 2; + + device const float * y4 = y + ix * QK_K + 8 * it; + + uint16_t sc16[4]; + + for (int ib = ix; ib < nb; ib += 8) { + + float2 sumy = {0.f, 0.f}; + for (int i = 0; i < 8; ++i) { + yl[i] = y4[i+ 0]; sumy[0] += yl[i]; + yh[i] = y4[i+32]; sumy[1] += yh[i]; + } + + device const uint16_t * sc = (device const uint16_t *)x[ib].scales; + device const uint16_t * qs = (device const uint16_t *)x[ib].qs + 4 * it; + device const half * dh = x[ib].d; + + for (int row = 0; row < N_DST; row++) { + + sc16[0] = sc[0] & 0x000f; + sc16[1] = sc[0] & 0x0f00; + sc16[2] = sc[0] & 0x00f0; + sc16[3] = sc[0] & 0xf000; + + float2 acc1 = {0.f, 0.f}; + float2 acc2 = {0.f, 0.f}; + for (int i = 0; i < 8; i += 2) { + acc1[0] += yl[i+0] * (qs[i/2] & 0x000F); + acc1[1] += yl[i+1] * (qs[i/2] & 0x0F00); + acc2[0] += yh[i+0] * (qs[i/2] & 0x00F0); + acc2[1] += yh[i+1] * (qs[i/2] & 0xF000); + } + + float dall = dh[0]; + float dmin = dh[1]; + sumf[row] += dall * ((acc1[0] + 1.f/256.f * acc1[1]) * sc16[0] + + (acc2[0] + 1.f/256.f * acc2[1]) * sc16[1] * 1.f/4096.f) - + dmin * 1.f/16.f * (sumy[0] * sc16[2] + sumy[1] * sc16[3] * 1.f/256.f); + + qs += step; + sc += step; + dh += step; + } + + y4 += 8 * QK_K; + } + + for (int row = 0; row < N_DST; ++row) { + all_sum = simd_sum(sumf[row]); + if (tiisg == 0) { + dst[r1*ne0+ r2*ne0*ne1 + first_row + row] = all_sum; + } + } +} +#endif kernel void kernel_mul_mat_q5_K_f32( device const void * src0, device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { const int nb = ne00/QK_K; const int64_t r0 = tgpig.x; const int64_t r1 = tgpig.y; + const int r2 = tgpig.z; - device const block_q5_K * x = (device const block_q5_K *) src0 + r0*nb; - device const float * yy = (device const float *) src1 + r1*ne10; + const int first_row = (r0 * N_SIMDGROUP + sgitg) * 2; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q5_K * x = (device const block_q5_K *) src0 + first_row*nb + offset0; + device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; - const int nth = tptg.x*tptg.y; - const int ith = tptg.y*tpitg.x + tpitg.y; + float sumf[2]={0.f}; - float sumf = 0; + const int step = sizeof(block_q5_K) * nb; #if QK_K == 256 +# + float yl[16], yh[16]; const uint16_t kmask1 = 0x3f3f; const uint16_t kmask2 = 0x0f0f; const uint16_t kmask3 = 0xc0c0; - const int tid = tpitg.y; // 0...16 - const int il = tid/4; // 0...3 - const int ir = tid - 4*il;// 0...3 - const int n = 4; + const int tid = tiisg/4; + const int ix = tiisg%4; + const int im = tid/4; + const int ir = tid%4; + const int n = 8; - const int im = il/2; // 0 or 1. 0 computes 0,32 + 128,160, 1 computes 64,96 + 192,224 - const int in = il%2; - - const int l0 = n*(2*ir + in); + const int l0 = n*ir; const int q_offset = 32*im + l0; const int y_offset = 64*im + l0; @@ -1644,78 +1463,113 @@ kernel void kernel_mul_mat_q5_K_f32( const uint8_t hm3 = hm1 << 4; const uint8_t hm4 = hm2 << 4; - uchar2 sc1, sc2, sc3, sc4; + uint16_t sc16[4]; + thread const uint8_t * sc8 = (thread const uint8_t *)sc16; - for (int i = tpitg.x; i < nb; i += tptg.x) { + device const float * y1 = yy + ix*QK_K + y_offset; - device const uint8_t * q1 = (x + i)->qs + q_offset; - device const uint8_t * q2 = q1 + 64; - device const uint8_t * qh = (x + i)->qh + l0; - device const float * y1 = yy + i*QK_K + y_offset; - device const float * y2 = y1 + 128; + for (int i = ix; i < nb; i += 4) { - const float dall = (float)((x + i)->d); - const float dmin = (float)((x + i)->dmin); + device const uint8_t * q1 = x[i].qs + q_offset; + device const uint8_t * qh = x[i].qh + l0; + device const half * dh = &x[i].d; + device const uint16_t * a = (device const uint16_t *)x[i].scales + im; - device const uint16_t * a = (device const uint16_t *)(x + i)->scales; - sc1 = as_type((uint16_t)(a[im+0] & kmask1)); - sc2 = as_type((uint16_t)(a[im+2] & kmask1)); - sc3 = as_type((uint16_t)(((a[im+4] >> 0) & kmask2) | ((a[im+0] & kmask3) >> 2))); - sc4 = as_type((uint16_t)(((a[im+4] >> 4) & kmask2) | ((a[im+2] & kmask3) >> 2))); + device const float * y2 = y1 + 128; + float4 sumy = {0.f, 0.f, 0.f, 0.f}; + for (int l = 0; l < 8; ++l) { + yl[l+0] = y1[l+ 0]; sumy[0] += yl[l+0]; + yl[l+8] = y1[l+32]; sumy[1] += yl[l+8]; + yh[l+0] = y2[l+ 0]; sumy[2] += yh[l+0]; + yh[l+8] = y2[l+32]; sumy[3] += yh[l+8]; + } - float4 s = {0.f, 0.f, 0.f, 0.f}; - float smin = 0; - for (int l = 0; l < n; ++l) { + for (int row = 0; row < 2; ++row) { - s[0] += y1[l+ 0] * ((q1[l] & 0xF) + (qh[l] & hm1 ? 16 : 0)); - s[1] += y1[l+32] * ((q1[l] >> 4) + (qh[l] & hm2 ? 16 : 0)); - s[2] += y2[l+ 0] * ((q2[l] & 0xF) + (qh[l] & hm3 ? 16 : 0)); - s[3] += y2[l+32] * ((q2[l] >> 4) + (qh[l] & hm4 ? 16 : 0)); - smin += y1[l] * sc2[0] + y1[l+32] * sc2[1] + y2[l] * sc4[0] + y2[l+32] * sc4[1]; + device const uint8_t * q2 = q1 + 64; + + sc16[0] = a[0] & kmask1; + sc16[1] = a[2] & kmask1; + sc16[2] = ((a[4] >> 0) & kmask2) | ((a[0] & kmask3) >> 2); + sc16[3] = ((a[4] >> 4) & kmask2) | ((a[2] & kmask3) >> 2); + + float4 acc = {0.f, 0.f, 0.f, 0.f}; + for (int l = 0; l < n; ++l) { + uint8_t h = qh[l]; + acc[0] += yl[l+0] * ((uint16_t)(q1[l] & 0x0F) + (h & hm1 ? 16 : 0)); + acc[1] += yl[l+8] * ((uint16_t)(q1[l] & 0xF0) + (h & hm2 ? 256 : 0)); + acc[2] += yh[l+0] * ((uint16_t)(q2[l] & 0x0F) + (h & hm3 ? 16 : 0)); + acc[3] += yh[l+8] * ((uint16_t)(q2[l] & 0xF0) + (h & hm4 ? 256 : 0)); + } + const float dall = dh[0]; + const float dmin = dh[1]; + sumf[row] += dall * (acc[0] * sc8[0] + acc[1] * sc8[1] * 1.f/16.f + acc[2] * sc8[4] + acc[3] * sc8[5] * 1.f/16.f) - + dmin * (sumy[0] * sc8[2] + sumy[1] * sc8[3] + sumy[2] * sc8[6] + sumy[3] * sc8[7]); + + q1 += step; + qh += step; + dh += step/2; + a += step/2; } - sumf += dall * (s[0] * sc1[0] + s[1] * sc1[1] + s[2] * sc3[0] + s[3] * sc3[1]) - dmin * smin; + + y1 += 4 * QK_K; } #else - const int il = 4 * tpitg.x; // 0, 4, 8, 12 - const int im = il/8; // 0, 0, 1, 1 - const int in = il%8; // 0, 4, 0, 4 + float yl[8], yh[8]; - for (int i = tpitg.y; i < nb; i += tptg.y) { + const int il = 4 * (tiisg/8); // 0, 4, 8, 12 + const int ix = tiisg%8; + const int im = il/8; // 0, 0, 1, 1 + const int in = il%8; // 0, 4, 0, 4 - const float d = (float)x[i].d; + device const float * y = yy + ix*QK_K + il; + + for (int i = ix; i < nb; i += 8) { + + for (int l = 0; l < 4; ++l) { + yl[l+0] = y[l+ 0]; + yl[l+4] = y[l+16]; + yh[l+0] = y[l+32]; + yh[l+4] = y[l+48]; + } + + device const half * dh = &x[i].d; device const uint8_t * q = x[i].qs + il; device const uint8_t * h = x[i].qh + in; device const int8_t * s = x[i].scales; - device const float * y = yy + i*QK_K + il; - for (int l = 0; l < 4; ++l) { - const uint8_t hl = h[l] >> im; - sumf += y[l+ 0] * d * s[0] * ((q[l+ 0] & 0xF) - (hl & 0x01 ? 0 : 16)) - + y[l+16] * d * s[1] * ((q[l+16] & 0xF) - (hl & 0x04 ? 0 : 16)) - + y[l+32] * d * s[2] * ((q[l+ 0] >> 4) - (hl & 0x10 ? 0 : 16)) - + y[l+48] * d * s[3] * ((q[l+16] >> 4) - (hl & 0x40 ? 0 : 16)); + for (int row = 0; row < 2; ++row) { + + const float d = dh[0]; + + float2 acc = {0.f, 0.f}; + for (int l = 0; l < 4; ++l) { + const uint8_t hl = h[l] >> im; + acc[0] += yl[l+0] * s[0] * ((int16_t)(q[l+ 0] & 0x0F) - (hl & 0x01 ? 0 : 16)) + + yl[l+4] * s[1] * ((int16_t)(q[l+16] & 0x0F) - (hl & 0x04 ? 0 : 16)); + acc[1] += yh[l+0] * s[2] * ((int16_t)(q[l+ 0] & 0xF0) - (hl & 0x10 ? 0 : 256)) + + yh[l+4] * s[3] * ((int16_t)(q[l+16] & 0xF0) - (hl & 0x40 ? 0 : 256)); + } + sumf[row] += d * (acc[0] + 1.f/16.f * acc[1]); + + q += step; + h += step; + s += step; + dh += step/2; + } + + y += 8 * QK_K; } #endif - sum[ith] = sumf; - // - // Accumulate the sum from all threads in the threadgroup - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - sum[ith] += sum[ith+1] + sum[ith+2] + sum[ith+3]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - sum[ith] += sum[ith+4] + sum[ith+8] + sum[ith+12]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (int i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; + for (int row = 0; row < 2; ++row) { + const float tot = simd_sum(sumf[row]); + if (tiisg == 0) { + dst[r1*ne0 + r2*ne0*ne1 + first_row + row] = tot; + } } } @@ -1725,12 +1579,16 @@ kernel void kernel_mul_mat_q6_K_f32( device const float * src1, device float * dst, constant int64_t & ne00, - constant int64_t & ne10, - constant int64_t & ne0, - threadgroup float * sum [[threadgroup(0)]], - uint2 tgpig[[threadgroup_position_in_grid]], - uint2 tpitg[[thread_position_in_threadgroup]], - uint2 tptg[[threads_per_threadgroup]]) { + constant int64_t & ne01[[buffer(4)]], + constant int64_t & ne02[[buffer(5)]], + constant int64_t & ne10[[buffer(9)]], + constant int64_t & ne12[[buffer(11)]], + constant int64_t & ne0[[buffer(15)]], + constant int64_t & ne1[[buffer(16)]], + constant uint & gqa[[buffer(17)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiisg[[thread_index_in_simdgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { const uint8_t kmask1 = 0x03; const uint8_t kmask2 = 0x0C; @@ -1741,20 +1599,20 @@ kernel void kernel_mul_mat_q6_K_f32( const int64_t r0 = tgpig.x; const int64_t r1 = tgpig.y; + const int r2 = tgpig.z; - device const block_q6_K * x = (device const block_q6_K *) src0 + r0*nb; - device const float * yy = (device const float *) src1 + r1*ne10; - - const int nth = tptg.x*tptg.y; - const int ith = tptg.y*tpitg.x + tpitg.y; + const int row = 2 * r0 + sgitg; + const uint offset0 = r2/gqa*(nb*ne0); + device const block_q6_K * x = (device const block_q6_K *) src0 + row * nb + offset0; + device const float * yy = (device const float *) src1 + r1*ne10 + r2*ne00*ne1; float sumf = 0; #if QK_K == 256 - // Note: we absolutely assume that tptg.y = 16 and QK_K = 256! - const int iqs = 16 * tpitg.y; - const int ip = iqs / 128; // 0 or 1 - const int il = (iqs - 128*ip)/16; // 0...7 + const int tid = tiisg/2; + const int ix = tiisg%2; + const int ip = tid/8; // 0 or 1 + const int il = tid%8; const int n = 4; const int l0 = n*il; const int is = 8*ip + l0/16; @@ -1763,9 +1621,10 @@ kernel void kernel_mul_mat_q6_K_f32( const int q_offset_l = 64*ip + l0; const int q_offset_h = 32*ip + l0; - for (int i = tpitg.x; i < nb; i += tptg.x) { + for (int i = ix; i < nb; i += 2) { - device const uint8_t * ql = x[i].ql + q_offset_l; + device const uint8_t * q1 = x[i].ql + q_offset_l; + device const uint8_t * q2 = q1 + 32; device const uint8_t * qh = x[i].qh + q_offset_h; device const int8_t * sc = x[i].scales + is; @@ -1775,19 +1634,21 @@ kernel void kernel_mul_mat_q6_K_f32( float4 sums = {0.f, 0.f, 0.f, 0.f}; for (int l = 0; l < n; ++l) { - sums[0] += y[l+ 0] * ((int8_t)((ql[l+ 0] & 0xF) | ((qh[l] & kmask1) << 4)) - 32); - sums[1] += y[l+32] * ((int8_t)((ql[l+32] & 0xF) | ((qh[l] & kmask2) << 2)) - 32); - sums[2] += y[l+64] * ((int8_t)((ql[l+ 0] >> 4) | ((qh[l] & kmask3) << 0)) - 32); - sums[3] += y[l+96] * ((int8_t)((ql[l+32] >> 4) | ((qh[l] & kmask4) >> 2)) - 32); + sums[0] += y[l+ 0] * ((int8_t)((q1[l] & 0xF) | ((qh[l] & kmask1) << 4)) - 32); + sums[1] += y[l+32] * ((int8_t)((q2[l] & 0xF) | ((qh[l] & kmask2) << 2)) - 32); + sums[2] += y[l+64] * ((int8_t)((q1[l] >> 4) | ((qh[l] & kmask3) << 0)) - 32); + sums[3] += y[l+96] * ((int8_t)((q2[l] >> 4) | ((qh[l] & kmask4) >> 2)) - 32); } sumf += dall * (sums[0] * sc[0] + sums[1] * sc[2] + sums[2] * sc[4] + sums[3] * sc[6]); } -#else - const int il = 4*tpitg.x; // 0, 4, 8, 12 - for (int i = tpitg.y; i < nb; i += tptg.y) { +#else + const int ix = tiisg/4; + const int il = 4*(tiisg%4); + + for (int i = ix; i < nb; i += 8) { device const float * y = yy + i * QK_K + il; device const uint8_t * ql = x[i].ql + il; device const uint8_t * qh = x[i].qh + il; @@ -1807,23 +1668,382 @@ kernel void kernel_mul_mat_q6_K_f32( #endif - sum[ith] = sumf; - - // - // Accumulate the sum from all threads in the threadgroup - // - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%4 == 0) { - for (int i = 1; i < 4; ++i) sum[ith] += sum[ith + i]; + const float tot = simd_sum(sumf); + if (tiisg == 0) { + dst[r1*ne0 + r2*ne0*ne1 + row] = tot; } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith%16 == 0) { - for (int i = 4; i < 16; i += 4) sum[ith] += sum[ith + i]; - } - threadgroup_barrier(mem_flags::mem_threadgroup); - if (ith == 0) { - for (int i = 16; i < nth; i += 16) sum[0] += sum[i]; - dst[r1*ne0 + r0] = sum[0]; - } - } + +//============================= templates and their specializations ============================= + +template +void dequantize_f16(device const half4x4 * src, short il, thread type4x4 & reg) { + half4x4 temp = *(((device half4x4 *)src)); + for (int i = 0; i < 16; i++){ + reg[i/4][i%4] = temp[i/4][i%4]; + } +} + +template +void dequantize_q4_0(device const block_q4_0 *xb, short il, thread type4x4 & reg) { + device const uint16_t * qs = ((device const uint16_t *)xb + 1); + const half d = il ? (xb->d / 16.h) : xb->d; + const half m = il ? ( -8.h * 16.h) : -8.h; + const ushort mask0 = il ? 0x00F0 : 0x000F; + const ushort mask1 = il ? 0xF000 : 0x0F00; + + for (int i=0;i<8;i++) { + reg[i/2][2*(i%2)] = (((qs[i] & mask0) ) + m) * d; + reg[i/2][2*(i%2)+1] = (((qs[i] & mask1) >> 8) + m) * d; + } +} + +template +void dequantize_q4_1(device const block_q4_1 *xb, short il, thread type4x4 & reg) { + device const uint16_t * qs = ((device const uint16_t *)xb + 2); + const half d = il ? (xb->d / 16.h) : xb->d; + const half m = xb->m; + const ushort mask0 = il ? 0x00F0 : 0x000F; + const ushort mask1 = il ? 0xF000 : 0x0F00; + + for (int i=0;i<8;i++) { + reg[i/2][2*(i%2)] = (((qs[i] & mask0) ) * d) + m; + reg[i/2][2*(i%2)+1] = (((qs[i] & mask1) >> 8) * d) + m; + } +} + +template +void dequantize_q8_0(device const block_q8_0 *xb, short il, thread type4x4 & reg) { + device const int8_t * qs = ((device const int8_t *)xb->qs); + const half d = xb->d; + + for (int i=0;i<16;i++) { + reg[i/4][i%4] = (qs[i + 16*il] * d); + } +} + +template +void dequantize_q2_K(device const block_q2_K *xb, short il, thread type4x4 & reg) { + const half d = xb->d; + const half min = xb->dmin; + device const uint8_t * q = (device const uint8_t *)xb->qs; + half dl, ml; + uint8_t sc = xb->scales[il]; + +#if QK_K == 256 + q = q + 32*(il/8) + 16*(il&1); + il = (il/2)%4; +#endif + half coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h); + uchar mask = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); + dl = d * (sc & 0xF) * coef, ml = min * (sc >> 4); + for (int i = 0; i < 16; ++i) { + reg[i/4][i%4] = dl * (q[i] & mask) - ml; + } +} + +template +void dequantize_q3_K(device const block_q3_K *xb, short il, thread type4x4 & reg) { + const float d_all = (float)(xb->d); + device const uint8_t * q = (device const uint8_t *)xb->qs; + device const uint8_t * h = (device const uint8_t *)xb->hmask; + device const int8_t * scales = (device const int8_t *)xb->scales; + +#if QK_K == 256 + q = q + 32 * (il/8) + 16 * (il&1); + h = h + 16 * (il&1); + uint8_t m = 1 << (il/2); + uint16_t kmask1 = (il/4)>1 ? ((il/4)>2 ? 192 : 48) : \ + ((il/4)>0 ? 12 : 3); + uint16_t kmask2 = il/8 ? 0xF0 : 0x0F; + uint16_t scale_2 = scales[il%8], scale_1 = scales[8 + il%4]; + int16_t dl_int = (il/4)&1 ? (scale_2&kmask2) | ((scale_1&kmask1) << 2) : \ + (scale_2&kmask2) | ((scale_1&kmask1) << 4); + float dl = il<8 ? d_all * (dl_int - 32.f) : d_all * (dl_int / 16.f - 32.f); + + il = (il/2)%4; + float coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h); + uint8_t mask = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); + + for (int i = 0; i < 16; ++i) { + reg[i/4][i%4] = coef * dl * ((q[i] & mask) - ((h[i] & m) ? 0 : 4.f/coef)); + } +#else + float kcoef = il&1 ? 1.f/16.f : 1.f; + uint16_t kmask = il&1 ? 0xF0 : 0x0F; + float dl = d_all * ((scales[il/2] & kmask) * kcoef - 8); + float coef = il>1 ? (il>2 ? 1/64.h : 1/16.h) : (il>0 ? 1/4.h : 1.h); + uint8_t mask = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); + uint8_t m = 1<<(il*2); + for (int i = 0; i < 16; ++i) { + reg[i/4][i%4] = coef * dl * ((q[i] & mask) - ((h[i%8] & (m * (1 + i/8))) ? 0 : 4.f/coef)); + } +#endif +} + +template +void dequantize_q4_K(device const block_q4_K *xb, short il, thread type4x4 & reg) { + device const uint8_t * q = xb->qs; + +#if QK_K == 256 + const float d = (float)(xb->d); + const float min = (float)(xb->dmin); + short is = (il/4) * 2; + q = q + (il/4) * 32 + 16 * (il&1); + il = il%4; + const uchar4 sc = get_scale_min_k4(is, xb->scales); + const float dl = il<2 ? d * sc[0] : d * sc[2]/16.h; + const float ml = il<2 ? min * sc[1] : min * sc[3]; +#else + q = q + 16 * (il&1); + device const uint8_t * s = xb->scales; + device const half2 * dh = (device const half2 *)xb->d; + const float2 d = (float2)dh[0]; + const float dl = il<2 ? d[0] * (s[0]&0xF) : d[0] * (s[1]&0xF)/16.h; + const float ml = il<2 ? d[1] * (s[0]>>4) : d[1 ]* (s[1]>>4); +#endif + const ushort mask = il<2 ? 0x0F : 0xF0; + for (int i = 0; i < 16; ++i) { + reg[i/4][i%4] = dl * (q[i] & mask) - ml; + } +} + +template +void dequantize_q5_K(device const block_q5_K *xb, short il, thread type4x4 & reg) { + device const uint8_t * q = xb->qs; + device const uint8_t * qh = xb->qh; + +#if QK_K == 256 + const float d = (float)(xb->d); + const float min = (float)(xb->dmin); + short is = (il/4) * 2; + q = q + 32 * (il/4) + 16 * (il&1); + qh = qh + 16 * (il&1); + uint8_t ul = 1 << (il/2); + il = il%4; + const uchar4 sc = get_scale_min_k4(is, xb->scales); + const float dl = il<2 ? d * sc[0] : d * sc[2]/16.h; + const float ml = il<2 ? min * sc[1] : min * sc[3]; + + const ushort mask = il<2 ? 0x0F : 0xF0; + const float qh_val = il<2 ? 16.f : 256.f; + for (int i = 0; i < 16; ++i) { + reg[i/4][i%4] = dl * ((q[i] & mask) + (qh[i] & ul ? qh_val : 0)) - ml; + } +#else + q = q + 16 * (il&1); + device const int8_t * s = xb->scales; + const float dl = xb->d * s[il]; + uint8_t m = 1<<(il*2); + const float coef = il<2 ? 1.f : 1.f/16.f; + const ushort mask = il<2 ? 0x0F : 0xF0; + for (int i = 0; i < 16; ++i) { + reg[i/4][i%4] = coef * dl * ((q[i] & mask) - (qh[i%8] & (m*(1+i/8)) ? 0.f : 16.f/coef)); + } +#endif +} + +template +void dequantize_q6_K(device const block_q6_K *xb, short il, thread type4x4 & reg) { + const float d_all = (float)(xb->d); + device const uint8_t * ql = (device const uint8_t *)xb->ql; + device const uint8_t * qh = (device const uint8_t *)xb->qh; + device const int8_t * scales = (device const int8_t *)xb->scales; + +#if QK_K == 256 + ql = ql + 64*(il/8) + 32*((il/2)&1) + 16*(il&1); + qh = qh + 32*(il/8) + 16*(il&1); + float sc = scales[(il%2) + 2 * ((il/2))]; + il = (il/2)%4; +#else + ql = ql + 16 * (il&1); + float sc = scales[il]; +#endif + for (int i = 0; i < 16; ++i) { + uint16_t kmask1 = il>1 ? (il>2 ? 192 : 48) : (il>0 ? 12 : 3); + uint16_t kmask2 = il>1 ? 0xF0 : 0x0F; + const float coef = il>1 ? 1.f/16.f : 1.f; + float q = il&1 ? ((ql[i]&kmask2)|((qh[i]&kmask1)<<2)) - 32.f/coef : \ + ((ql[i]&kmask2)|((qh[i]&kmask1)<<4)) - 32.f/coef; + reg[i/4][i%4] = d_all * sc * q * coef; + } +} + +template +kernel void kernel_get_rows( + device const void * src0, + device const int * src1, + device float * dst, + constant int64_t & ne00, + constant uint64_t & nb01, + constant uint64_t & nb1, + uint tgpig[[threadgroup_position_in_grid]], + uint tiitg[[thread_index_in_threadgroup]], + uint tptg[[threads_per_threadgroup]]) { + const int i = tgpig; + const int r = ((device int32_t *) src1)[i]; + + for (int ind = tiitg; ind < ne00/16; ind += tptg) { + float4x4 temp; + dequantize_func( + ((device const block_q *) ((device char *) src0 + r*nb01)) + ind/nl, ind%nl, temp); + *(((device float4x4 *) ((device char *) dst + i*nb1)) + ind) = temp; + } +} + +#define BLOCK_SIZE_M 64 // 8 simdgroup matrices from matrix A +#define BLOCK_SIZE_N 32 // 4 simdgroup matrices from matrix A +#define BLOCK_SIZE_K 32 +#define THREAD_MAT_M 4 // each thread take 4 simdgroup matrices from matrix A +#define THREAD_MAT_N 2 // each thread take 2 simdgroup matrices from matrix B +#define THREAD_PER_BLOCK 128 +#define THREAD_PER_ROW 2 // 2 thread for each row in matrix A to load numbers +#define THREAD_PER_COL 4 // 4 thread for each row in matrix B to load numbers +#define SG_MAT_SIZE 64 // simdgroup matrix is of shape 8x8 +#define SG_MAT_ROW 8 + +// each block_q contains 16*nl weights +template +kernel void kernel_mul_mm(device const uchar * src0, + device const float * src1, + device float * dst, + constant int64_t & ne00, + constant int64_t & ne02, + constant int64_t & nb01, + constant int64_t & nb02, + constant int64_t & ne12, + constant int64_t & ne0, + constant int64_t & ne1, + constant uint & gqa, + threadgroup uchar * shared_memory [[threadgroup(0)]], + uint3 tgpig[[threadgroup_position_in_grid]], + uint tiitg[[thread_index_in_threadgroup]], + uint sgitg[[simdgroup_index_in_threadgroup]]) { + + threadgroup half * sa = ((threadgroup half *)shared_memory); + threadgroup float * sb = (threadgroup float *)(shared_memory + 4096); + + const uint r0 = tgpig.y; + const uint r1 = tgpig.x; + const uint im = tgpig.z; + // if this block is of 64x32 shape or smaller + short n_rows = (ne0 - r0 * BLOCK_SIZE_M < BLOCK_SIZE_M) ? (ne0 - r0 * BLOCK_SIZE_M) : BLOCK_SIZE_M; + short n_cols = (ne1 - r1 * BLOCK_SIZE_N < BLOCK_SIZE_N) ? (ne1 - r1 * BLOCK_SIZE_N) : BLOCK_SIZE_N; + // a thread shouldn't load data outside of the matrix + short thread_row = ((short)tiitg/THREAD_PER_ROW) < n_rows ? ((short)tiitg/THREAD_PER_ROW) : n_rows - 1; + short thread_col = ((short)tiitg/THREAD_PER_COL) < n_cols ? ((short)tiitg/THREAD_PER_COL) : n_cols - 1; + + simdgroup_half8x8 ma[4]; + simdgroup_float8x8 mb[2]; + simdgroup_float8x8 c_res[8]; + for (int i = 0; i < 8; i++){ + c_res[i] = make_filled_simdgroup_matrix(0.f); + } + + short il = (tiitg % THREAD_PER_ROW); + uint offset0 = im/gqa*nb02; ushort offset1 = il/nl; + device const block_q * x = (device const block_q *)(src0 + (r0 * BLOCK_SIZE_M + thread_row) * nb01 + offset0) + offset1; + device const float * y = src1 + (r1 * BLOCK_SIZE_N + thread_col) * ne00 \ + + BLOCK_SIZE_K / THREAD_PER_COL * (tiitg % THREAD_PER_COL) + im * ne00 * ne1; + + for (int loop_k = 0; loop_k < ne00; loop_k += BLOCK_SIZE_K) { + //load data and store to threadgroup memory + half4x4 temp_a; + dequantize_func(x, il, temp_a); + threadgroup_barrier(mem_flags::mem_threadgroup); + #pragma unroll(16) + for (int i = 0; i < 16; i++) { + *(sa + SG_MAT_SIZE * ((tiitg / THREAD_PER_ROW / 8) \ + + 16 * (tiitg % THREAD_PER_ROW) + 8 * (i / 8)) \ + + (tiitg / THREAD_PER_ROW) % 8 + (i & 7) * 8) = temp_a[i/4][i%4]; + } + *(threadgroup float2x4 *)(sb + (tiitg % THREAD_PER_COL) * 8 * 32 + 8 * (tiitg / THREAD_PER_COL)) \ + = *((device float2x4 *)y); + il = (il + 2 < nl) ? il + 2 : il % 2; + x = (il < 2) ? x + (2+nl-1)/nl : x; + y += BLOCK_SIZE_K; + + threadgroup_barrier(mem_flags::mem_threadgroup); + //load matrices from threadgroup memory and conduct outer products + threadgroup half * lsma = (sa + THREAD_MAT_M * SG_MAT_SIZE * (sgitg % 2)); + threadgroup float * lsmb = (sb + THREAD_MAT_N * SG_MAT_SIZE * (sgitg / 2)); + #pragma unroll(4) + for (int ik = 0; ik < BLOCK_SIZE_K / 8; ik++) { + #pragma unroll(4) + for (int i = 0; i < 4; i++) { + simdgroup_load(ma[i],lsma + SG_MAT_SIZE * i); + } + simdgroup_barrier(mem_flags::mem_none); + #pragma unroll(2) + for (int i = 0; i < 2; i++) { + simdgroup_load(mb[i],lsmb + SG_MAT_SIZE * i); + } + + lsma += BLOCK_SIZE_M / SG_MAT_ROW * SG_MAT_SIZE; + lsmb += BLOCK_SIZE_N / SG_MAT_ROW * SG_MAT_SIZE; + #pragma unroll(8) + for (int i = 0; i < 8; i++){ + simdgroup_multiply_accumulate(c_res[i], mb[i/4], ma[i%4], c_res[i]); + } + } + } + + if ((r0 + 1) * BLOCK_SIZE_M <= ne0 && (r1 + 1) * BLOCK_SIZE_N <= ne1) { + device float *C = dst + BLOCK_SIZE_M * r0 + 32 * (sgitg&1) \ + + (BLOCK_SIZE_N * r1 + 16 * (sgitg>>1)) * ne0 + im*ne1*ne0; + for (int i = 0; i < 8; i++) { + simdgroup_store(c_res[i], C + 8 * (i%4) + 8 * ne0 * (i/4), ne0); + } + } else { + // block is smaller than 64x32, we should avoid writing data outside of the matrix + threadgroup_barrier(mem_flags::mem_threadgroup); + threadgroup float *temp_str = ((threadgroup float *)shared_memory) \ + + 32 * (sgitg&1) + (16 * (sgitg>>1)) * BLOCK_SIZE_M; + for (int i = 0; i < 8; i++) { + simdgroup_store(c_res[i], temp_str + 8 * (i%4) + 8 * BLOCK_SIZE_M * (i/4), BLOCK_SIZE_M); + } + + threadgroup_barrier(mem_flags::mem_threadgroup); + device float *C = dst + BLOCK_SIZE_M * r0 + (BLOCK_SIZE_N * r1) * ne0 + im*ne1*ne0; + if (sgitg==0) { + for (int i = 0; i < n_rows; i++) { + for (int j = tiitg; j< n_cols; j += BLOCK_SIZE_N) { + *(C + i + j * ne0) = *(temp_str + i + j * BLOCK_SIZE_M); + } + } + } + } +} + +#if QK_K == 256 +#define QK_NL 16 +#else +#define QK_NL 4 +#endif + +typedef void (get_rows_t)(device const void *, device const int *, device float *, constant int64_t &, \ + constant uint64_t &, constant uint64_t &, uint, uint, uint); + +template [[host_name("kernel_get_rows_f16")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q4_0")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q4_1")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q8_0")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q2_K")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q3_K")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q4_K")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q5_K")]] kernel get_rows_t kernel_get_rows; +template [[host_name("kernel_get_rows_q6_K")]] kernel get_rows_t kernel_get_rows; + +typedef void (mat_mm_t)(device const uchar *, device const float *, device float *, constant int64_t &,\ + constant int64_t &, constant int64_t &, constant int64_t &, constant int64_t &, \ + constant int64_t &, constant int64_t &, constant uint &, threadgroup uchar *, uint3, uint, uint); + +template [[host_name("kernel_mul_mm_f16_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q4_0_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q4_1_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q8_0_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q2_K_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q3_K_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q4_K_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q5_K_f32")]] kernel mat_mm_t kernel_mul_mm; +template [[host_name("kernel_mul_mm_q6_K_f32")]] kernel mat_mm_t kernel_mul_mm; diff --git a/ggml-opencl.cpp b/ggml-opencl.cpp index 7927d227..eb214a83 100644 --- a/ggml-opencl.cpp +++ b/ggml-opencl.cpp @@ -656,10 +656,14 @@ __kernel void dequantize_mul_mat_vec_q6_K(__global const struct block_q6_K * xx, \n#if K_QUANTS_PER_ITERATION == 1\n const int l0 = K_QUANTS_PER_ITERATION*in; // 0...15 const int is = 0; + \n#else\n + const int l0 = 4 * in; // 0, 4, 8, ..., 28 const int is = in / 4; + \n#endif\n + const int ql_offset = 64*im + l0; const int qh_offset = 32*im + l0; const int s_offset = 8*im + is; @@ -1376,7 +1380,7 @@ static void ggml_cl_mul_f32(const ggml_tensor * src0, const ggml_tensor * src1, const int64_t ne00 = src0->ne[0]; const int64_t ne01 = src0->ne[1]; const int64_t ne02 = src0->ne[2]; - const int64_t ne03 = src0->ne[2]; + const int64_t ne03 = src0->ne[3]; const int64_t ne0 = ne00 * ne01 * ne02 * ne03; const int64_t ne10 = src1->ne[0]; const int64_t ne11 = src1->ne[1]; diff --git a/ggml.c b/ggml.c index c3d51bbd..ecbc724b 100644 --- a/ggml.c +++ b/ggml.c @@ -25,16 +25,23 @@ #include #include #include +#include #ifdef GGML_USE_METAL #include #endif +// static_assert should be a #define, but if it's not, +// fall back to the _Static_assert C11 keyword. // if C99 - static_assert is noop // ref: https://stackoverflow.com/a/53923785/4039976 #ifndef static_assert +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201100L) +#define static_assert(cond, msg) _Static_assert(cond, msg) +#else #define static_assert(cond, msg) struct global_scope_noop_trick #endif +#endif #if defined(_MSC_VER) // disable "possible loss of data" to avoid hundreds of casts @@ -49,23 +56,23 @@ typedef volatile LONG atomic_int; typedef atomic_int atomic_bool; -static void atomic_store(atomic_int* ptr, LONG val) { +static void atomic_store(atomic_int * ptr, LONG val) { InterlockedExchange(ptr, val); } -static LONG atomic_load(atomic_int* ptr) { +static LONG atomic_load(atomic_int * ptr) { return InterlockedCompareExchange(ptr, 0, 0); } -static LONG atomic_fetch_add(atomic_int* ptr, LONG inc) { +static LONG atomic_fetch_add(atomic_int * ptr, LONG inc) { return InterlockedExchangeAdd(ptr, inc); } -static LONG atomic_fetch_sub(atomic_int* ptr, LONG dec) { +static LONG atomic_fetch_sub(atomic_int * ptr, LONG dec) { return atomic_fetch_add(ptr, -(dec)); } typedef HANDLE pthread_t; typedef DWORD thread_ret_t; -static int pthread_create(pthread_t* out, void* unused, thread_ret_t(*func)(void*), void* arg) { +static int pthread_create(pthread_t * out, void * unused, thread_ret_t(*func)(void *), void * arg) { (void) unused; HANDLE handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) func, arg, 0, NULL); if (handle == NULL) @@ -77,7 +84,7 @@ static int pthread_create(pthread_t* out, void* unused, thread_ret_t(*func)(void return 0; } -static int pthread_join(pthread_t thread, void* unused) { +static int pthread_join(pthread_t thread, void * unused) { (void) unused; return (int) WaitForSingleObject(thread, INFINITE); } @@ -90,7 +97,7 @@ static int sched_yield (void) { #include #include -typedef void* thread_ret_t; +typedef void * thread_ret_t; #include #include @@ -111,10 +118,6 @@ typedef void* thread_ret_t; #endif #endif -#ifdef __HAIKU__ -#define static_assert(cond, msg) _Static_assert(cond, msg) -#endif - /*#define GGML_PERF*/ #define GGML_DEBUG 0 #define GGML_GELU_FP16 @@ -154,12 +157,6 @@ typedef void* thread_ret_t; //#define GGML_SOFT_MAX_ACCELERATE #endif -#if UINTPTR_MAX == 0xFFFFFFFF - #define GGML_MEM_ALIGN 4 -#else - #define GGML_MEM_ALIGN 16 -#endif - // // logging // @@ -192,8 +189,8 @@ typedef void* thread_ret_t; #define GGML_ALIGNED_MALLOC(size) _aligned_malloc(size, GGML_MEM_ALIGN) #define GGML_ALIGNED_FREE(ptr) _aligned_free(ptr) #else -inline static void* ggml_aligned_malloc(size_t size) { - void* aligned_memory = NULL; +inline static void * ggml_aligned_malloc(size_t size) { + void * aligned_memory = NULL; #ifdef GGML_USE_METAL int result = posix_memalign(&aligned_memory, getpagesize(), size); #else @@ -210,8 +207,7 @@ inline static void* ggml_aligned_malloc(size_t size) { error_desc = "insufficient memory"; break; } - GGML_PRINT("%s: %s (attempted to allocate %6.2f MB)\n", - __func__, error_desc, size/(1024.0*1024.0)); + GGML_PRINT("%s: %s (attempted to allocate %6.2f MB)\n", __func__, error_desc, size/(1024.0*1024.0)); return NULL; } return aligned_memory; @@ -247,7 +243,11 @@ inline static void* ggml_aligned_malloc(size_t size) { #include "ggml-opencl.h" #endif #elif defined(GGML_USE_OPENBLAS) +#if defined(GGML_BLAS_USE_MKL) +#include +#else #include +#endif #elif defined(GGML_USE_CUBLAS) #include "ggml-cuda.h" #elif defined(GGML_USE_CLBLAST) @@ -293,11 +293,13 @@ typedef double ggml_float; #include #else #if defined(__AVX__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__SSSE3__) || defined(__SSE3__) +#if !defined(__riscv) #include #endif #endif #endif #endif +#endif #ifdef __F16C__ @@ -481,14 +483,14 @@ ggml_fp16_t ggml_fp32_to_fp16(float x) { return GGML_FP32_TO_FP16(x); } -void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, size_t n) { - for (size_t i = 0; i < n; i++) { +void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, int n) { + for (int i = 0; i < n; i++) { y[i] = GGML_FP16_TO_FP32(x[i]); } } -void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, size_t n) { - size_t i = 0; +void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, int n) { + int i = 0; #if defined(__F16C__) for (; i + 7 < n; i += 8) { __m256 x_vec = _mm256_loadu_ps(x + i); @@ -1292,6 +1294,7 @@ static void quantize_row_q8_0(const float * restrict x, void * restrict vy, int #endif } #else + (void)nb; // scalar quantize_row_q8_0_reference(x, y, k); #endif @@ -1510,6 +1513,7 @@ static void quantize_row_q8_1(const float * restrict x, void * restrict vy, int #endif } #else + (void)nb; // scalar quantize_row_q8_1_reference(x, y, k); #endif @@ -1627,109 +1631,186 @@ static void dequantize_row_q8_0(const void * restrict vx, float * restrict y, in } } +static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y); +static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y); static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void * restrict vx, const void * restrict vy); static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void * restrict vx, const void * restrict vy); static void ggml_vec_dot_q5_0_q8_0(const int n, float * restrict s, const void * restrict vx, const void * restrict vy); static void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void * restrict vx, const void * restrict vy); static void ggml_vec_dot_q8_0_q8_0(const int n, float * restrict s, const void * restrict vx, const void * restrict vy); -static const quantize_fns_t quantize_fns[GGML_TYPE_COUNT] = { +static const ggml_type_traits_t type_traits[GGML_TYPE_COUNT] = { + [GGML_TYPE_I8] = { + .type_name = "i8", + .blck_size = 1, + .type_size = sizeof(int8_t), + .is_quantized = false, + }, + [GGML_TYPE_I16] = { + .type_name = "i16", + .blck_size = 1, + .type_size = sizeof(int16_t), + .is_quantized = false, + }, + [GGML_TYPE_I32] = { + .type_name = "i32", + .blck_size = 1, + .type_size = sizeof(int32_t), + .is_quantized = false, + }, + [GGML_TYPE_F32] = { + .type_name = "f32", + .blck_size = 1, + .type_size = sizeof(float), + .is_quantized = false, + .vec_dot = (ggml_vec_dot_t) ggml_vec_dot_f32, + .vec_dot_type = GGML_TYPE_F32, + }, + [GGML_TYPE_F16] = { + .type_name = "f16", + .blck_size = 1, + .type_size = sizeof(ggml_fp16_t), + .is_quantized = false, + .to_float = (ggml_to_float_t) ggml_fp16_to_fp32_row, + .from_float = (ggml_from_float_t) ggml_fp32_to_fp16_row, + .from_float_reference = (ggml_from_float_t) ggml_fp32_to_fp16_row, + .vec_dot = (ggml_vec_dot_t) ggml_vec_dot_f16, + .vec_dot_type = GGML_TYPE_F16, + }, [GGML_TYPE_Q4_0] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q4_0, - .quantize_row_q = quantize_row_q4_0, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q4_0_reference, - .quantize_row_q_dot = quantize_row_q8_0, - .vec_dot_q = ggml_vec_dot_q4_0_q8_0, + .type_name = "q4_0", + .blck_size = QK4_0, + .type_size = sizeof(block_q4_0), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q4_0, + .from_float = quantize_row_q4_0, + .from_float_reference = (ggml_from_float_t) quantize_row_q4_0_reference, + .vec_dot = ggml_vec_dot_q4_0_q8_0, .vec_dot_type = GGML_TYPE_Q8_0, }, [GGML_TYPE_Q4_1] = { - .dequantize_row_q = (dequantize_row_q_t)dequantize_row_q4_1, - .quantize_row_q = quantize_row_q4_1, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q4_1_reference, - .quantize_row_q_dot = quantize_row_q8_1, - .vec_dot_q = ggml_vec_dot_q4_1_q8_1, + .type_name = "q4_1", + .blck_size = QK4_1, + .type_size = sizeof(block_q4_1), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q4_1, + .from_float = quantize_row_q4_1, + .from_float_reference = (ggml_from_float_t) quantize_row_q4_1_reference, + .vec_dot = ggml_vec_dot_q4_1_q8_1, .vec_dot_type = GGML_TYPE_Q8_1, }, [GGML_TYPE_Q5_0] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q5_0, - .quantize_row_q = quantize_row_q5_0, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q5_0_reference, - .quantize_row_q_dot = quantize_row_q8_0, - .vec_dot_q = ggml_vec_dot_q5_0_q8_0, + .type_name = "q5_0", + .blck_size = QK5_0, + .type_size = sizeof(block_q5_0), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q5_0, + .from_float = quantize_row_q5_0, + .from_float_reference = (ggml_from_float_t) quantize_row_q5_0_reference, + .vec_dot = ggml_vec_dot_q5_0_q8_0, .vec_dot_type = GGML_TYPE_Q8_0, }, [GGML_TYPE_Q5_1] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q5_1, - .quantize_row_q = quantize_row_q5_1, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q5_1_reference, - .quantize_row_q_dot = quantize_row_q8_1, - .vec_dot_q = ggml_vec_dot_q5_1_q8_1, + .type_name = "q5_1", + .blck_size = QK5_1, + .type_size = sizeof(block_q5_1), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q5_1, + .from_float = quantize_row_q5_1, + .from_float_reference = (ggml_from_float_t) quantize_row_q5_1_reference, + .vec_dot = ggml_vec_dot_q5_1_q8_1, .vec_dot_type = GGML_TYPE_Q8_1, }, [GGML_TYPE_Q8_0] = { - .dequantize_row_q = dequantize_row_q8_0, - .quantize_row_q = quantize_row_q8_0, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q8_0_reference, - .quantize_row_q_dot = quantize_row_q8_0, - .vec_dot_q = ggml_vec_dot_q8_0_q8_0, + .type_name = "q8_0", + .blck_size = QK8_0, + .type_size = sizeof(block_q8_0), + .is_quantized = true, + .to_float = dequantize_row_q8_0, + .from_float = quantize_row_q8_0, + .from_float_reference = (ggml_from_float_t) quantize_row_q8_0_reference, + .vec_dot = ggml_vec_dot_q8_0_q8_0, .vec_dot_type = GGML_TYPE_Q8_0, }, [GGML_TYPE_Q8_1] = { - .dequantize_row_q = NULL, // TODO - .quantize_row_q = quantize_row_q8_1, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q8_1_reference, - .quantize_row_q_dot = quantize_row_q8_1, - .vec_dot_q = NULL, // TODO + .type_name = "q8_1", + .blck_size = QK8_1, + .type_size = sizeof(block_q8_1), + .is_quantized = true, + .from_float = quantize_row_q8_1, + .from_float_reference = (ggml_from_float_t) quantize_row_q8_1_reference, .vec_dot_type = GGML_TYPE_Q8_1, }, #ifdef GGML_USE_K_QUANTS [GGML_TYPE_Q2_K] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q2_K, - .quantize_row_q = quantize_row_q2_K, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q2_K_reference, - .quantize_row_q_dot = quantize_row_q8_K, - .vec_dot_q = ggml_vec_dot_q2_K_q8_K, + .type_name = "q2_K", + .blck_size = QK_K, + .type_size = sizeof(block_q2_K), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q2_K, + .from_float = quantize_row_q2_K, + .from_float_reference = (ggml_from_float_t) quantize_row_q2_K_reference, + .vec_dot = ggml_vec_dot_q2_K_q8_K, .vec_dot_type = GGML_TYPE_Q8_K, }, [GGML_TYPE_Q3_K] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q3_K, - .quantize_row_q = quantize_row_q3_K, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q3_K_reference, - .quantize_row_q_dot = quantize_row_q8_K, - .vec_dot_q = ggml_vec_dot_q3_K_q8_K, + .type_name = "q3_K", + .blck_size = QK_K, + .type_size = sizeof(block_q3_K), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q3_K, + .from_float = quantize_row_q3_K, + .from_float_reference = (ggml_from_float_t) quantize_row_q3_K_reference, + .vec_dot = ggml_vec_dot_q3_K_q8_K, .vec_dot_type = GGML_TYPE_Q8_K, }, [GGML_TYPE_Q4_K] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q4_K, - .quantize_row_q = quantize_row_q4_K, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q4_K_reference, - .quantize_row_q_dot = quantize_row_q8_K, - .vec_dot_q = ggml_vec_dot_q4_K_q8_K, + .type_name = "q4_K", + .blck_size = QK_K, + .type_size = sizeof(block_q4_K), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q4_K, + .from_float = quantize_row_q4_K, + .from_float_reference = (ggml_from_float_t) quantize_row_q4_K_reference, + .vec_dot = ggml_vec_dot_q4_K_q8_K, .vec_dot_type = GGML_TYPE_Q8_K, }, [GGML_TYPE_Q5_K] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q5_K, - .quantize_row_q = quantize_row_q5_K, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q5_K_reference, - .quantize_row_q_dot = quantize_row_q8_K, - .vec_dot_q = ggml_vec_dot_q5_K_q8_K, + .type_name = "q5_K", + .blck_size = QK_K, + .type_size = sizeof(block_q5_K), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q5_K, + .from_float = quantize_row_q5_K, + .from_float_reference = (ggml_from_float_t) quantize_row_q5_K_reference, + .vec_dot = ggml_vec_dot_q5_K_q8_K, .vec_dot_type = GGML_TYPE_Q8_K, }, [GGML_TYPE_Q6_K] = { - .dequantize_row_q = (dequantize_row_q_t) dequantize_row_q6_K, - .quantize_row_q = quantize_row_q6_K, - .quantize_row_q_reference = (quantize_row_q_t) quantize_row_q6_K_reference, - .quantize_row_q_dot = quantize_row_q8_K, - .vec_dot_q = ggml_vec_dot_q6_K_q8_K, + .type_name = "q6_K", + .blck_size = QK_K, + .type_size = sizeof(block_q6_K), + .is_quantized = true, + .to_float = (ggml_to_float_t) dequantize_row_q6_K, + .from_float = quantize_row_q6_K, + .from_float_reference = (ggml_from_float_t) quantize_row_q6_K_reference, + .vec_dot = ggml_vec_dot_q6_K_q8_K, .vec_dot_type = GGML_TYPE_Q8_K, }, + [GGML_TYPE_Q8_K] = { + .type_name = "q8_K", + .blck_size = QK_K, + .type_size = sizeof(block_q8_K), + .is_quantized = true, + .from_float = quantize_row_q8_K, + } #endif }; // For internal test use -quantize_fns_t ggml_internal_get_quantize_fn(size_t i) { - GGML_ASSERT(i < GGML_TYPE_COUNT); - return quantize_fns[i]; +ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type) { + GGML_ASSERT(type < GGML_TYPE_COUNT); + return type_traits[type]; } @@ -2275,7 +2356,7 @@ inline static void ggml_vec_neg_f32 (const int n, float * y, const float * x) inline static void ggml_vec_mul_f32 (const int n, float * z, const float * x, const float * y) { for (int i = 0; i < n; ++i) z[i] = x[i]*y[i]; } inline static void ggml_vec_div_f32 (const int n, float * z, const float * x, const float * y) { for (int i = 0; i < n; ++i) z[i] = x[i]/y[i]; } -inline static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y) { +static void ggml_vec_dot_f32(const int n, float * restrict s, const float * restrict x, const float * restrict y) { #ifdef GGML_SIMD float sumf = 0.0f; const int np = (n & ~(GGML_F32_STEP - 1)); @@ -2312,7 +2393,7 @@ inline static void ggml_vec_dot_f32(const int n, float * restrict s, const float *s = sumf; } -inline static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y) { +static void ggml_vec_dot_f16(const int n, float * restrict s, ggml_fp16_t * restrict x, ggml_fp16_t * restrict y) { ggml_float sumf = 0.0; #if defined(GGML_SIMD) @@ -2353,7 +2434,6 @@ static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void * const int nb = n / qk; assert(n % qk == 0); - assert(nb % 2 == 0); const block_q4_0 * restrict x = vx; const block_q8_0 * restrict y = vy; @@ -2362,6 +2442,7 @@ static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void * float32x4_t sumv0 = vdupq_n_f32(0.0f); float32x4_t sumv1 = vdupq_n_f32(0.0f); + GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb for (int i = 0; i < nb; i += 2) { const block_q4_0 * restrict x0 = &x[i + 0]; const block_q4_0 * restrict x1 = &x[i + 1]; @@ -2540,6 +2621,7 @@ static void ggml_vec_dot_q4_0_q8_0(const int n, float * restrict s, const void * } // Main loop + GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb for (int i = 2; i < nb; i+=2) { _mm_prefetch(&x[i] + sizeof(block_q4_0), _MM_HINT_T0); _mm_prefetch(&y[i] + sizeof(block_q8_0), _MM_HINT_T0); @@ -2623,7 +2705,6 @@ static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void * const int nb = n / qk; assert(n % qk == 0); - assert(nb % 2 == 0); const block_q4_1 * restrict x = vx; const block_q8_1 * restrict y = vy; @@ -2635,6 +2716,7 @@ static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void * float summs = 0; + GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb for (int i = 0; i < nb; i += 2) { const block_q4_1 * restrict x0 = &x[i + 0]; const block_q4_1 * restrict x1 = &x[i + 1]; @@ -2749,7 +2831,6 @@ static void ggml_vec_dot_q5_0_q8_0(const int n, float * restrict s, const void * const int nb = n / qk; assert(n % qk == 0); - assert(nb % 2 == 0); assert(qk == QK5_0); const block_q5_0 * restrict x = vx; @@ -2765,6 +2846,7 @@ static void ggml_vec_dot_q5_0_q8_0(const int n, float * restrict s, const void * uint64_t tmp0[4]; uint64_t tmp1[4]; + GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb for (int i = 0; i < nb; i += 2) { const block_q5_0 * restrict x0 = &x[i]; const block_q5_0 * restrict x1 = &x[i + 1]; @@ -2989,7 +3071,6 @@ static void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void * const int nb = n / qk; assert(n % qk == 0); - assert(nb % 2 == 0); assert(qk == QK5_1); const block_q5_1 * restrict x = vx; @@ -3008,6 +3089,7 @@ static void ggml_vec_dot_q5_1_q8_1(const int n, float * restrict s, const void * uint64_t tmp0[4]; uint64_t tmp1[4]; + GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb for (int i = 0; i < nb; i += 2) { const block_q5_1 * restrict x0 = &x[i]; const block_q5_1 * restrict x1 = &x[i + 1]; @@ -3245,7 +3327,6 @@ static void ggml_vec_dot_q8_0_q8_0(const int n, float * restrict s, const void * const int nb = n / qk; assert(n % qk == 0); - assert(nb % 2 == 0); const block_q8_0 * restrict x = vx; const block_q8_0 * restrict y = vy; @@ -3254,6 +3335,7 @@ static void ggml_vec_dot_q8_0_q8_0(const int n, float * restrict s, const void * float32x4_t sumv0 = vdupq_n_f32(0.0f); float32x4_t sumv1 = vdupq_n_f32(0.0f); + GGML_ASSERT(nb % 2 == 0); // TODO: handle odd nb for (int i = 0; i < nb; i += 2) { const block_q8_0 * restrict x0 = &x[i + 0]; const block_q8_0 * restrict x1 = &x[i + 1]; @@ -3430,7 +3512,9 @@ inline static void ggml_vec_mad_f32(const int n, float * restrict y, const float //inline static void ggml_vec_scale_f32(const int n, float * y, const float v) { for (int i = 0; i < n; ++i) y[i] *= v; } inline static void ggml_vec_scale_f32(const int n, float * y, const float v) { -#if defined(GGML_SIMD) +#if defined(GGML_USE_ACCELERATE) + vDSP_vsmul(y, 1, &v, y, 1, n); +#elif defined(GGML_SIMD) const int np = (n & ~(GGML_F32_STEP - 1)); GGML_F32_VEC vx = GGML_F32_VEC_SET1(v); @@ -3469,9 +3553,9 @@ inline static void ggml_vec_tanh_f32 (const int n, float * y, const float * x) { inline static void ggml_vec_elu_f32 (const int n, float * y, const float * x) { for (int i = 0; i < n; ++i) y[i] = (x[i] > 0.f) ? x[i] : expf(x[i])-1; } inline static void ggml_vec_relu_f32 (const int n, float * y, const float * x) { for (int i = 0; i < n; ++i) y[i] = (x[i] > 0.f) ? x[i] : 0.f; } -static const float GELU_COEF_A = 0.044715f; -static const float GELU_QUICK_COEF = -1.702f; -static const float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f; +static const float GELU_COEF_A = 0.044715f; +static const float GELU_QUICK_COEF = -1.702f; +static const float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f; inline static float ggml_gelu_f32(float x) { return 0.5f*x*(1.0f + tanhf(SQRT_2_OVER_PI*x*(1.0f + GELU_COEF_A*x*x))); @@ -3593,7 +3677,7 @@ inline static void ggml_vec_sum_f32(const int n, float * s, const float * x) { #endif } -inline static void ggml_vec_sum_ggf(const int n, ggml_float * s, const float * x) { +inline static void ggml_vec_sum_f32_ggf(const int n, ggml_float * s, const float * x) { ggml_float sum = 0.0; for (int i = 0; i < n; ++i) { sum += (ggml_float)x[i]; @@ -3601,6 +3685,14 @@ inline static void ggml_vec_sum_ggf(const int n, ggml_float * s, const float * x *s = sum; } +inline static void ggml_vec_sum_f16_ggf(const int n, float * s, const ggml_fp16_t * x) { + float sum = 0.0f; + for (int i = 0; i < n; ++i) { + sum += GGML_FP16_TO_FP32(x[i]); + } + *s = sum; +} + inline static void ggml_vec_max_f32(const int n, float * s, const float * x) { #ifndef GGML_USE_ACCELERATE float max = -INFINITY; @@ -3632,95 +3724,6 @@ inline static void ggml_vec_argmax_f32(const int n, int * s, const float * x) { // data types // -static const int GGML_BLCK_SIZE[GGML_TYPE_COUNT] = { - [GGML_TYPE_F32] = 1, - [GGML_TYPE_F16] = 1, - [GGML_TYPE_Q4_0] = QK4_0, - [GGML_TYPE_Q4_1] = QK4_1, - [GGML_TYPE_Q5_0] = QK5_0, - [GGML_TYPE_Q5_1] = QK5_1, - [GGML_TYPE_Q8_0] = QK8_0, - [GGML_TYPE_Q8_1] = QK8_1, -#ifdef GGML_USE_K_QUANTS - [GGML_TYPE_Q2_K] = QK_K, - [GGML_TYPE_Q3_K] = QK_K, - [GGML_TYPE_Q4_K] = QK_K, - [GGML_TYPE_Q5_K] = QK_K, - [GGML_TYPE_Q6_K] = QK_K, - [GGML_TYPE_Q8_K] = QK_K, -#endif - [GGML_TYPE_I8] = 1, - [GGML_TYPE_I16] = 1, - [GGML_TYPE_I32] = 1, -}; -static_assert(GGML_TYPE_COUNT == 19, "GGML_BLCK_SIZE is outdated"); - -static const size_t GGML_TYPE_SIZE[GGML_TYPE_COUNT] = { - [GGML_TYPE_F32] = sizeof(float), - [GGML_TYPE_F16] = sizeof(ggml_fp16_t), - [GGML_TYPE_Q4_0] = sizeof(block_q4_0), - [GGML_TYPE_Q4_1] = sizeof(block_q4_1), - [GGML_TYPE_Q5_0] = sizeof(block_q5_0), - [GGML_TYPE_Q5_1] = sizeof(block_q5_1), - [GGML_TYPE_Q8_0] = sizeof(block_q8_0), - [GGML_TYPE_Q8_1] = sizeof(block_q8_1), -#ifdef GGML_USE_K_QUANTS - [GGML_TYPE_Q2_K] = sizeof(block_q2_K), - [GGML_TYPE_Q3_K] = sizeof(block_q3_K), - [GGML_TYPE_Q4_K] = sizeof(block_q4_K), - [GGML_TYPE_Q5_K] = sizeof(block_q5_K), - [GGML_TYPE_Q6_K] = sizeof(block_q6_K), - [GGML_TYPE_Q8_K] = sizeof(block_q8_K), -#endif - [GGML_TYPE_I8] = sizeof(int8_t), - [GGML_TYPE_I16] = sizeof(int16_t), - [GGML_TYPE_I32] = sizeof(int32_t), -}; -static_assert(GGML_TYPE_COUNT == 19, "GGML_TYPE_SIZE is outdated"); - - -static const char * GGML_TYPE_NAME[GGML_TYPE_COUNT] = { - [GGML_TYPE_F32] = "f32", - [GGML_TYPE_F16] = "f16", - [GGML_TYPE_Q4_0] = "q4_0", - [GGML_TYPE_Q4_1] = "q4_1", - [GGML_TYPE_Q5_0] = "q5_0", - [GGML_TYPE_Q5_1] = "q5_1", - [GGML_TYPE_Q8_0] = "q8_0", - [GGML_TYPE_Q8_1] = "q8_1", - [GGML_TYPE_Q2_K] = "q2_K", - [GGML_TYPE_Q3_K] = "q3_K", - [GGML_TYPE_Q4_K] = "q4_K", - [GGML_TYPE_Q5_K] = "q5_K", - [GGML_TYPE_Q6_K] = "q6_K", - [GGML_TYPE_Q8_K] = "q8_K", - [GGML_TYPE_I8] = "i8", - [GGML_TYPE_I16] = "i16", - [GGML_TYPE_I32] = "i32", -}; -static_assert(GGML_TYPE_COUNT == 19, "GGML_TYPE_NAME is outdated"); - -static bool GGML_IS_QUANTIZED[GGML_TYPE_COUNT] = { - [GGML_TYPE_F32] = false, - [GGML_TYPE_F16] = false, - [GGML_TYPE_Q4_0] = true, - [GGML_TYPE_Q4_1] = true, - [GGML_TYPE_Q5_0] = true, - [GGML_TYPE_Q5_1] = true, - [GGML_TYPE_Q8_0] = true, - [GGML_TYPE_Q8_1] = true, - [GGML_TYPE_Q2_K] = true, - [GGML_TYPE_Q3_K] = true, - [GGML_TYPE_Q4_K] = true, - [GGML_TYPE_Q5_K] = true, - [GGML_TYPE_Q6_K] = true, - [GGML_TYPE_Q8_K] = true, - [GGML_TYPE_I8] = false, - [GGML_TYPE_I16] = false, - [GGML_TYPE_I32] = false, -}; -static_assert(GGML_TYPE_COUNT == 19, "GGML_IS_QUANTIZED is outdated"); - static const char * GGML_OP_NAME[GGML_OP_COUNT] = { "NONE", @@ -3740,20 +3743,12 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = { "ARGMAX", "REPEAT", "REPEAT_BACK", - "ABS", - "SGN", - "NEG", - "STEP", - "TANH", - "ELU", - "RELU", - "GELU", - "GELU_QUICK", - "SILU", + "CONCAT", "SILU_BACK", "NORM", "RMS_NORM", "RMS_NORM_BACK", + "GROUP_NORM", "MUL_MAT", "OUT_PROD", @@ -3779,16 +3774,28 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = { "CLAMP", "CONV_1D", "CONV_2D", + "CONV_TRANSPOSE_2D", + "POOL_1D", + "POOL_2D", + "UPSCALE", "FLASH_ATTN", "FLASH_FF", "FLASH_ATTN_BACK", "WIN_PART", "WIN_UNPART", + "GET_REL_POS", + "ADD_REL_POS", + + "UNARY", "MAP_UNARY", "MAP_BINARY", + "MAP_CUSTOM1_F32", + "MAP_CUSTOM2_F32", + "MAP_CUSTOM3_F32", + "MAP_CUSTOM1", "MAP_CUSTOM2", "MAP_CUSTOM3", @@ -3797,7 +3804,7 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = { "CROSS_ENTROPY_LOSS_BACK", }; -static_assert(GGML_OP_COUNT == 66, "GGML_OP_COUNT != 66"); +static_assert(GGML_OP_COUNT == 68, "GGML_OP_COUNT != 68"); static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = { "none", @@ -3818,20 +3825,12 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = { "argmax(x)", "repeat(x)", "repeat_back(x)", - "abs(x)", - "sgn(x)", - "-x", - "step(x)", - "tanh(x)", - "elu(x)", - "relu(x)", - "gelu(x)", - "gelu_quick(x)", - "silu(x)", + "concat(x, y)", "silu_back(x)", "norm(x)", "rms_norm(x)", "rms_norm_back(x)", + "group_norm(x)", "X*Y", "X*Y", @@ -3857,16 +3856,28 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = { "clamp(x)", "conv_1d(x)", "conv_2d(x)", + "conv_transpose_2d(x)", + "pool_1d(x)", + "pool_2d(x)", + "upscale(x)", "flash_attn(x)", "flash_ff(x)", "flash_attn_back(x)", "win_part(x)", "win_unpart(x)", + "get_rel_pos(x)", + "add_rel_pos(x)", + + "unary(x)", "f(x)", "f(x,y)", + "custom_f32(x)", + "custom_f32(x,y)", + "custom_f32(x,y,z)", + "custom(x)", "custom(x,y)", "custom(x,y,z)", @@ -3875,7 +3886,9 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = { "cross_entropy_loss_back(x,y)", }; -static_assert(GGML_OP_COUNT == 66, "GGML_OP_COUNT != 66"); +static_assert(GGML_OP_COUNT == 68, "GGML_OP_COUNT != 68"); + +static_assert(GGML_OP_POOL_COUNT == 2, "GGML_OP_POOL_COUNT != 2"); static_assert(sizeof(struct ggml_object)%GGML_MEM_ALIGN == 0, "ggml_object size must be a multiple of GGML_MEM_ALIGN"); static_assert(sizeof(struct ggml_tensor)%GGML_MEM_ALIGN == 0, "ggml_tensor size must be a multiple of GGML_MEM_ALIGN"); @@ -3903,8 +3916,10 @@ static void ggml_setup_op_has_task_pass(void) { p[GGML_OP_DIAG_MASK_ZERO ] = true; p[GGML_OP_CONV_1D ] = true; p[GGML_OP_CONV_2D ] = true; + p[GGML_OP_CONV_TRANSPOSE_2D ] = true; p[GGML_OP_FLASH_ATTN_BACK ] = true; p[GGML_OP_CROSS_ENTROPY_LOSS ] = true; + p[GGML_OP_ADD_REL_POS ] = true; } { // FINALIZE @@ -4061,8 +4076,8 @@ bool ggml_is_numa(void) { //////////////////////////////////////////////////////////////////////////////// void ggml_print_object(const struct ggml_object * obj) { - GGML_PRINT(" - ggml_object: offset = %zu, size = %zu, next = %p\n", - obj->offs, obj->size, (const void *) obj->next); + GGML_PRINT(" - ggml_object: type = %d, offset = %zu, size = %zu, next = %p\n", + obj->type, obj->offs, obj->size, (const void *) obj->next); } void ggml_print_objects(const struct ggml_context * ctx) { @@ -4100,37 +4115,49 @@ size_t ggml_nbytes(const struct ggml_tensor * tensor) { // // is enough, but just in case, adding the second part - return MAX(tensor->ne[3]*tensor->nb[3], (ggml_nelements(tensor)*GGML_TYPE_SIZE[tensor->type])/GGML_BLCK_SIZE[tensor->type]); + return MAX(tensor->ne[3]*tensor->nb[3], (ggml_nelements(tensor)*ggml_type_size(tensor->type))/ggml_blck_size(tensor->type)); +} + +size_t ggml_nbytes_pad(const struct ggml_tensor * tensor) { + return GGML_PAD(ggml_nbytes(tensor), GGML_MEM_ALIGN); } size_t ggml_nbytes_split(const struct ggml_tensor * tensor, int nrows_split) { static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); - return (nrows_split*tensor->ne[0]*GGML_TYPE_SIZE[tensor->type])/GGML_BLCK_SIZE[tensor->type]; + return (nrows_split*tensor->ne[0]*ggml_type_size(tensor->type))/ggml_blck_size(tensor->type); } int ggml_blck_size(enum ggml_type type) { - return GGML_BLCK_SIZE[type]; + return type_traits[type].blck_size; } size_t ggml_type_size(enum ggml_type type) { - return GGML_TYPE_SIZE[type]; + return type_traits[type].type_size; } float ggml_type_sizef(enum ggml_type type) { - return ((float)(GGML_TYPE_SIZE[type]))/GGML_BLCK_SIZE[type]; + return ((float)(type_traits[type].type_size))/type_traits[type].blck_size; } const char * ggml_type_name(enum ggml_type type) { - return GGML_TYPE_NAME[type]; + return type_traits[type].type_name; +} + +bool ggml_is_quantized(enum ggml_type type) { + return type_traits[type].is_quantized; } const char * ggml_op_name(enum ggml_op op) { return GGML_OP_NAME[op]; } +const char * ggml_op_symbol(enum ggml_op op) { + return GGML_OP_SYMBOL[op]; +} + size_t ggml_element_size(const struct ggml_tensor * tensor) { - return GGML_TYPE_SIZE[tensor->type]; + return ggml_type_size(tensor->type); } static inline bool ggml_is_scalar(const struct ggml_tensor * tensor) { @@ -4154,10 +4181,9 @@ static inline bool ggml_is_matrix(const struct ggml_tensor * tensor) { static inline bool ggml_can_mul_mat(const struct ggml_tensor * t0, const struct ggml_tensor * t1) { static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); - return - (t0->ne[0] == t1->ne[0]) && - (t0->ne[2] == t1->ne[2]) && - (t0->ne[3] == t1->ne[3]); + return (t0->ne[0] == t1->ne[0]) && + (t1->ne[2]%t0->ne[2] == 0) && // verify t0 is broadcastable + (t1->ne[3]%t0->ne[3] == 0); } static inline bool ggml_can_out_prod(const struct ggml_tensor * t0, const struct ggml_tensor * t1) { @@ -4169,10 +4195,6 @@ static inline bool ggml_can_out_prod(const struct ggml_tensor * t0, const struct (t0->ne[3] == t1->ne[3]); } -bool ggml_is_quantized(enum ggml_type type) { - return GGML_IS_QUANTIZED[type]; -} - enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype) { enum ggml_type wtype = GGML_TYPE_COUNT; @@ -4199,7 +4221,7 @@ enum ggml_type ggml_ftype_to_ggml_type(enum ggml_ftype ftype) { } size_t ggml_tensor_overhead(void) { - return GGML_OBJECT_SIZE + GGML_TENSOR_SIZE + 16; + return GGML_OBJECT_SIZE + GGML_TENSOR_SIZE; } bool ggml_is_transposed(const struct ggml_tensor * tensor) { @@ -4210,8 +4232,17 @@ bool ggml_is_contiguous(const struct ggml_tensor * tensor) { static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); return - tensor->nb[0] == GGML_TYPE_SIZE[tensor->type] && - tensor->nb[1] == (tensor->nb[0]*tensor->ne[0])/GGML_BLCK_SIZE[tensor->type] && + tensor->nb[0] == ggml_type_size(tensor->type) && + tensor->nb[1] == (tensor->nb[0]*tensor->ne[0])/ggml_blck_size(tensor->type) && + tensor->nb[2] == tensor->nb[1]*tensor->ne[1] && + tensor->nb[3] == tensor->nb[2]*tensor->ne[2]; +} + +static inline bool ggml_is_contiguous_except_dim_1(const struct ggml_tensor * tensor) { + static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); + + return + tensor->nb[0] == ggml_type_size(tensor->type) && tensor->nb[2] == tensor->nb[1]*tensor->ne[1] && tensor->nb[3] == tensor->nb[2]*tensor->ne[2]; } @@ -4226,12 +4257,12 @@ static inline bool ggml_is_padded_1d(const struct ggml_tensor * tensor) { static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); return - tensor->nb[0] == GGML_TYPE_SIZE[tensor->type] && + tensor->nb[0] == ggml_type_size(tensor->type) && tensor->nb[2] == tensor->nb[1]*tensor->ne[1] && tensor->nb[3] == tensor->nb[2]*tensor->ne[2]; } -static inline bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1) { +bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1) { static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); return @@ -4361,7 +4392,7 @@ struct ggml_context * ggml_init(struct ggml_init_params params) { return NULL; } - const size_t mem_size = (params.mem_size + GGML_MEM_ALIGN - 1) & ~(GGML_MEM_ALIGN - 1); + const size_t mem_size = params.mem_buffer ? params.mem_size : GGML_PAD(params.mem_size, GGML_MEM_ALIGN); *ctx = (struct ggml_context) { /*.mem_size =*/ mem_size, @@ -4397,8 +4428,8 @@ void ggml_free(struct ggml_context * ctx) { if (&g_state.contexts[i].context == ctx) { g_state.contexts[i].used = false; - GGML_PRINT_DEBUG("%s: context %d with %d objects has been freed. memory used = %zu\n", - __func__, i, ctx->n_objects, ctx->objects_end->offs + ctx->objects_end->size); + GGML_PRINT_DEBUG("%s: context %d has been freed. memory used = %zu\n", + __func__, i, ggml_used_mem(ctx)); if (ctx->mem_buffer_owned) { GGML_ALIGNED_FREE(ctx->mem_buffer); @@ -4428,6 +4459,10 @@ size_t ggml_set_scratch(struct ggml_context * ctx, struct ggml_scratch scratch) return result; } +bool ggml_get_no_alloc(struct ggml_context * ctx) { + return ctx->no_alloc; +} + void ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc) { ctx->no_alloc = no_alloc; } @@ -4446,12 +4481,14 @@ size_t ggml_get_max_tensor_size(const struct ggml_context * ctx) { struct ggml_object * obj = ctx->objects_begin; while (obj != NULL) { - struct ggml_tensor * tensor = (struct ggml_tensor *) ((char *) ctx->mem_buffer + obj->offs); + if (obj->type == GGML_OBJECT_TENSOR) { + struct ggml_tensor * tensor = (struct ggml_tensor *) ((char *) ctx->mem_buffer + obj->offs); - const size_t size = ggml_nbytes(tensor); + const size_t size = ggml_nbytes(tensor); - if (max_size < size) { - max_size = size; + if (max_size < size) { + max_size = size; + } } obj = obj->next; @@ -4465,7 +4502,7 @@ size_t ggml_get_max_tensor_size(const struct ggml_context * ctx) { // this is an error prone process, but it is necessary to support inplace // operators when using scratch buffers // TODO: implement a better way -void ggml_scratch_save(struct ggml_context * ctx) { +static void ggml_scratch_save(struct ggml_context * ctx) { // this is needed to allow opt tensors to store their data // TODO: again, need to find a better way ctx->no_alloc_save = ctx->no_alloc; @@ -4475,7 +4512,7 @@ void ggml_scratch_save(struct ggml_context * ctx) { ctx->scratch.data = NULL; } -void ggml_scratch_load(struct ggml_context * ctx) { +static void ggml_scratch_load(struct ggml_context * ctx) { ctx->no_alloc = ctx->no_alloc_save; ctx->scratch = ctx->scratch_save; @@ -4483,12 +4520,7 @@ void ggml_scratch_load(struct ggml_context * ctx) { //////////////////////////////////////////////////////////////////////////////// -struct ggml_tensor * ggml_new_tensor_impl( - struct ggml_context * ctx, - enum ggml_type type, - int n_dims, - const int64_t* ne, - void* data) { +static struct ggml_object * ggml_new_object(struct ggml_context * ctx, enum ggml_object_type type, size_t size) { // always insert objects at the end of the context's memory pool struct ggml_object * obj_cur = ctx->objects_end; @@ -4496,63 +4528,28 @@ struct ggml_tensor * ggml_new_tensor_impl( const size_t cur_size = obj_cur == NULL ? 0 : obj_cur->size; const size_t cur_end = cur_offs + cur_size; - size_t size_needed = 0; - - if (data == NULL && !ctx->no_alloc) { - size_needed += GGML_TYPE_SIZE[type]*(ne[0]/GGML_BLCK_SIZE[type]); - for (int i = 1; i < n_dims; i++) { - size_needed *= ne[i]; - } - // align to GGML_MEM_ALIGN - size_needed = ((size_needed + GGML_MEM_ALIGN - 1)/GGML_MEM_ALIGN)*GGML_MEM_ALIGN; - } + // align to GGML_MEM_ALIGN + size_t size_needed = GGML_PAD(size, GGML_MEM_ALIGN); char * const mem_buffer = ctx->mem_buffer; struct ggml_object * const obj_new = (struct ggml_object *)(mem_buffer + cur_end); - if (ctx->scratch.data == NULL || data != NULL) { - size_needed += GGML_TENSOR_SIZE; - - if (cur_end + size_needed + GGML_OBJECT_SIZE > ctx->mem_size) { - GGML_PRINT("%s: not enough space in the context's memory pool (needed %zu, available %zu)\n", - __func__, cur_end + size_needed + GGML_OBJECT_SIZE, ctx->mem_size); - assert(false); - return NULL; - } - - *obj_new = (struct ggml_object) { - .offs = cur_end + GGML_OBJECT_SIZE, - .size = size_needed, - .next = NULL, - }; - } else { - if (ctx->scratch.offs + size_needed > ctx->scratch.size) { - GGML_PRINT("%s: not enough space in the scratch memory pool (needed %zu, available %zu)\n", - __func__, ctx->scratch.offs + size_needed, ctx->scratch.size); - assert(false); - return NULL; - } - - if (cur_end + GGML_TENSOR_SIZE + GGML_OBJECT_SIZE > ctx->mem_size) { - GGML_PRINT("%s: not enough space in the context's memory pool (needed %zu, available %zu)\n", - __func__, cur_end + GGML_TENSOR_SIZE + GGML_OBJECT_SIZE, ctx->mem_size); - assert(false); - return NULL; - } - - data = (char * const) ctx->scratch.data + ctx->scratch.offs; - - *obj_new = (struct ggml_object) { - .offs = cur_end + GGML_OBJECT_SIZE, - .size = GGML_TENSOR_SIZE, - .next = NULL, - }; - - //printf("scratch offs = %zu, size_needed = %zu\n", ctx->scratch.offs, size_needed); - - ctx->scratch.offs += size_needed; + if (cur_end + size_needed + GGML_OBJECT_SIZE > ctx->mem_size) { + GGML_PRINT("%s: not enough space in the context's memory pool (needed %zu, available %zu)\n", + __func__, cur_end + size_needed, ctx->mem_size); + assert(false); + return NULL; } + *obj_new = (struct ggml_object) { + .offs = cur_end + GGML_OBJECT_SIZE, + .size = size_needed, + .next = NULL, + .type = type, + }; + + ggml_assert_aligned(mem_buffer + obj_new->offs); + if (obj_cur != NULL) { obj_cur->next = obj_new; } else { @@ -4564,9 +4561,48 @@ struct ggml_tensor * ggml_new_tensor_impl( //printf("%s: inserted new object at %zu, size = %zu\n", __func__, cur_end, obj_new->size); - struct ggml_tensor * const result = (struct ggml_tensor *)(mem_buffer + obj_new->offs); + return obj_new; +} - ggml_assert_aligned(result); +static struct ggml_tensor * ggml_new_tensor_impl( + struct ggml_context * ctx, + enum ggml_type type, + int n_dims, + const int64_t * ne, + void * data) { + + assert(n_dims >= 1 && n_dims <= GGML_MAX_DIMS); + + size_t data_size = 0; + + if (data == NULL && !ctx->no_alloc) { + data_size += ggml_type_size(type)*(ne[0]/ggml_blck_size(type)); + for (int i = 1; i < n_dims; i++) { + data_size *= ne[i]; + } + } + + if (ctx->scratch.data != NULL && data == NULL) { + // allocate tensor data in the scratch buffer + if (ctx->scratch.offs + data_size > ctx->scratch.size) { + GGML_PRINT("%s: not enough space in the scratch memory pool (needed %zu, available %zu)\n", + __func__, ctx->scratch.offs + data_size, ctx->scratch.size); + assert(false); + return NULL; + } + + data = (char * const) ctx->scratch.data + ctx->scratch.offs; + + ctx->scratch.offs += data_size; + + data_size = 0; + } + + struct ggml_object * const obj_new = ggml_new_object(ctx, GGML_OBJECT_TENSOR, GGML_TENSOR_SIZE + data_size); + + // TODO: for recoverable errors, we would need to free the data allocated from the scratch buffer here + + struct ggml_tensor * const result = (struct ggml_tensor *)((char *)ctx->mem_buffer + obj_new->offs); *result = (struct ggml_tensor) { /*.type =*/ type, @@ -4575,19 +4611,17 @@ struct ggml_tensor * ggml_new_tensor_impl( /*.ne =*/ { 1, 1, 1, 1 }, /*.nb =*/ { 0, 0, 0, 0 }, /*.op =*/ GGML_OP_NONE, + /*.op_params =*/ { 0 }, /*.is_param =*/ false, /*.grad =*/ NULL, - /*.src0 =*/ NULL, - /*.src1 =*/ NULL, - /*.opt =*/ { NULL }, - /*.n_tasks =*/ 0, + /*.src =*/ { NULL }, /*.perf_runs =*/ 0, /*.perf_cycles =*/ 0, /*.perf_time_us =*/ 0, /*.data =*/ (data == NULL && !ctx->no_alloc) ? (void *)(result + 1) : data, /*.name =*/ { 0 }, /*.extra =*/ NULL, - /*.pad =*/ { 0 }, + /*.padding =*/ { 0 }, }; // TODO: this should not be needed as long as we don't rely on aligned SIMD loads @@ -4597,8 +4631,8 @@ struct ggml_tensor * ggml_new_tensor_impl( result->ne[i] = ne[i]; } - result->nb[0] = GGML_TYPE_SIZE[type]; - result->nb[1] = result->nb[0]*(result->ne[0]/GGML_BLCK_SIZE[type]); + result->nb[0] = ggml_type_size(type); + result->nb[1] = result->nb[0]*(result->ne[0]/ggml_blck_size(type)); for (int i = 2; i < GGML_MAX_DIMS; i++) { result->nb[i] = result->nb[i - 1]*result->ne[i - 1]; } @@ -4608,24 +4642,40 @@ struct ggml_tensor * ggml_new_tensor_impl( return result; } +static void ggml_set_op_params(struct ggml_tensor * tensor, const void * params, size_t params_size) { + GGML_ASSERT(tensor != NULL); // silence -Warray-bounds warnings + assert(params_size <= GGML_MAX_OP_PARAMS); + memcpy(tensor->op_params, params, params_size); +} + +static int32_t ggml_get_op_params_i32(const struct ggml_tensor * tensor, uint32_t i) { + assert(i < GGML_MAX_OP_PARAMS / sizeof(int32_t)); + return ((const int32_t *)(tensor->op_params))[i]; +} + +static void ggml_set_op_params_i32(struct ggml_tensor * tensor, uint32_t i, int32_t value) { + assert(i < GGML_MAX_OP_PARAMS / sizeof(int32_t)); + ((int32_t *)(tensor->op_params))[i] = value; +} + struct ggml_tensor * ggml_new_tensor( struct ggml_context * ctx, - enum ggml_type type, - int n_dims, - const int64_t * ne) { + enum ggml_type type, + int n_dims, + const int64_t * ne) { return ggml_new_tensor_impl(ctx, type, n_dims, ne, NULL); } struct ggml_tensor * ggml_new_tensor_1d( struct ggml_context * ctx, - enum ggml_type type, + enum ggml_type type, int64_t ne0) { return ggml_new_tensor(ctx, type, 1, &ne0); } struct ggml_tensor * ggml_new_tensor_2d( struct ggml_context * ctx, - enum ggml_type type, + enum ggml_type type, int64_t ne0, int64_t ne1) { const int64_t ne[2] = { ne0, ne1 }; @@ -4634,7 +4684,7 @@ struct ggml_tensor * ggml_new_tensor_2d( struct ggml_tensor * ggml_new_tensor_3d( struct ggml_context * ctx, - enum ggml_type type, + enum ggml_type type, int64_t ne0, int64_t ne1, int64_t ne2) { @@ -4719,7 +4769,7 @@ struct ggml_tensor * ggml_set_i32 (struct ggml_tensor * tensor, int32_t value) { { assert(tensor->nb[0] == sizeof(ggml_fp16_t)); for (int i = 0; i < n; i++) { - ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), value); + ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), GGML_FP32_TO_FP16(value)); } } break; case GGML_TYPE_F32: @@ -4771,7 +4821,7 @@ struct ggml_tensor * ggml_set_f32(struct ggml_tensor * tensor, float value) { { assert(tensor->nb[0] == sizeof(ggml_fp16_t)); for (int i = 0; i < n; i++) { - ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), value); + ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), GGML_FP32_TO_FP16(value)); } } break; case GGML_TYPE_F32: @@ -4939,6 +4989,11 @@ float * ggml_get_data_f32(const struct ggml_tensor * tensor) { return (float *)(tensor->data); } +enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor) { + GGML_ASSERT(tensor->op == GGML_OP_UNARY); + return (enum ggml_unary_op) ggml_get_op_params_i32(tensor, 0); +} + const char * ggml_get_name(const struct ggml_tensor * tensor) { return tensor->name; } @@ -4984,9 +5039,11 @@ struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * nam char * const mem_buffer = ctx->mem_buffer; while (obj != NULL) { - struct ggml_tensor * cur = (struct ggml_tensor *)(mem_buffer + obj->offs); - if (strcmp(cur->name, name) == 0) { - return cur; + if (obj->type == GGML_OBJECT_TENSOR) { + struct ggml_tensor * cur = (struct ggml_tensor *)(mem_buffer + obj->offs); + if (strcmp(cur->name, name) == 0) { + return cur; + } } obj = obj->next; @@ -4999,7 +5056,7 @@ struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * nam // ggml_dup -struct ggml_tensor * ggml_dup_impl( +static struct ggml_tensor * ggml_dup_impl( struct ggml_context * ctx, struct ggml_tensor * a, bool inplace) { @@ -5013,8 +5070,7 @@ struct ggml_tensor * ggml_dup_impl( result->op = GGML_OP_DUP; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5033,16 +5089,20 @@ struct ggml_tensor * ggml_dup_inplace( // ggml_add -struct ggml_tensor * ggml_add_impl( +static struct ggml_tensor * ggml_add_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, bool inplace) { - GGML_ASSERT(ggml_are_same_shape(a, b)); + // TODO: support less-strict constraint + // GGML_ASSERT(ggml_can_repeat(b, a)); + GGML_ASSERT(ggml_can_repeat_rows(b, a)); bool is_node = false; - if (a->grad || b->grad) { + if (!inplace && (a->grad || b->grad)) { + // TODO: support backward pass for broadcasting + GGML_ASSERT(ggml_are_same_shape(a, b)); is_node = true; } @@ -5050,8 +5110,8 @@ struct ggml_tensor * ggml_add_impl( result->op = GGML_OP_ADD; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5072,7 +5132,7 @@ struct ggml_tensor * ggml_add_inplace( // ggml_add1 -struct ggml_tensor * ggml_add1_impl( +static struct ggml_tensor * ggml_add1_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -5090,8 +5150,8 @@ struct ggml_tensor * ggml_add1_impl( result->op = GGML_OP_ADD1; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5112,7 +5172,7 @@ struct ggml_tensor * ggml_add1_inplace( // ggml_acc -struct ggml_tensor * ggml_acc_impl( +static struct ggml_tensor * ggml_acc_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -5134,23 +5194,13 @@ struct ggml_tensor * ggml_acc_impl( struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 5); - - ((int32_t *) c->data)[0] = nb1; - ((int32_t *) c->data)[1] = nb2; - ((int32_t *) c->data)[2] = nb3; - ((int32_t *) c->data)[3] = offset; - ((int32_t *) c->data)[4] = inplace ? 1 : 0; - - ggml_scratch_load(ctx); + int32_t params[] = { nb1, nb2, nb3, offset, inplace ? 1 : 0 }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_ACC; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = c; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5179,7 +5229,7 @@ struct ggml_tensor * ggml_acc_inplace( // ggml_sub -struct ggml_tensor * ggml_sub_impl( +static struct ggml_tensor * ggml_sub_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -5196,8 +5246,8 @@ struct ggml_tensor * ggml_sub_impl( result->op = GGML_OP_SUB; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5218,7 +5268,7 @@ struct ggml_tensor * ggml_sub_inplace( // ggml_mul -struct ggml_tensor * ggml_mul_impl( +static struct ggml_tensor * ggml_mul_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -5243,8 +5293,8 @@ struct ggml_tensor * ggml_mul_impl( result->op = GGML_OP_MUL; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5265,7 +5315,7 @@ struct ggml_tensor * ggml_mul_inplace( // ggml_div -struct ggml_tensor * ggml_div_impl( +static struct ggml_tensor * ggml_div_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -5286,8 +5336,8 @@ struct ggml_tensor * ggml_div_impl( result->op = GGML_OP_DIV; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5308,7 +5358,7 @@ struct ggml_tensor * ggml_div_inplace( // ggml_sqr -struct ggml_tensor * ggml_sqr_impl( +static struct ggml_tensor * ggml_sqr_impl( struct ggml_context * ctx, struct ggml_tensor * a, bool inplace) { @@ -5322,8 +5372,7 @@ struct ggml_tensor * ggml_sqr_impl( result->op = GGML_OP_SQR; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5342,7 +5391,7 @@ struct ggml_tensor * ggml_sqr_inplace( // ggml_sqrt -struct ggml_tensor * ggml_sqrt_impl( +static struct ggml_tensor * ggml_sqrt_impl( struct ggml_context * ctx, struct ggml_tensor * a, bool inplace) { @@ -5356,8 +5405,7 @@ struct ggml_tensor * ggml_sqrt_impl( result->op = GGML_OP_SQRT; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5377,7 +5425,7 @@ struct ggml_tensor * ggml_sqrt_inplace( // ggml_log -struct ggml_tensor * ggml_log_impl( +static struct ggml_tensor * ggml_log_impl( struct ggml_context * ctx, struct ggml_tensor * a, bool inplace) { @@ -5391,8 +5439,7 @@ struct ggml_tensor * ggml_log_impl( result->op = GGML_OP_LOG; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5424,8 +5471,7 @@ struct ggml_tensor * ggml_sum( result->op = GGML_OP_SUM; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5451,8 +5497,7 @@ struct ggml_tensor * ggml_sum_rows( result->op = GGML_OP_SUM_ROWS; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5474,8 +5519,7 @@ struct ggml_tensor * ggml_mean( result->op = GGML_OP_MEAN; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5498,8 +5542,7 @@ struct ggml_tensor * ggml_argmax( result->op = GGML_OP_ARGMAX; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -5518,16 +5561,12 @@ struct ggml_tensor * ggml_repeat( is_node = true; } - if (ggml_are_same_shape(a, b) && !is_node) { - return a; - } - struct ggml_tensor * result = ggml_new_tensor(ctx, a->type, b->n_dims, b->ne); result->op = GGML_OP_REPEAT; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -5554,351 +5593,174 @@ struct ggml_tensor * ggml_repeat_back( result->op = GGML_OP_REPEAT_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; + + return result; +} + +// ggml_concat + +struct ggml_tensor* ggml_concat( + struct ggml_context* ctx, + struct ggml_tensor* a, + struct ggml_tensor* b) { + GGML_ASSERT(a->ne[0] == b->ne[0] && a->ne[1] == b->ne[1] && a->ne[3] == b->ne[3]); + + bool is_node = false; + + if (a->grad || b->grad) { + is_node = true; + } + + struct ggml_tensor * result = ggml_new_tensor_4d(ctx, a->type, a->ne[0], a->ne[1], a->ne[2] + b->ne[2], a->ne[3]); + + result->op = GGML_OP_CONCAT; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = b; return result; } // ggml_abs -struct ggml_tensor * ggml_abs_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_ABS; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_abs( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_abs_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_ABS); } struct ggml_tensor * ggml_abs_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_abs_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_ABS); } - // ggml_sgn -struct ggml_tensor * ggml_sgn_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_SGN; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_sgn( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_sgn_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_SGN); } struct ggml_tensor * ggml_sgn_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_sgn_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_SGN); } // ggml_neg -struct ggml_tensor * ggml_neg_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_NEG; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_neg( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_neg_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_NEG); } struct ggml_tensor * ggml_neg_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_neg_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_NEG); } // ggml_step -struct ggml_tensor * ggml_step_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_STEP; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_step( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_step_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_STEP); } struct ggml_tensor * ggml_step_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_step_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_STEP); } // ggml_tanh -struct ggml_tensor * ggml_tanh_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_TANH; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_tanh( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_tanh_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_TANH); } struct ggml_tensor * ggml_tanh_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_tanh_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_TANH); } // ggml_elu -struct ggml_tensor * ggml_elu_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_ELU; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_elu( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_elu_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_ELU); } struct ggml_tensor * ggml_elu_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_elu_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_ELU); } // ggml_relu -struct ggml_tensor * ggml_relu_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_RELU; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_relu( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_relu_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_RELU); } struct ggml_tensor * ggml_relu_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_relu_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_RELU); } // ggml_gelu -struct ggml_tensor * ggml_gelu_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_GELU; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_gelu( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_gelu_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_GELU); } struct ggml_tensor * ggml_gelu_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_gelu_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_GELU); } // ggml_gelu_quick -struct ggml_tensor * ggml_gelu_quick_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_GELU_QUICK; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_gelu_quick( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_gelu_quick_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_GELU_QUICK); } struct ggml_tensor * ggml_gelu_quick_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_gelu_quick_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_GELU_QUICK); } // ggml_silu -struct ggml_tensor * ggml_silu_impl( - struct ggml_context * ctx, - struct ggml_tensor * a, - bool inplace) { - bool is_node = false; - - if (!inplace && (a->grad)) { - is_node = true; - } - - struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - - result->op = GGML_OP_SILU; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - - return result; -} - struct ggml_tensor * ggml_silu( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_silu_impl(ctx, a, false); + return ggml_unary(ctx, a, GGML_UNARY_OP_SILU); } struct ggml_tensor * ggml_silu_inplace( struct ggml_context * ctx, struct ggml_tensor * a) { - return ggml_silu_impl(ctx, a, true); + return ggml_unary_inplace(ctx, a, GGML_UNARY_OP_SILU); } // ggml_silu_back @@ -5918,17 +5780,18 @@ struct ggml_tensor * ggml_silu_back( result->op = GGML_OP_SILU_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } // ggml_norm -struct ggml_tensor * ggml_norm_impl( +static struct ggml_tensor * ggml_norm_impl( struct ggml_context * ctx, struct ggml_tensor * a, + float eps, bool inplace) { bool is_node = false; @@ -5939,29 +5802,35 @@ struct ggml_tensor * ggml_norm_impl( struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + ggml_set_op_params(result, &eps, sizeof(eps)); + result->op = GGML_OP_NORM; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; // TODO: maybe store epsilon here? + result->src[0] = a; return result; } struct ggml_tensor * ggml_norm( struct ggml_context * ctx, - struct ggml_tensor * a) { - return ggml_norm_impl(ctx, a, false); + struct ggml_tensor * a, + float eps) { + return ggml_norm_impl(ctx, a, eps, false); } struct ggml_tensor * ggml_norm_inplace( struct ggml_context * ctx, - struct ggml_tensor * a) { - return ggml_norm_impl(ctx, a, true); + struct ggml_tensor * a, + float eps) { + return ggml_norm_impl(ctx, a, eps, true); } -struct ggml_tensor * ggml_rms_norm_impl( +// ggml_rms_norm + +static struct ggml_tensor * ggml_rms_norm_impl( struct ggml_context * ctx, struct ggml_tensor * a, + float eps, bool inplace) { bool is_node = false; @@ -5971,26 +5840,31 @@ struct ggml_tensor * ggml_rms_norm_impl( struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + ggml_set_op_params(result, &eps, sizeof(eps)); + result->op = GGML_OP_RMS_NORM; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; // TODO: maybe store epsilon here? + result->src[0] = a; return result; } struct ggml_tensor * ggml_rms_norm( struct ggml_context * ctx, - struct ggml_tensor * a) { - return ggml_rms_norm_impl(ctx, a, false); + struct ggml_tensor * a, + float eps) { + return ggml_rms_norm_impl(ctx, a, eps, false); } struct ggml_tensor * ggml_rms_norm_inplace( struct ggml_context * ctx, - struct ggml_tensor * a) { - return ggml_rms_norm_impl(ctx, a, true); + struct ggml_tensor * a, + float eps) { + return ggml_rms_norm_impl(ctx, a, eps, true); } +// ggml_rms_norm_back + struct ggml_tensor * ggml_rms_norm_back( struct ggml_context * ctx, struct ggml_tensor * a, @@ -6006,12 +5880,50 @@ struct ggml_tensor * ggml_rms_norm_back( result->op = GGML_OP_RMS_NORM_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } +// ggml_group_norm + +static struct ggml_tensor * ggml_group_norm_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_groups, + bool inplace) { + + bool is_node = false; + if (!inplace && (a->grad)) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + + result->op = GGML_OP_GROUP_NORM; + result->op_params[0] = n_groups; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = NULL; // TODO: maybe store epsilon here? + + return result; +} + +struct ggml_tensor * ggml_group_norm( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_groups) { + return ggml_group_norm_impl(ctx, a, n_groups, false); +} + +struct ggml_tensor * ggml_group_norm_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_groups) { + return ggml_group_norm_impl(ctx, a, n_groups, true); +} // ggml_mul_mat @@ -6028,13 +5940,13 @@ struct ggml_tensor * ggml_mul_mat( is_node = true; } - const int64_t ne[4] = { a->ne[1], b->ne[1], a->ne[2], b->ne[3] }; - struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, MIN(a->n_dims, b->n_dims), ne); + const int64_t ne[4] = { a->ne[1], b->ne[1], b->ne[2], b->ne[3] }; + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, MAX(a->n_dims, b->n_dims), ne); result->op = GGML_OP_MUL_MAT; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -6059,15 +5971,15 @@ struct ggml_tensor * ggml_out_prod( result->op = GGML_OP_OUT_PROD; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } // ggml_scale -struct ggml_tensor * ggml_scale_impl( +static struct ggml_tensor * ggml_scale_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -6085,8 +5997,8 @@ struct ggml_tensor * ggml_scale_impl( result->op = GGML_OP_SCALE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -6107,7 +6019,7 @@ struct ggml_tensor * ggml_scale_inplace( // ggml_set -struct ggml_tensor * ggml_set_impl( +static struct ggml_tensor * ggml_set_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -6127,23 +6039,13 @@ struct ggml_tensor * ggml_set_impl( // make a view of the destination struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 5); - - (( int32_t * ) c->data)[0] = nb1; - (( int32_t * ) c->data)[1] = nb2; - (( int32_t * ) c->data)[2] = nb3; - (( int32_t * ) c->data)[3] = offset; - (( int32_t * ) c->data)[4] = inplace ? 1 : 0; - - ggml_scratch_load(ctx); + int32_t params[] = { nb1, nb2, nb3, offset, inplace ? 1 : 0 }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_SET; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = c; + result->src[0] = a; + result->src[1] = b; return result; } @@ -6207,7 +6109,7 @@ struct ggml_tensor * ggml_set_2d_inplace( // ggml_cpy -struct ggml_tensor * ggml_cpy_impl( +static struct ggml_tensor * ggml_cpy_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -6230,8 +6132,8 @@ struct ggml_tensor * ggml_cpy_impl( result->op = GGML_OP_CPY; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -6252,7 +6154,7 @@ struct ggml_tensor * ggml_cpy_inplace( // ggml_cont -struct ggml_tensor * ggml_cont_impl( +static struct ggml_tensor * ggml_cont_impl( struct ggml_context * ctx, struct ggml_tensor * a, bool inplace) { @@ -6267,8 +6169,7 @@ struct ggml_tensor * ggml_cont_impl( result->op = GGML_OP_CONT; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6311,8 +6212,7 @@ struct ggml_tensor * ggml_reshape( result->op = GGML_OP_RESHAPE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6336,8 +6236,7 @@ struct ggml_tensor * ggml_reshape_1d( result->op = GGML_OP_RESHAPE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6362,8 +6261,7 @@ struct ggml_tensor * ggml_reshape_2d( result->op = GGML_OP_RESHAPE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6389,8 +6287,7 @@ struct ggml_tensor * ggml_reshape_3d( result->op = GGML_OP_RESHAPE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6418,14 +6315,34 @@ struct ggml_tensor * ggml_reshape_4d( result->op = GGML_OP_RESHAPE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } // ggml_view_1d +static struct ggml_tensor * ggml_view_tensor_offset( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_dims, + const int64_t * ne, + size_t offset) { + // don't calculate an offset from an unallocated tensor + void * data = NULL; + if (a->data != NULL) { + data = (char *) a->data + offset; + } + + struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, n_dims, ne, data); + + ggml_format_name(result, "%s (view)", a->name); + + ggml_set_op_params(result, &offset, sizeof(offset)); + + return result; +} + struct ggml_tensor * ggml_view_1d( struct ggml_context * ctx, struct ggml_tensor * a, @@ -6438,22 +6355,11 @@ struct ggml_tensor * ggml_view_1d( is_node = true; } - struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 1, &ne0, (char *) a->data + offset); - ggml_format_name(result, "%s (view)", a->name); - - ggml_scratch_save(ctx); - - struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2); - ggml_set_name(offs, "offset"); - memcpy(offs->data, &offset, 2*sizeof(int32_t)); - - ggml_scratch_load(ctx); + struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 1, &ne0, offset); result->op = GGML_OP_VIEW; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - result->opt[0] = offs; + result->src[0] = a; return result; } @@ -6476,16 +6382,7 @@ struct ggml_tensor * ggml_view_2d( const int64_t ne[GGML_MAX_DIMS] = { ne0, ne1, 1, 1 }; - struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 2, ne, (char *) a->data + offset); - ggml_format_name(result, "%s (view)", a->name); - - ggml_scratch_save(ctx); - - struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2); - ggml_set_name(offs, "offset"); - memcpy(offs->data, &offset, 2*sizeof(int32_t)); - - ggml_scratch_load(ctx); + struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 2, ne, offset); result->nb[1] = nb1; result->nb[2] = result->nb[1]*ne1; @@ -6493,9 +6390,7 @@ struct ggml_tensor * ggml_view_2d( result->op = GGML_OP_VIEW; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - result->opt[0] = offs; + result->src[0] = a; return result; } @@ -6520,16 +6415,7 @@ struct ggml_tensor * ggml_view_3d( const int64_t ne[GGML_MAX_DIMS] = { ne0, ne1, ne2, 1 }; - struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 3, ne, (char *) a->data + offset); - ggml_format_name(result, "%s (view)", a->name); - - ggml_scratch_save(ctx); - - struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2); - ggml_set_name(offs, "offset"); - memcpy(offs->data, &offset, 2*sizeof(int32_t)); - - ggml_scratch_load(ctx); + struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 3, ne, offset); result->nb[1] = nb1; result->nb[2] = nb2; @@ -6537,9 +6423,7 @@ struct ggml_tensor * ggml_view_3d( result->op = GGML_OP_VIEW; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - result->opt[0] = offs; + result->src[0] = a; return result; } @@ -6566,16 +6450,7 @@ struct ggml_tensor * ggml_view_4d( const int64_t ne[GGML_MAX_DIMS] = { ne0, ne1, ne2, ne3 }; - struct ggml_tensor * result = ggml_new_tensor_impl(ctx, a->type, 4, ne, (char *) a->data + offset); - ggml_format_name(result, "%s (view)", a->name); - - ggml_scratch_save(ctx); - - struct ggml_tensor * offs = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2); - ggml_set_name(offs, "offset"); - memcpy(offs->data, &offset, 2*sizeof(int32_t)); - - ggml_scratch_load(ctx); + struct ggml_tensor * result = ggml_view_tensor_offset(ctx, a, 4, ne, offset); result->nb[1] = nb1; result->nb[2] = nb2; @@ -6583,9 +6458,7 @@ struct ggml_tensor * ggml_view_4d( result->op = GGML_OP_VIEW; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - result->opt[0] = offs; + result->src[0] = a; return result; } @@ -6645,23 +6518,10 @@ struct ggml_tensor * ggml_permute( result->op = GGML_OP_PERMUTE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; - if (is_node) { - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 4); - - ((int32_t *) b->data)[0] = axis0; - ((int32_t *) b->data)[1] = axis1; - ((int32_t *) b->data)[2] = axis2; - ((int32_t *) b->data)[3] = axis3; - - ggml_scratch_load(ctx); - - result->opt[0] = b; - } + int32_t params[] = { axis0, axis1, axis2, axis3 }; + ggml_set_op_params(result, params, sizeof(params)); return result; } @@ -6688,8 +6548,7 @@ struct ggml_tensor * ggml_transpose( result->op = GGML_OP_TRANSPOSE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6714,8 +6573,8 @@ struct ggml_tensor * ggml_get_rows( result->op = GGML_OP_GET_ROWS; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -6742,9 +6601,9 @@ struct ggml_tensor * ggml_get_rows_back( result->op = GGML_OP_GET_ROWS_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = c; + result->src[0] = a; + result->src[1] = b; + result->src[2] = c; return result; } @@ -6766,8 +6625,7 @@ struct ggml_tensor * ggml_diag( result->op = GGML_OP_DIAG; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6775,7 +6633,7 @@ struct ggml_tensor * ggml_diag( // ggml_diag_mask_inf -struct ggml_tensor * ggml_diag_mask_inf_impl( +static struct ggml_tensor * ggml_diag_mask_inf_impl( struct ggml_context * ctx, struct ggml_tensor * a, int n_past, @@ -6788,19 +6646,12 @@ struct ggml_tensor * ggml_diag_mask_inf_impl( struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2); - - ((int32_t *) b->data)[0] = n_past; - ((int32_t *) b->data)[1] = inplace ? 1 : 0; - - ggml_scratch_load(ctx); + int32_t params[] = { n_past, inplace ? 1 : 0 }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_DIAG_MASK_INF; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; return result; } @@ -6822,7 +6673,7 @@ struct ggml_tensor * ggml_diag_mask_inf_inplace( // ggml_diag_mask_zero -struct ggml_tensor * ggml_diag_mask_zero_impl( +static struct ggml_tensor * ggml_diag_mask_zero_impl( struct ggml_context * ctx, struct ggml_tensor * a, int n_past, @@ -6835,20 +6686,12 @@ struct ggml_tensor * ggml_diag_mask_zero_impl( struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 2); - ggml_set_name(b, "n_past, inplace"); - - ((int32_t *) b->data)[0] = n_past; - ((int32_t *) b->data)[1] = inplace ? 1 : 0; - - ggml_scratch_load(ctx); + int32_t params[] = { n_past, inplace ? 1 : 0 }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_DIAG_MASK_ZERO; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; return result; } @@ -6869,7 +6712,7 @@ struct ggml_tensor * ggml_diag_mask_zero_inplace( // ggml_soft_max -struct ggml_tensor * ggml_soft_max_impl( +static struct ggml_tensor * ggml_soft_max_impl( struct ggml_context * ctx, struct ggml_tensor * a, bool inplace) { @@ -6883,8 +6726,7 @@ struct ggml_tensor * ggml_soft_max_impl( result->op = GGML_OP_SOFT_MAX; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; + result->src[0] = a; return result; } @@ -6904,7 +6746,7 @@ struct ggml_tensor * ggml_soft_max_inplace( // ggml_soft_max_back -struct ggml_tensor * ggml_soft_max_back_impl( +static struct ggml_tensor * ggml_soft_max_back_impl( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -6919,8 +6761,8 @@ struct ggml_tensor * ggml_soft_max_back_impl( result->op = GGML_OP_SOFT_MAX_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -6941,13 +6783,17 @@ struct ggml_tensor * ggml_soft_max_back_inplace( // ggml_rope -struct ggml_tensor * ggml_rope_impl( +static struct ggml_tensor * ggml_rope_impl( struct ggml_context * ctx, struct ggml_tensor * a, int n_past, int n_dims, int mode, int n_ctx, + float freq_base, + float freq_scale, + float xpos_base, + bool xpos_down, bool inplace) { GGML_ASSERT(n_past >= 0); bool is_node = false; @@ -6958,21 +6804,16 @@ struct ggml_tensor * ggml_rope_impl( struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 4); - - ((int32_t *) b->data)[0] = n_past; - ((int32_t *) b->data)[1] = n_dims; - ((int32_t *) b->data)[2] = mode; - ((int32_t *) b->data)[3] = n_ctx; - - ggml_scratch_load(ctx); + int32_t params[8] = { n_past, n_dims, mode, n_ctx }; + memcpy(params + 4, &freq_base, sizeof(float)); + memcpy(params + 5, &freq_scale, sizeof(float)); + memcpy(params + 6, &xpos_base, sizeof(float)); + memcpy(params + 7, &xpos_down, sizeof(bool)); + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_ROPE; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; return result; } @@ -6984,7 +6825,7 @@ struct ggml_tensor * ggml_rope( int n_dims, int mode, int n_ctx) { - return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, false); + return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, 10000.0f, 1.0f, 0.0f, false, false); } struct ggml_tensor * ggml_rope_inplace( @@ -6994,7 +6835,41 @@ struct ggml_tensor * ggml_rope_inplace( int n_dims, int mode, int n_ctx) { - return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, true); + return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, 10000.0f, 1.0f, 0.0f, false, true); +} + +struct ggml_tensor * ggml_rope_custom( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_past, + int n_dims, + int mode, + int n_ctx, + float freq_base, + float freq_scale) { + return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale, 0.0f, false, false); +} + +struct ggml_tensor * ggml_rope_custom_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_past, + int n_dims, + int mode, + int n_ctx, + float freq_base, + float freq_scale) { + return ggml_rope_impl(ctx, a, n_past, n_dims, mode, n_ctx, freq_base, freq_scale, 0.0f, false, true); +} + +struct ggml_tensor * ggml_rope_xpos_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_past, + int n_dims, + float base, + bool down) { + return ggml_rope_impl(ctx, a, n_past, n_dims, 0, 0, 10000.0f, 1.0f, base, down, true); } // ggml_rope_back @@ -7004,7 +6879,12 @@ struct ggml_tensor * ggml_rope_back( struct ggml_tensor * a, int n_past, int n_dims, - int mode) { + int mode, + int n_ctx, + float freq_base, + float freq_scale, + float xpos_base, + bool xpos_down) { GGML_ASSERT(n_past >= 0); GGML_ASSERT((mode & 4) == 0 && "ggml_rope_back() for ChatGLM not implemented yet"); @@ -7016,21 +6896,16 @@ struct ggml_tensor * ggml_rope_back( struct ggml_tensor * result = ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3); - ggml_set_name(b, "n_past, n_dims, mode"); - - ((int32_t *) b->data)[0] = n_past; - ((int32_t *) b->data)[1] = n_dims; - ((int32_t *) b->data)[2] = mode; - - ggml_scratch_load(ctx); + int32_t params[8] = { n_past, n_dims, mode, n_ctx }; + memcpy(params + 4, &freq_base, sizeof(float)); + memcpy(params + 5, &freq_scale, sizeof(float)); + memcpy(params + 6, &xpos_base, sizeof(float)); + memcpy(params + 7, &xpos_down, sizeof(bool)); + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_ROPE_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; return result; } @@ -7055,21 +6930,13 @@ struct ggml_tensor * ggml_alibi( //struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); struct ggml_tensor * result = ggml_view_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3); - - ((int32_t *) b->data)[0] = n_past; - ((int32_t *) b->data)[1] = n_head; - GGML_ASSERT(sizeof(float) == sizeof(int32_t)); - (((float *) b->data)[2]) = bias_max; - - ggml_scratch_load(ctx); + int32_t op_params[3] = { n_past, n_head }; + memcpy(op_params + 2, &bias_max, sizeof(float)); + ggml_set_op_params(result, op_params, sizeof(op_params)); result->op = GGML_OP_ALIBI; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; return result; } @@ -7091,19 +6958,12 @@ struct ggml_tensor * ggml_clamp( // TODO: when implement backward, fix this: struct ggml_tensor * result = ggml_view_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 2); - - ((float *) b->data)[0] = min; - ((float *) b->data)[1] = max; - - ggml_scratch_load(ctx); + float params[] = { min, max }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_CLAMP; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; return result; } @@ -7134,73 +6994,19 @@ GGML_API struct ggml_tensor * ggml_conv_1d( ggml_calc_conv_output_size(b->ne[0], a->ne[0], s0, p0, d0), a->ne[2], 1, 1, }; - struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 2, ne); + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 2, ne); - ggml_scratch_save(ctx); - struct ggml_tensor* c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3); - ((int32_t*)c->data)[0] = s0; - ((int32_t*)c->data)[1] = p0; - ((int32_t*)c->data)[2] = d0; - ggml_scratch_load(ctx); + int32_t params[] = { s0, p0, d0 }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_CONV_1D; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = c; + result->src[0] = a; + result->src[1] = b; return result; } -// ggml_conv_2d - -struct ggml_tensor* ggml_conv_2d( - struct ggml_context* ctx, - struct ggml_tensor * a, - struct ggml_tensor * b, - int s0, - int s1, - int p0, - int p1, - int d0, - int d1) { - - GGML_ASSERT(b->ne[3] == 1); - GGML_ASSERT(a->ne[2] == b->ne[2]); - bool is_node = false; - - if (a->grad || b->grad) { - GGML_ASSERT(false); // TODO: implement backward - is_node = true; - } - - const int64_t ne[4] = { - ggml_calc_conv_output_size(b->ne[0], a->ne[0], s0, p0, d0), - ggml_calc_conv_output_size(b->ne[1], a->ne[1], s1, p1, d1), - a->ne[3], 1, - }; - struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne); - - ggml_scratch_save(ctx); - struct ggml_tensor* c = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 6); - ((int32_t*)c->data)[0] = s0; - ((int32_t*)c->data)[1] = s1; - ((int32_t*)c->data)[2] = p0; - ((int32_t*)c->data)[3] = p1; - ((int32_t*)c->data)[4] = d0; - ((int32_t*)c->data)[5] = d1; - ggml_scratch_load(ctx); - - result->op = GGML_OP_CONV_2D; - result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = c; - - return result; - -} - // ggml_conv_1d_ph struct ggml_tensor* ggml_conv_1d_ph( @@ -7212,6 +7018,212 @@ struct ggml_tensor* ggml_conv_1d_ph( return ggml_conv_1d(ctx, a, b, s, a->ne[0] / 2, d); } +// ggml_conv_2d + +struct ggml_tensor * ggml_conv_2d( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + int s0, + int s1, + int p0, + int p1, + int d0, + int d1) { + + GGML_ASSERT(a->ne[2] == b->ne[2]); + bool is_node = false; + + if (a->grad || b->grad) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + const int64_t ne[4] = { + ggml_calc_conv_output_size(b->ne[0], a->ne[0], s0, p0, d0), + ggml_calc_conv_output_size(b->ne[1], a->ne[1], s1, p1, d1), + a->ne[3], b->ne[3], + }; + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne); + + int32_t params[] = { s0, s1, p0, p1, d0, d1 }; + ggml_set_op_params(result, params, sizeof(params)); + + result->op = GGML_OP_CONV_2D; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = b; + + return result; + +} + +// ggml_conv_2d_sk_p0 + +struct ggml_tensor * ggml_conv_2d_sk_p0( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b) { + return ggml_conv_2d(ctx, a, b, a->ne[0], a->ne[1], 0, 0, 1, 1); +} + +// ggml_conv_2d_s1_ph + +struct ggml_tensor * ggml_conv_2d_s1_ph( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b) { + return ggml_conv_2d(ctx, a, b, 1, 1, a->ne[0] / 2, a->ne[1] / 2, 1, 1); +} + +// ggml_conv_transpose_2d_p0 + +static int64_t ggml_calc_conv_transpose_output_size(int64_t ins, int64_t ks, int s, int p) { + return (ins - 1) * s - 2 * p + ks; +} + +struct ggml_tensor * ggml_conv_transpose_2d_p0( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + int stride) { + GGML_ASSERT(a->ne[3] == b->ne[2]); + + bool is_node = false; + + if (a->grad || b->grad) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + const int64_t ne[4] = { + ggml_calc_conv_transpose_output_size(b->ne[0], a->ne[0], stride, 0 /*p0*/), + ggml_calc_conv_transpose_output_size(b->ne[1], a->ne[1], stride, 0 /*p1*/), + a->ne[2], b->ne[3], + }; + + struct ggml_tensor* result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne); + + ggml_set_op_params_i32(result, 0, stride); + + result->op = GGML_OP_CONV_TRANSPOSE_2D; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = b; + + return result; +} + +// ggml_pool_* + +static int64_t ggml_calc_pool_output_size(int64_t ins, int ks, int s, int p) { + return (ins + 2 * p - ks) / s + 1; +} + +// ggml_pool_1d + +struct ggml_tensor * ggml_pool_1d( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_op_pool op, + int k0, + int s0, + int p0) { + + bool is_node = false; + + if (a->grad) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + const int64_t ne[3] = { + ggml_calc_pool_output_size(a->ne[0], k0, s0, p0), + a->ne[1], + }; + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 2, ne); + + int32_t params[] = { op, k0, s0, p0 }; + ggml_set_op_params(result, params, sizeof(params)); + + result->op = GGML_OP_POOL_1D; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + + return result; +} + +// ggml_pool_2d + +struct ggml_tensor * ggml_pool_2d( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_op_pool op, + int k0, + int k1, + int s0, + int s1, + int p0, + int p1) { + + bool is_node = false; + + if (a->grad) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + const int64_t ne[3] = { + ggml_calc_pool_output_size(a->ne[0], k0, s0, p0), + ggml_calc_pool_output_size(a->ne[1], k1, s1, p1), + a->ne[2], + }; + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 3, ne); + + int32_t params[] = { op, k0, k1, s0, s1, p0, p1 }; + ggml_set_op_params(result, params, sizeof(params)); + + result->op = GGML_OP_POOL_2D; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + + return result; +} + +// ggml_upscale + +static struct ggml_tensor * ggml_upscale_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + int scale_factor) { + bool is_node = false; + + if (a->grad) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + struct ggml_tensor * result = ggml_new_tensor_4d(ctx, a->type, + a->ne[0] * scale_factor, + a->ne[1] * scale_factor, + a->ne[2], a->ne[3]); + + result->op = GGML_OP_UPSCALE; + result->op_params[0] = scale_factor; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = NULL; + + return result; +} + +struct ggml_tensor * ggml_upscale( + struct ggml_context * ctx, + struct ggml_tensor * a, + int scale_factor) { + return ggml_upscale_impl(ctx, a, scale_factor); +} + // ggml_flash_attn struct ggml_tensor * ggml_flash_attn( @@ -7230,14 +7242,16 @@ struct ggml_tensor * ggml_flash_attn( } //struct ggml_tensor * result = ggml_dup_tensor(ctx, q); - struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, q->ne); + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, q->n_dims, q->ne); + + int32_t t = masked ? 1 : 0; + ggml_set_op_params(result, &t, sizeof(t)); result->op = GGML_OP_FLASH_ATTN; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = q; - result->src1 = k; - result->opt[0] = v; - result->opt[1] = ggml_new_i32(ctx, masked ? 1 : 0); + result->src[0] = q; + result->src[1] = k; + result->src[2] = v; return result; } @@ -7261,15 +7275,15 @@ struct ggml_tensor * ggml_flash_ff( } //struct ggml_tensor * result = ggml_dup_tensor(ctx, a); - struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, a->ne); + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, a->n_dims, a->ne); result->op = GGML_OP_FLASH_FF; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b0; - result->opt[0] = b1; - result->opt[1] = c0; - result->opt[2] = c1; + result->src[0] = a; + result->src[1] = b0; + result->src[2] = b1; + result->src[3] = c0; + result->src[4] = c1; return result; } @@ -7327,13 +7341,15 @@ struct ggml_tensor * ggml_flash_attn_back( struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne); + int32_t masked_i = masked ? 1 : 0; + ggml_set_op_params(result, &masked_i, sizeof(masked_i)); + result->op = GGML_OP_FLASH_ATTN_BACK; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = q; - result->src1 = k; - result->opt[0] = v; - result->opt[1] = d; - result->opt[2] = ggml_new_i32(ctx, masked ? 1 : 0); + result->src[0] = q; + result->src[1] = k; + result->src[2] = v; + result->src[3] = d; return result; } @@ -7366,21 +7382,12 @@ struct ggml_tensor * ggml_win_part( struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 3); - - ((int32_t *) b->data)[0] = npx; - ((int32_t *) b->data)[1] = npy; - ((int32_t *) b->data)[2] = w; - - ggml_scratch_load(ctx); + int32_t params[] = { npx, npy, w }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_WIN_PART; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - result->opt[0] = b; + result->src[0] = a; return result; } @@ -7405,26 +7412,136 @@ struct ggml_tensor * ggml_win_unpart( const int64_t ne[4] = { a->ne[0], w0, h0, 1, }; struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F32, 3, ne); - ggml_scratch_save(ctx); - - struct ggml_tensor * b = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 1); - - ((int32_t *) b->data)[0] = w; - - ggml_scratch_load(ctx); + int32_t params[] = { w }; + ggml_set_op_params(result, params, sizeof(params)); result->op = GGML_OP_WIN_UNPART; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = NULL; - result->opt[0] = b; + result->src[0] = a; return result; } +// ggml_get_rel_pos + +struct ggml_tensor * ggml_get_rel_pos( + struct ggml_context * ctx, + struct ggml_tensor * a, + int qh, + int kh) { + GGML_ASSERT(qh == kh); + GGML_ASSERT(2*MAX(qh, kh) - 1 == a->ne[1]); + + bool is_node = false; + + if (a->grad) { + GGML_ASSERT(false); // TODO: implement backward + is_node = true; + } + + const int64_t ne[4] = { a->ne[0], kh, qh, 1, }; + struct ggml_tensor * result = ggml_new_tensor(ctx, GGML_TYPE_F16, 3, ne); + + result->op = GGML_OP_GET_REL_POS; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = NULL; + + return result; +} + +// ggml_add_rel_pos + +static struct ggml_tensor * ggml_add_rel_pos_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * pw, + struct ggml_tensor * ph, + bool inplace) { + GGML_ASSERT(ggml_are_same_shape(pw, ph)); + GGML_ASSERT(ggml_is_contiguous(a)); + GGML_ASSERT(ggml_is_contiguous(pw)); + GGML_ASSERT(ggml_is_contiguous(ph)); + GGML_ASSERT(ph->type == GGML_TYPE_F32); + GGML_ASSERT(pw->type == GGML_TYPE_F32); + GGML_ASSERT(pw->ne[3] == a->ne[2]); + GGML_ASSERT(pw->ne[0]*pw->ne[0] == a->ne[0]); + GGML_ASSERT(pw->ne[1]*pw->ne[2] == a->ne[1]); + + bool is_node = false; + + if (!inplace && (a->grad || pw->grad || ph->grad)) { + is_node = true; + } + + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + result->op = GGML_OP_ADD_REL_POS; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = pw; + result->src[2] = ph; + + return result; +} + + +struct ggml_tensor * ggml_add_rel_pos( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * pw, + struct ggml_tensor * ph) { + return ggml_add_rel_pos_impl(ctx, a, pw, ph, false); +} + +struct ggml_tensor * ggml_add_rel_pos_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * pw, + struct ggml_tensor * ph) { + return ggml_add_rel_pos_impl(ctx, a, pw, ph, true); +} + +// gmml_unary + +static struct ggml_tensor * ggml_unary_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_unary_op op, + bool inplace) { + bool is_node = false; + + if (!inplace && (a->grad)) { + is_node = true; + } + + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + + ggml_set_op_params_i32(result, 0, (int32_t) op); + + result->op = GGML_OP_UNARY; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + + return result; +} + +struct ggml_tensor * ggml_unary( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_unary_op op) { + return ggml_unary_impl(ctx, a, op, false); +} + +struct ggml_tensor * ggml_unary_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_unary_op op) { + return ggml_unary_impl(ctx, a, op, true); +} + // ggml_map_unary -struct ggml_tensor * ggml_map_unary_impl_f32( +static struct ggml_tensor * ggml_map_unary_impl_f32( struct ggml_context * ctx, struct ggml_tensor * a, const ggml_unary_op_f32_t fun, @@ -7435,19 +7552,13 @@ struct ggml_tensor * ggml_map_unary_impl_f32( is_node = true; } - struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t)); - *((void (**)(void))addr_tensor->data) = (void (*)(void))fun; - - ggml_scratch_load(ctx); + ggml_set_op_params(result, (const void *) &fun, sizeof(fun)); result->op = GGML_OP_MAP_UNARY; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->opt[0] = addr_tensor; + result->src[0] = a; return result; } @@ -7468,7 +7579,7 @@ struct ggml_tensor * ggml_map_unary_inplace_f32( // ggml_map_binary -struct ggml_tensor * ggml_map_binary_impl_f32( +static struct ggml_tensor * ggml_map_binary_impl_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -7482,20 +7593,14 @@ struct ggml_tensor * ggml_map_binary_impl_f32( is_node = true; } - struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); - - struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t)); - *((void (**)(void))addr_tensor->data) = (void (*)(void))fun; - - ggml_scratch_load(ctx); + ggml_set_op_params(result, (const void *) &fun, sizeof(fun)); result->op = GGML_OP_MAP_BINARY; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = addr_tensor; + result->src[0] = a; + result->src[1] = b; return result; } @@ -7516,9 +7621,9 @@ struct ggml_tensor * ggml_map_binary_inplace_f32( return ggml_map_binary_impl_f32(ctx, a, b, fun, true); } -// ggml_map_custom1 +// ggml_map_custom1_f32 -struct ggml_tensor * ggml_map_custom1_impl_f32( +static struct ggml_tensor * ggml_map_custom1_impl_f32( struct ggml_context * ctx, struct ggml_tensor * a, const ggml_custom1_op_f32_t fun, @@ -7529,19 +7634,13 @@ struct ggml_tensor * ggml_map_custom1_impl_f32( is_node = true; } - struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); + ggml_set_op_params(result, (const void *) &fun, sizeof(fun)); - struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t)); - *((void (**)(void))addr_tensor->data) = (void (*)(void))fun; - - ggml_scratch_load(ctx); - - result->op = GGML_OP_MAP_CUSTOM1; + result->op = GGML_OP_MAP_CUSTOM1_F32; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->opt[0] = addr_tensor; + result->src[0] = a; return result; } @@ -7560,9 +7659,9 @@ struct ggml_tensor * ggml_map_custom1_inplace_f32( return ggml_map_custom1_impl_f32(ctx, a, fun, true); } -// ggml_map_custom2 +// ggml_map_custom2_f32 -struct ggml_tensor * ggml_map_custom2_impl_f32( +static struct ggml_tensor * ggml_map_custom2_impl_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -7574,20 +7673,14 @@ struct ggml_tensor * ggml_map_custom2_impl_f32( is_node = true; } - struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); + ggml_set_op_params(result, (const void *) &fun, sizeof(fun)); - struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t)); - *((void (**)(void))addr_tensor->data) = (void (*)(void))fun; - - ggml_scratch_load(ctx); - - result->op = GGML_OP_MAP_CUSTOM2; + result->op = GGML_OP_MAP_CUSTOM2_F32; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = addr_tensor; + result->src[0] = a; + result->src[1] = b; return result; } @@ -7608,9 +7701,9 @@ struct ggml_tensor * ggml_map_custom2_inplace_f32( return ggml_map_custom2_impl_f32(ctx, a, b, fun, true); } -// ggml_map_custom3 +// ggml_map_custom3_f32 -struct ggml_tensor * ggml_map_custom3_impl_f32( +static struct ggml_tensor * ggml_map_custom3_impl_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, @@ -7623,21 +7716,15 @@ struct ggml_tensor * ggml_map_custom3_impl_f32( is_node = true; } - struct ggml_tensor *result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); - ggml_scratch_save(ctx); + ggml_set_op_params(result, (const void *) &fun, sizeof(fun)); - struct ggml_tensor * addr_tensor = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(void *) / sizeof(int32_t)); - *((void (**)(void))addr_tensor->data) = (void (*)(void))fun; - - ggml_scratch_load(ctx); - - result->op = GGML_OP_MAP_CUSTOM3; + result->op = GGML_OP_MAP_CUSTOM3_F32; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = addr_tensor; - result->opt[1] = c; + result->src[0] = a; + result->src[1] = b; + result->src[2] = c; return result; } @@ -7660,6 +7747,190 @@ struct ggml_tensor * ggml_map_custom3_inplace_f32( return ggml_map_custom3_impl_f32(ctx, a, b, c, fun, true); } +// ggml_map_custom1 +struct ggml_map_custom1_op_params { + ggml_custom1_op_t fun; + int n_tasks; + void * userdata; +}; + +static struct ggml_tensor * ggml_map_custom1_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + const ggml_custom1_op_t fun, + int n_tasks, + void * userdata, + bool inplace) { + GGML_ASSERT(n_tasks == GGML_N_TASKS_MAX || n_tasks > 0); + + bool is_node = false; + + if (!inplace && a->grad) { + is_node = true; + } + + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + + struct ggml_map_custom1_op_params params = { + /*.fun =*/ fun, + /*.n_tasks =*/ n_tasks, + /*.userdata =*/ userdata + }; + ggml_set_op_params(result, (const void *) ¶ms, sizeof(params)); + + result->op = GGML_OP_MAP_CUSTOM1; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + + return result; +} + +struct ggml_tensor * ggml_map_custom1( + struct ggml_context * ctx, + struct ggml_tensor * a, + const ggml_custom1_op_t fun, + int n_tasks, + void * userdata) { + return ggml_map_custom1_impl(ctx, a, fun, n_tasks, userdata, false); +} + +struct ggml_tensor * ggml_map_custom1_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + const ggml_custom1_op_t fun, + int n_tasks, + void * userdata) { + return ggml_map_custom1_impl(ctx, a, fun, n_tasks, userdata, true); +} + +// ggml_map_custom2 + +struct ggml_map_custom2_op_params { + ggml_custom2_op_t fun; + int n_tasks; + void * userdata; +}; + +static struct ggml_tensor * ggml_map_custom2_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + const ggml_custom2_op_t fun, + int n_tasks, + void * userdata, + bool inplace) { + GGML_ASSERT(n_tasks == GGML_N_TASKS_MAX || n_tasks > 0); + + bool is_node = false; + + if (!inplace && (a->grad || b->grad)) { + is_node = true; + } + + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + + struct ggml_map_custom2_op_params params = { + /*.fun =*/ fun, + /*.n_tasks =*/ n_tasks, + /*.userdata =*/ userdata + }; + ggml_set_op_params(result, (const void *) ¶ms, sizeof(params)); + + result->op = GGML_OP_MAP_CUSTOM2; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = b; + + return result; +} + +struct ggml_tensor * ggml_map_custom2( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + const ggml_custom2_op_t fun, + int n_tasks, + void * userdata) { + return ggml_map_custom2_impl(ctx, a, b, fun, n_tasks, userdata, false); +} + +struct ggml_tensor * ggml_map_custom2_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + const ggml_custom2_op_t fun, + int n_tasks, + void * userdata) { + return ggml_map_custom2_impl(ctx, a, b, fun, n_tasks, userdata, true); +} + +// ggml_map_custom3 + +struct ggml_map_custom3_op_params { + ggml_custom3_op_t fun; + int n_tasks; + void * userdata; +}; + +static struct ggml_tensor * ggml_map_custom3_impl( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + struct ggml_tensor * c, + const ggml_custom3_op_t fun, + int n_tasks, + void * userdata, + bool inplace) { + GGML_ASSERT(n_tasks == GGML_N_TASKS_MAX || n_tasks > 0); + + bool is_node = false; + + if (!inplace && (a->grad || b->grad || c->grad)) { + is_node = true; + } + + struct ggml_tensor * result = inplace ? ggml_view_tensor(ctx, a) : ggml_dup_tensor(ctx, a); + + struct ggml_map_custom3_op_params params = { + /*.fun =*/ fun, + /*.n_tasks =*/ n_tasks, + /*.userdata =*/ userdata + }; + ggml_set_op_params(result, (const void *) ¶ms, sizeof(params)); + + result->op = GGML_OP_MAP_CUSTOM3; + result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; + result->src[0] = a; + result->src[1] = b; + result->src[2] = c; + + return result; +} + +struct ggml_tensor * ggml_map_custom3( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + struct ggml_tensor * c, + const ggml_custom3_op_t fun, + int n_tasks, + void * userdata) { + return ggml_map_custom3_impl(ctx, a, b, c, fun, n_tasks, userdata, false); +} + +struct ggml_tensor * ggml_map_custom3_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + struct ggml_tensor * c, + const ggml_custom3_op_t fun, + int n_tasks, + void * userdata) { + return ggml_map_custom3_impl(ctx, a, b, c, fun, n_tasks, userdata, true); +} + + + // ggml_cross_entropy_loss struct ggml_tensor * ggml_cross_entropy_loss( @@ -7677,8 +7948,8 @@ struct ggml_tensor * ggml_cross_entropy_loss( result->op = GGML_OP_CROSS_ENTROPY_LOSS; result->grad = is_node ? ggml_dup_tensor(ctx, result) : NULL; - result->src0 = a; - result->src1 = b; + result->src[0] = a; + result->src[1] = b; return result; } @@ -7697,9 +7968,9 @@ struct ggml_tensor * ggml_cross_entropy_loss_back( result->op = GGML_OP_CROSS_ENTROPY_LOSS_BACK; result->grad = NULL; - result->src0 = a; - result->src1 = b; - result->opt[0] = c; + result->src[0] = a; + result->src[1] = b; + result->src[2] = c; return result; } @@ -7745,7 +8016,7 @@ static void ggml_compute_forward_dup_same_cont( memcpy( ((char *) dst->data + ie0*nb0), ((char *) src0->data + ie0*nb00), - (ie1 - ie0) * GGML_TYPE_SIZE[src0->type]); + (ie1 - ie0) * ggml_type_size(src0->type)); } } @@ -7779,7 +8050,7 @@ static void ggml_compute_forward_dup_f16( if (src0->type == dst->type && ne00 == ne0 && - nb00 == GGML_TYPE_SIZE[src0->type] && nb0 == GGML_TYPE_SIZE[dst->type]) { + nb00 == ggml_type_size(src0->type) && nb0 == ggml_type_size(dst->type)) { // copy by rows const size_t rs = ne00*nb00; for (int64_t i03 = 0; i03 < ne03; i03++) { @@ -7832,12 +8103,12 @@ static void ggml_compute_forward_dup_f16( id += ne00 * (ne01 - ir1); } } - } else if (ggml_is_quantized(dst->type)) { - quantize_row_q_t const quantize_row_q = quantize_fns[dst->type].quantize_row_q; + } else if (type_traits[dst->type].from_float) { + ggml_from_float_t const quantize_row_q = type_traits[dst->type].from_float; float * src0_f32 = (float *) params->wdata + (ne00 + CACHE_LINE_SIZE_F32) * ith; size_t id = 0; - size_t rs = nb0 * (ne00 / GGML_BLCK_SIZE[dst->type]); + size_t rs = nb0 * (ne00 / ggml_blck_size(dst->type)); char * dst_ptr = (char *) dst->data; for (int i03 = 0; i03 < ne03; i03++) { @@ -8050,7 +8321,7 @@ static void ggml_compute_forward_dup_f32( if (src0->type == dst->type && ne00 == ne0 && - nb00 == GGML_TYPE_SIZE[src0->type] && nb0 == GGML_TYPE_SIZE[dst->type]) { + nb00 == ggml_type_size(src0->type) && nb0 == ggml_type_size(dst->type)) { // copy by rows const size_t rs = ne00*nb00; for (int64_t i03 = 0; i03 < ne03; i03++) { @@ -8085,29 +8356,11 @@ static void ggml_compute_forward_dup_f32( id += rs * (ne01 - ir1); } } - } else if (dst->type == GGML_TYPE_F16) { - size_t id = 0; - ggml_fp16_t * dst_ptr = (ggml_fp16_t *) dst->data; - - for (int i03 = 0; i03 < ne03; i03++) { - for (int i02 = 0; i02 < ne02; i02++) { - id += ne00 * ir0; - for (int i01 = ir0; i01 < ir1; i01++) { - for (int i00 = 0; i00 < ne00; i00++) { - const float * src0_ptr = (float *) ((char *) src0->data + i00*nb00 + i01*nb01 + i02*nb02 + i03*nb03); - - dst_ptr[id] = GGML_FP32_TO_FP16(*src0_ptr); - id++; - } - } - id += ne00 * (ne01 - ir1); - } - } - } else if (ggml_is_quantized(dst->type)) { - quantize_row_q_t const quantize_row_q = quantize_fns[dst->type].quantize_row_q; + } else if (type_traits[dst->type].from_float) { + ggml_from_float_t const quantize_row_q = type_traits[dst->type].from_float; size_t id = 0; - size_t rs = nb0 * (ne00 / GGML_BLCK_SIZE[dst->type]); + size_t rs = nb0 * (ne00 / ggml_blck_size(dst->type)); char * dst_ptr = (char *) dst->data; for (int i03 = 0; i03 < ne03; i03++) { @@ -8318,7 +8571,7 @@ static void ggml_compute_forward_add_f32( const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst) { - GGML_ASSERT(ggml_are_same_shape(src0, src1) && ggml_are_same_shape(src0, dst)); + GGML_ASSERT(ggml_can_repeat_rows(src1, src0) && ggml_are_same_shape(src0, dst)); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; @@ -8343,23 +8596,23 @@ static void ggml_compute_forward_add_f32( if (nb10 == sizeof(float)) { for (int ir = ir0; ir < ir1; ++ir) { - // src0, src1 and dst are same shape => same indices - const int i3 = ir/(ne2*ne1); - const int i2 = (ir - i3*ne2*ne1)/ne1; - const int i1 = (ir - i3*ne2*ne1 - i2*ne1); + // src1 is broadcastable across src0 and dst in i1, i2, i3 + const int64_t i03 = ir/(ne02*ne01); + const int64_t i02 = (ir - i03*ne02*ne01)/ne01; + const int64_t i01 = (ir - i03*ne02*ne01 - i02*ne01); + const int64_t i13 = i03 % ne13; + const int64_t i12 = i02 % ne12; + const int64_t i11 = i01 % ne11; + + float * dst_ptr = (float *) ((char *) dst->data + i03*nb3 + i02*nb2 + i01*nb1 ); + float * src0_ptr = (float *) ((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01); + float * src1_ptr = (float *) ((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11); #ifdef GGML_USE_ACCELERATE - vDSP_vadd( - (float *) ((char *) src0->data + i3*nb03 + i2*nb02 + i1*nb01), 1, - (float *) ((char *) src1->data + i3*nb13 + i2*nb12 + i1*nb11), 1, - (float *) ((char *) dst->data + i3*nb3 + i2*nb2 + i1*nb1 ), 1, - ne0); + vDSP_vadd(src0_ptr, 1, src1_ptr, 1, dst_ptr, 1, ne00); #else - ggml_vec_add_f32(ne0, - (float *) ((char *) dst->data + i3*nb3 + i2*nb2 + i1*nb1 ), - (float *) ((char *) src0->data + i3*nb03 + i2*nb02 + i1*nb01), - (float *) ((char *) src1->data + i3*nb13 + i2*nb12 + i1*nb11)); + ggml_vec_add_f32(ne00, dst_ptr, src0_ptr, src1_ptr); #endif // } // } @@ -8367,15 +8620,20 @@ static void ggml_compute_forward_add_f32( } else { // src1 is not contiguous for (int ir = ir0; ir < ir1; ++ir) { - // src0, src1 and dst are same shape => same indices - const int i3 = ir/(ne2*ne1); - const int i2 = (ir - i3*ne2*ne1)/ne1; - const int i1 = (ir - i3*ne2*ne1 - i2*ne1); + // src1 is broadcastable across src0 and dst in i1, i2, i3 + const int64_t i03 = ir/(ne02*ne01); + const int64_t i02 = (ir - i03*ne02*ne01)/ne01; + const int64_t i01 = (ir - i03*ne02*ne01 - i02*ne01); + + const int64_t i13 = i03 % ne13; + const int64_t i12 = i02 % ne12; + const int64_t i11 = i01 % ne11; + + float * dst_ptr = (float *) ((char *) dst->data + i03*nb3 + i02*nb2 + i01*nb1 ); + float * src0_ptr = (float *) ((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01); - float * dst_ptr = (float *) ((char *) dst->data + i3*nb3 + i2*nb2 + i1*nb1 ); - float * src0_ptr = (float *) ((char *) src0->data + i3*nb03 + i2*nb02 + i1*nb01); for (int i0 = 0; i0 < ne0; i0++) { - float * src1_ptr = (float *) ((char *) src1->data + i3*nb13 + i2*nb12 + i1*nb11 + i0*nb10); + float * src1_ptr = (float *) ((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11 + i0*nb10); dst_ptr[i0] = src0_ptr[i0] + *src1_ptr; } @@ -8510,11 +8768,11 @@ static void ggml_compute_forward_add_q_f32( const int nth = params->nth; const enum ggml_type type = src0->type; - dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q; - quantize_row_q_t const quantize_row_q = quantize_fns[type].quantize_row_q; + ggml_to_float_t const dequantize_row_q = type_traits[type].to_float; + ggml_from_float_t const quantize_row_q = type_traits[type].from_float; // we don't support permuted src0 or src1 - GGML_ASSERT(nb00 == GGML_TYPE_SIZE[type]); + GGML_ASSERT(nb00 == ggml_type_size(type)); GGML_ASSERT(nb10 == sizeof(float)); // dst cannot be transposed or permuted @@ -8784,11 +9042,11 @@ static void ggml_compute_forward_add1_q_f32( GGML_TENSOR_UNARY_OP_LOCALS; const enum ggml_type type = src0->type; - dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q; - quantize_row_q_t const quantize_row_q = quantize_fns[type].quantize_row_q; + ggml_to_float_t const dequantize_row_q = type_traits[type].to_float; + ggml_from_float_t const quantize_row_q = type_traits[type].from_float; // we don't support permuted src0 - GGML_ASSERT(nb00 == GGML_TYPE_SIZE[type]); + GGML_ASSERT(nb00 == ggml_type_size(type)); // dst cannot be transposed or permuted GGML_ASSERT(nb0 <= nb1); @@ -8878,21 +9136,17 @@ static void ggml_compute_forward_acc_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { GGML_ASSERT(ggml_are_same_shape(src0, dst)); GGML_ASSERT(ggml_is_contiguous(dst) && ggml_is_contiguous(src0)); - GGML_ASSERT(opt0->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(opt0) == 5); - // view src0 and dst with these strides and data offset inbytes during acc // nb0 is implicitely element_size because src0 and dst are contiguous - size_t nb1 = ((int32_t *) opt0->data)[0]; - size_t nb2 = ((int32_t *) opt0->data)[1]; - size_t nb3 = ((int32_t *) opt0->data)[2]; - size_t offset = ((int32_t *) opt0->data)[3]; - bool inplace = (bool) ((int32_t *) opt0->data)[4]; + size_t nb1 = ((int32_t *) dst->op_params)[0]; + size_t nb2 = ((int32_t *) dst->op_params)[1]; + size_t nb3 = ((int32_t *) dst->op_params)[2]; + size_t offset = ((int32_t *) dst->op_params)[3]; + bool inplace = (bool) ((int32_t *) dst->op_params)[4]; if (!inplace && (params->type == GGML_TASK_INIT)) { // memcpy needs to be synchronized across threads to avoid race conditions. @@ -8961,13 +9215,12 @@ static void ggml_compute_forward_acc( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_acc_f32(params, src0, src1, opt0, dst); + ggml_compute_forward_acc_f32(params, src0, src1, dst); } break; case GGML_TYPE_F16: case GGML_TYPE_Q4_0: @@ -9155,6 +9408,8 @@ static void ggml_compute_forward_mul( const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst) { + GGML_ASSERT(src1->type == GGML_TYPE_F32 && "only f32 src1 supported for now"); + switch (src0->type) { case GGML_TYPE_F32: { @@ -9399,7 +9654,7 @@ static void ggml_compute_forward_sum_f32( for (int64_t i03 = 0; i03 < ne03; i03++) { for (int64_t i02 = 0; i02 < ne02; i02++) { for (int64_t i01 = 0; i01 < ne01; i01++) { - ggml_vec_sum_ggf(ne00, + ggml_vec_sum_f32_ggf(ne00, &row_sum, (float *) ((char *) src0->data + i01*nb01 + i02*nb02 + i03*nb03)); sum += row_sum; @@ -9409,6 +9664,38 @@ static void ggml_compute_forward_sum_f32( ((float *) dst->data)[0] = sum; } +static void ggml_compute_forward_sum_f16( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + assert(params->ith == 0); + assert(ggml_is_scalar(dst)); + + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + assert(src0->nb[0] == sizeof(ggml_fp16_t)); + + GGML_TENSOR_LOCALS(int64_t, ne0, src0, ne); + GGML_TENSOR_LOCALS(size_t, nb0, src0, nb); + + float sum = 0; + float row_sum = 0; + + for (int64_t i03 = 0; i03 < ne03; i03++) { + for (int64_t i02 = 0; i02 < ne02; i02++) { + for (int64_t i01 = 0; i01 < ne01; i01++) { + ggml_vec_sum_f16_ggf(ne00, + &row_sum, + (ggml_fp16_t *) ((char *) src0->data + i01 * nb01 + i02 * nb02 + i03 * nb03)); + sum += row_sum; + } + } + } + ((ggml_fp16_t *) dst->data)[0] = GGML_FP32_TO_FP16(sum); +} + static void ggml_compute_forward_sum( const struct ggml_compute_params * params, const struct ggml_tensor * src0, @@ -9418,6 +9705,10 @@ static void ggml_compute_forward_sum( { ggml_compute_forward_sum_f32(params, src0, dst); } break; + case GGML_TYPE_F16: + { + ggml_compute_forward_sum_f16(params, src0, dst); + } break; default: { GGML_ASSERT(false); @@ -9450,8 +9741,8 @@ static void ggml_compute_forward_sum_rows_f32( for (int64_t i3 = 0; i3 < ne03; i3++) { for (int64_t i2 = 0; i2 < ne02; i2++) { for (int64_t i1 = 0; i1 < ne01; i1++) { - float* src_row = (float *) ((char *) src0->data + i1*nb01 + i2*nb02 + i3*nb03); - float* dst_row = (float *) ((char *) dst->data + i1*nb1 + i2*nb2 + i3*nb3); + float * src_row = (float *) ((char *) src0->data + i1*nb01 + i2*nb02 + i3*nb03); + float * dst_row = (float *) ((char *) dst->data + i1*nb1 + i2*nb2 + i3*nb3); float row_sum = 0; ggml_vec_sum_f32(ne00, &row_sum, src_row); dst_row[0] = row_sum; @@ -9713,6 +10004,72 @@ static void ggml_compute_forward_repeat_back( } } +// ggml_compute_forward_concat + +static void ggml_compute_forward_concat_f32( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + const struct ggml_tensor * src1, + struct ggml_tensor * dst) { + + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + GGML_ASSERT(src0->nb[0] == sizeof(float)); + + const int ith = params->ith; + + GGML_TENSOR_BINARY_OP_LOCALS; + + // TODO: support for transposed / permuted tensors + GGML_ASSERT(nb0 == sizeof(float)); + GGML_ASSERT(nb00 == sizeof(float)); + GGML_ASSERT(nb10 == sizeof(float)); + + for (int i3 = 0; i3 < ne3; i3++) { + for (int i2 = ith; i2 < ne2; i2++) { + if (i2 < ne02) { // src0 + for (int i1 = 0; i1 < ne1; i1++) { + for (int i0 = 0; i0 < ne0; i0++) { + const float * x = (float *)((char *) src0->data + i0 * nb00 + i1 * nb01 + i2 * nb02 + i3 * nb03); + + float * y = (float *)((char *)dst->data + i0 * nb0 + i1 * nb1 + i2 * nb2 + i3 * nb3); + *y = *x; + } + } + } // src1 + else { + for (int i1 = 0; i1 < ne1; i1++) { + for (int i0 = 0; i0 < ne0; i0++) { + const float * x = (float *)((char *) src1->data + i0 * nb10 + i1 * nb11 + (i2 - ne02) * nb12 + i3 * nb13); + + float * y = (float *)((char *)dst->data + i0 * nb0 + i1 * nb1 + i2 * nb2 + i3 * nb3); + *y = *x; + } + } + } + } + } +} + +static void ggml_compute_forward_concat( + const struct ggml_compute_params* params, + const struct ggml_tensor* src0, + const struct ggml_tensor* src1, + struct ggml_tensor* dst) { + switch (src0->type) { + case GGML_TYPE_F32: + { + ggml_compute_forward_concat_f32(params, src0, src1, dst); + } break; + default: + { + GGML_ASSERT(false); + } break; + } +} + // ggml_compute_forward_abs static void ggml_compute_forward_abs_f32( @@ -10013,8 +10370,8 @@ static void ggml_compute_forward_gelu_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst) { - GGML_ASSERT(ggml_is_contiguous(src0)); - GGML_ASSERT(ggml_is_contiguous(dst)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst)); GGML_ASSERT(ggml_are_same_shape(src0, dst)); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { @@ -10072,8 +10429,8 @@ static void ggml_compute_forward_gelu_quick_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst) { - GGML_ASSERT(ggml_is_contiguous(src0)); - GGML_ASSERT(ggml_is_contiguous(dst)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst)); GGML_ASSERT(ggml_are_same_shape(src0, dst)); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { @@ -10131,8 +10488,8 @@ static void ggml_compute_forward_silu_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, struct ggml_tensor * dst) { - GGML_ASSERT(ggml_is_contiguous(src0)); - GGML_ASSERT(ggml_is_contiguous(dst)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst)); GGML_ASSERT(ggml_are_same_shape(src0, dst)); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { @@ -10184,7 +10541,6 @@ static void ggml_compute_forward_silu( } } - // ggml_compute_forward_silu_back static void ggml_compute_forward_silu_back_f32( @@ -10192,9 +10548,9 @@ static void ggml_compute_forward_silu_back_f32( const struct ggml_tensor * src0, const struct ggml_tensor * grad, struct ggml_tensor * dst) { - GGML_ASSERT(ggml_is_contiguous(grad)); - GGML_ASSERT(ggml_is_contiguous(src0)); - GGML_ASSERT(ggml_is_contiguous(dst)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(grad)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(src0)); + GGML_ASSERT(ggml_is_contiguous_except_dim_1(dst)); GGML_ASSERT(ggml_are_same_shape(src0, dst)); GGML_ASSERT(ggml_are_same_shape(src0, grad)); @@ -10268,7 +10624,8 @@ static void ggml_compute_forward_norm_f32( GGML_TENSOR_UNARY_OP_LOCALS; - const float eps = 1e-5f; // TODO: make this a parameter + float eps; + memcpy(&eps, dst->op_params, sizeof(float)); // TODO: optimize for (int64_t i03 = 0; i03 < ne03; i03++) { @@ -10317,6 +10674,8 @@ static void ggml_compute_forward_norm( } } +// ggml_compute_forward_group_rms_norm + static void ggml_compute_forward_rms_norm_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, @@ -10334,7 +10693,8 @@ static void ggml_compute_forward_rms_norm_f32( GGML_TENSOR_UNARY_OP_LOCALS; - const float eps = 1e-6f; // TODO: make this a parameter + float eps; + memcpy(&eps, dst->op_params, sizeof(float)); // TODO: optimize for (int64_t i03 = 0; i03 < ne03; i03++) { @@ -10380,7 +10740,6 @@ static void ggml_compute_forward_rms_norm( } } - static void ggml_compute_forward_rms_norm_back_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, @@ -10554,6 +10913,95 @@ static void ggml_compute_forward_rms_norm_back( } } +// ggml_compute_forward_group_norm + +static void ggml_compute_forward_group_norm_f32( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + GGML_ASSERT(ggml_are_same_shape(src0, dst)); + + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + GGML_ASSERT(src0->nb[0] == sizeof(float)); + + const int ith = params->ith; + const int nth = params->nth; + + GGML_TENSOR_UNARY_OP_LOCALS; + + const float eps = 1e-6f; // TODO: make this a parameter + + // TODO: optimize + + int n_channels = src0->ne[2]; + int n_groups = dst->op_params[0]; + int n_channels_per_group = (n_channels + n_groups - 1) / n_groups; + for (int i = ith; i < n_groups; i+=nth) { + int start = i * n_channels_per_group; + int end = start + n_channels_per_group; + if (end > n_channels) { + end = n_channels; + } + int step = end - start; + + for (int64_t i03 = 0; i03 < ne03; i03++) { + ggml_float sum = 0.0; + for (int64_t i02 = start; i02 < end; i02++) { + for (int64_t i01 = 0; i01 < ne01; i01++) { + const float * x = (float *)((char *) src0->data + i01 * nb01 + i02 * nb02 + i03 * nb03); + + for (int64_t i00 = 0; i00 < ne00; i00++) { + sum += (ggml_float)x[i00]; + } + } + } + float mean = sum / (ne00 * ne01 * step); + ggml_float sum2 = 0.0; + + for (int64_t i02 = start; i02 < end; i02++) { + for (int64_t i01 = 0; i01 < ne01; i01++) { + const float * x = (float *)((char *) src0->data + i01 * nb01 + i02 * nb02 + i03 * nb03); + + float * y = (float *)((char *) dst->data + i01 * nb1 + i02 * nb2 + i03 * nb3); + + for (int64_t i00 = 0; i00 < ne00; i00++) { + float v = x[i00] - mean; + y[i00] = v; + sum2 += (ggml_float)(v * v); + } + } + } + float variance = sum2 / (ne00 * ne01 * step); + const float scale = 1.0f / sqrtf(variance + eps); + + for (int64_t i02 = start; i02 < end; i02++) { + for (int64_t i01 = 0; i01 < ne01; i01++) { + float * y = (float *)((char *) dst->data + i01 * nb1 + i02 * nb2 + i03 * nb3); + ggml_vec_scale_f32(ne00, y, scale); + } + } + } + } +} + +static void ggml_compute_forward_group_norm( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + switch (src0->type) { + case GGML_TYPE_F32: + { + ggml_compute_forward_group_norm_f32(params, src0, dst); + } break; + default: + { + GGML_ASSERT(false); + } break; + } +} // ggml_compute_forward_mul_mat @@ -10585,7 +11033,7 @@ static bool ggml_compute_forward_mul_mat_use_blas( } #endif -static void ggml_compute_forward_mul_mat_f32( +static void ggml_compute_forward_mul_mat( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, @@ -10598,328 +11046,21 @@ static void ggml_compute_forward_mul_mat_f32( const int ith = params->ith; const int nth = params->nth; - assert(ne02 == ne12); - assert(ne03 == ne13); - assert(ne2 == ne12); - assert(ne3 == ne13); + const enum ggml_type type = src0->type; - // we don't support permuted src0 or src1 - assert(nb00 == sizeof(float)); - assert(nb10 == sizeof(float)); + const bool src1_cont = ggml_is_contiguous(src1); - // dst cannot be transposed or permuted - assert(nb0 == sizeof(float)); - assert(nb0 <= nb1); - assert(nb1 <= nb2); - assert(nb2 <= nb3); - - assert(ne0 == ne01); - assert(ne1 == ne11); - assert(ne2 == ne02); - assert(ne3 == ne03); - - // nb01 >= nb00 - src0 is not transposed - // compute by src0 rows - -#if defined(GGML_USE_CLBLAST) - if (ggml_cl_can_mul_mat(src0, src1, dst)) { - if (params->ith == 0 && params->type == GGML_TASK_COMPUTE) { - ggml_cl_mul_mat(src0, src1, dst, params->wdata, params->wsize); - } - return; - } -#endif - -#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) - if (ggml_compute_forward_mul_mat_use_blas(src0, src1, dst)) { - if (params->ith != 0) { - return; - } - - if (params->type == GGML_TASK_INIT) { - return; - } - - if (params->type == GGML_TASK_FINALIZE) { - return; - } - - for (int64_t i03 = 0; i03 < ne03; i03++) { - for (int64_t i02 = 0; i02 < ne02; i02++) { - const float * x = (float *) ((char *) src0->data + i02*nb02 + i03*nb03); - const float * y = (float *) ((char *) src1->data + i02*nb12 + i03*nb13); - float * d = (float *) ((char *) dst->data + i02*nb2 + i03*nb3); - - cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans, - ne11, ne01, ne10, - 1.0f, y, ne10, - x, ne00, - 0.0f, d, ne01); - } - } - //printf("CBLAS F32 = %f ms, %d x %d x %d x %d\n", (ggml_perf_time_us() - t0)/1000.0, ne0, ne1, ne2, ne3); - - return; - } -#endif - - if (params->type == GGML_TASK_INIT) { - return; - } - - if (params->type == GGML_TASK_FINALIZE) { - return; - } - - // parallelize by src0 rows using ggml_vec_dot_f32 - - // total rows in src0 - const int nr = ne01*ne02*ne03; - - // rows per thread - const int dr = (nr + nth - 1)/nth; - - // row range for this thread - const int ir0 = dr*ith; - const int ir1 = MIN(ir0 + dr, nr); - - for (int ir = ir0; ir < ir1; ++ir) { - // src0 indices - const int i03 = ir/(ne02*ne01); - const int i02 = (ir - i03*ne02*ne01)/ne01; - const int i01 = (ir - i03*ne02*ne01 - i02*ne01); - - for (int64_t ic = 0; ic < ne11; ++ic) { - // src1 indices - const int i13 = i03; - const int i12 = i02; - const int i11 = ic; - - // dst indices - const int i0 = i01; - const int i1 = i11; - const int i2 = i02; - const int i3 = i03; - - ggml_vec_dot_f32(ne00, - (float *) ((char *) dst->data + (i0*nb0 + i1*nb1 + i2*nb2 + i3*nb3)), - (float *) ((char *) src0->data + (i01*nb01 + i02*nb02 + i03*nb03)), - (float *) ((char *) src1->data + (i11*nb11 + i12*nb12 + i13*nb13))); - } - } - - //int64_t t1 = ggml_perf_time_us(); - //static int64_t acc = 0; - //acc += t1 - t0; - //if (t1 - t0 > 10) { - // printf("\n"); - // printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03); - // printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03); - // printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13); - // printf("nb10 = %5d, nb11 = %5d, nb12 = %5d, nb13 = %5d\n", nb10, nb11, nb12, nb13); - - // printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc); - //} -} - -static void ggml_compute_forward_mul_mat_f16_f32( - const struct ggml_compute_params * params, - const struct ggml_tensor * src0, - const struct ggml_tensor * src1, - struct ggml_tensor * dst) { - int64_t t0 = ggml_perf_time_us(); - UNUSED(t0); - - GGML_TENSOR_BINARY_OP_LOCALS; - - //const int64_t ne = ne0*ne1*ne2*ne3; - - const int ith = params->ith; - const int nth = params->nth; - - GGML_ASSERT(ne02 == ne12); - GGML_ASSERT(ne03 == ne13); - GGML_ASSERT(ne2 == ne12); - GGML_ASSERT(ne3 == ne13); - - // TODO: we don't support permuted src0 - GGML_ASSERT(nb00 == sizeof(ggml_fp16_t)); - - // dst cannot be transposed or permuted - GGML_ASSERT(nb0 == sizeof(float)); - GGML_ASSERT(nb0 <= nb1); - GGML_ASSERT(nb1 <= nb2); - GGML_ASSERT(nb2 <= nb3); + ggml_vec_dot_t const vec_dot = type_traits[type].vec_dot; + enum ggml_type const vec_dot_type = type_traits[type].vec_dot_type; + ggml_from_float_t const from_float_to_vec_dot = type_traits[vec_dot_type].from_float; GGML_ASSERT(ne0 == ne01); GGML_ASSERT(ne1 == ne11); - GGML_ASSERT(ne2 == ne02); - GGML_ASSERT(ne3 == ne03); - - // nb01 >= nb00 - src0 is not transposed - // compute by src0 rows - -#if defined(GGML_USE_CLBLAST) - if (ggml_cl_can_mul_mat(src0, src1, dst)) { - if (params->ith == 0 && params->type == GGML_TASK_COMPUTE) { - ggml_cl_mul_mat(src0, src1, dst, params->wdata, params->wsize); - } - return; - } -#endif - -#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) - if (ggml_compute_forward_mul_mat_use_blas(src0, src1, dst)) { - GGML_ASSERT(nb10 == sizeof(float)); - - if (params->ith != 0) { - return; - } - - if (params->type == GGML_TASK_INIT) { - return; - } - - if (params->type == GGML_TASK_FINALIZE) { - return; - } - - for (int64_t i03 = 0; i03 < ne03; i03++) { - for (int64_t i02 = 0; i02 < ne02; i02++) { - float * const wdata = params->wdata; - { - size_t id = 0; - for (int64_t i01 = 0; i01 < ne01; ++i01) { - for (int64_t i00 = 0; i00 < ne00; ++i00) { - wdata[id++] = GGML_FP16_TO_FP32(*(ggml_fp16_t *) ((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01 + i00*nb00)); - } - } - - assert(id*sizeof(float) <= params->wsize); - } - - const float * x = wdata; - const float * y = (float *) ((char *) src1->data + i02*nb12 + i03*nb13); - - float * d = (float *) ((char *) dst->data + i02*nb2 + i03*nb3); - - // zT = y * xT - cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans, - ne11, ne01, ne10, - 1.0f, y, ne10, - x, ne00, - 0.0f, d, ne01); - } - } - - /*printf("CBLAS F16 = %f ms, %d x %d x %d x %d\n", (ggml_perf_time_us() - t0)/1000.0, ne0, ne1, ne2, ne3);*/ - - return; - } -#endif - - if (params->type == GGML_TASK_INIT) { - ggml_fp16_t * const wdata = params->wdata; - - size_t id = 0; - for (int64_t i13 = 0; i13 < ne13; ++i13) { - for (int64_t i12 = 0; i12 < ne12; ++i12) { - for (int64_t i11 = 0; i11 < ne11; ++i11) { - for (int64_t i10 = 0; i10 < ne10; ++i10) { - wdata[id++] = GGML_FP32_TO_FP16(*(float *)((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11 + i10*nb10)); - } - } - } - } - - GGML_ASSERT(id*sizeof(ggml_fp16_t) <= params->wsize); - - return; - } - - if (params->type == GGML_TASK_FINALIZE) { - return; - } - - // fp16 -> half the size, so divide by 2 - // TODO: do not support transposed src1 - assert(nb10/2 == sizeof(ggml_fp16_t)); - - // parallelize by src0 rows using ggml_vec_dot_f16 - - // total rows in src0 - const int nr = ne01*ne02*ne03; - - // rows per thread - const int dr = (nr + nth - 1)/nth; - - // row range for this thread - const int ir0 = dr*ith; - const int ir1 = MIN(ir0 + dr, nr); - - ggml_fp16_t * wdata = params->wdata; - - for (int ir = ir0; ir < ir1; ++ir) { - // src0 indices - const int i03 = ir/(ne02*ne01); - const int i02 = (ir - i03*ne02*ne01)/ne01; - const int i01 = (ir - i03*ne02*ne01 - i02*ne01); - - const int i13 = i03; - const int i12 = i02; - - const int i0 = i01; - const int i2 = i02; - const int i3 = i03; - - ggml_fp16_t * src0_row = (ggml_fp16_t *) ((char *) src0->data + (i01*nb01 + i02*nb02 + i03*nb03)); - ggml_fp16_t * src1_col = wdata + ( 0 + i12*ne11 + i13*ne12*ne11)*ne00; - - float * dst_col = (float *) ((char *) dst->data + (i0*nb0 + 0*nb1 + i2*nb2 + i3*nb3)); - - for (int64_t ic = 0; ic < ne11; ++ic) { - ggml_vec_dot_f16(ne00, &dst_col[ic*ne0], src0_row, src1_col + ic*ne00); - } - } - - //int64_t t1 = ggml_time_us(); - //static int64_t acc = 0; - //acc += t1 - t0; - //if (t1 - t0 > 10) { - // printf("\n"); - // printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03); - // printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03); - // printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13); - - // printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc); - //} -} - -static void ggml_compute_forward_mul_mat_q_f32( - const struct ggml_compute_params * params, - const struct ggml_tensor * src0, - const struct ggml_tensor * src1, - struct ggml_tensor * dst) { - int64_t t0 = ggml_perf_time_us(); - UNUSED(t0); - - GGML_TENSOR_BINARY_OP_LOCALS; - - const int ith = params->ith; - const int nth = params->nth; - - GGML_ASSERT(ne02 == ne12); - GGML_ASSERT(ne03 == ne13); - GGML_ASSERT(ne2 == ne12); - GGML_ASSERT(ne3 == ne13); - - const enum ggml_type type = src0->type; - quantize_row_q_t const quantize_row_q_dot = quantize_fns[type].quantize_row_q_dot; - vec_dot_q_t const vec_dot_q = quantize_fns[type].vec_dot_q; - enum ggml_type const vec_dot_type = quantize_fns[type].vec_dot_type; + GGML_ASSERT(ne2 == ne12); + GGML_ASSERT(ne3 == ne13); // we don't support permuted src0 or src1 - GGML_ASSERT(nb00 == GGML_TYPE_SIZE[type]); + GGML_ASSERT(nb00 == ggml_type_size(type)); GGML_ASSERT(nb10 == sizeof(float)); // dst cannot be transposed or permuted @@ -10928,16 +11069,20 @@ static void ggml_compute_forward_mul_mat_q_f32( GGML_ASSERT(nb1 <= nb2); GGML_ASSERT(nb2 <= nb3); - GGML_ASSERT(ne0 == ne01); - GGML_ASSERT(ne1 == ne11); - GGML_ASSERT(ne2 == ne02); - GGML_ASSERT(ne3 == ne03); + // broadcast factors + const int64_t r2 = ne12/ne02; + const int64_t r3 = ne13/ne03; // nb01 >= nb00 - src0 is not transposed // compute by src0 rows #if defined(GGML_USE_CLBLAST) if (ggml_cl_can_mul_mat(src0, src1, dst)) { + // TODO: handle case when src0 is broadcast-able into src1 across 2nd,3rd dimension + // ref: https://github.com/ggerganov/ggml/pull/224 + GGML_ASSERT(ne02 == ne12); + GGML_ASSERT(ne03 == ne13); + if (params->ith == 0 && params->type == GGML_TASK_COMPUTE) { ggml_cl_mul_mat(src0, src1, dst, params->wdata, params->wsize); } @@ -10959,27 +11104,31 @@ static void ggml_compute_forward_mul_mat_q_f32( return; } - float * const wdata = params->wdata; - dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q; + for (int64_t i13 = 0; i13 < ne13; i13++) { + for (int64_t i12 = 0; i12 < ne12; i12++) { + // broadcast src0 into src1 across 2nd,3rd dimension + const int64_t i03 = i13/r3; + const int64_t i02 = i12/r2; - for (int64_t i03 = 0; i03 < ne03; i03++) { - for (int64_t i02 = 0; i02 < ne02; i02++) { - const float * y = (float *) ((char *) src1->data + i02*nb12 + i03*nb13); + const void * x = (char *) src0->data + i02*nb02 + i03*nb03; + const float * y = (float *) ((char *) src1->data + i12*nb12 + i13*nb13); - float * d = (float *) ((char *) dst->data + i02*nb2 + i03*nb3); + float * d = (float *) ((char *) dst->data + i12*nb2 + i13*nb3); + + if (type != GGML_TYPE_F32) { + float * const wdata = params->wdata; + ggml_to_float_t const to_float = type_traits[type].to_float; - { size_t id = 0; for (int64_t i01 = 0; i01 < ne01; ++i01) { - dequantize_row_q((char *) src0->data + i03*nb03 + i02*nb02 + i01*nb01, wdata + id, ne00); + to_float((const char *) x + i01*nb01, wdata + id, ne00); id += ne00; } assert(id*sizeof(float) <= params->wsize); + x = wdata; } - const float * x = wdata; - cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans, ne11, ne01, ne10, 1.0f, y, ne10, @@ -10995,14 +11144,16 @@ static void ggml_compute_forward_mul_mat_q_f32( #endif if (params->type == GGML_TASK_INIT) { - char * wdata = params->wdata; - const size_t row_size = ne10*GGML_TYPE_SIZE[vec_dot_type]/GGML_BLCK_SIZE[vec_dot_type]; + if (src1->type != vec_dot_type) { + char * wdata = params->wdata; + const size_t row_size = ne10*ggml_type_size(vec_dot_type)/ggml_blck_size(vec_dot_type); - for (int64_t i13 = 0; i13 < ne13; ++i13) { - for (int64_t i12 = 0; i12 < ne12; ++i12) { - for (int64_t i11 = 0; i11 < ne11; ++i11) { - quantize_row_q_dot((float *)((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11), (void *) wdata, ne10); - wdata += row_size; + for (int64_t i13 = 0; i13 < ne13; ++i13) { + for (int64_t i12 = 0; i12 < ne12; ++i12) { + for (int64_t i11 = 0; i11 < ne11; ++i11) { + from_float_to_vec_dot((float *)((char *) src1->data + i13*nb13 + i12*nb12 + i11*nb11), (void *) wdata, ne10); + wdata += row_size; + } } } } @@ -11014,97 +11165,92 @@ static void ggml_compute_forward_mul_mat_q_f32( return; } - // parallelize by src0 rows using ggml_vec_dot_q + const void * wdata = (src1->type == vec_dot_type) ? src1->data : params->wdata; + const size_t row_size = ne10*ggml_type_size(vec_dot_type)/ggml_blck_size(vec_dot_type); - // total rows in src0 - const int nr = ne01*ne02*ne03; + const int64_t nr0 = ne01; // src0 rows + const int64_t nr1 = ne11*ne12*ne13; // src1 rows - // rows per thread - const int dr = (nr + nth - 1)/nth; + //printf("nr0 = %lld, nr1 = %lld\n", nr0, nr1); - // row range for this thread - const int ir0 = dr*ith; - const int ir1 = MIN(ir0 + dr, nr); + // distribute the thread work across the inner or outer loop based on which one is larger - void * wdata = params->wdata; - const size_t row_size = ne00*GGML_TYPE_SIZE[vec_dot_type]/GGML_BLCK_SIZE[vec_dot_type]; + const int64_t nth0 = nr0 > nr1 ? nth : 1; // parallelize by src0 rows + const int64_t nth1 = nr0 > nr1 ? 1 : nth; // parallelize by src1 rows - for (int ir = ir0; ir < ir1; ++ir) { - // src0 indices - const int i03 = ir/(ne02*ne01); - const int i02 = (ir - i03*ne02*ne01)/ne01; - const int i01 = (ir - i03*ne02*ne01 - i02*ne01); + const int64_t ith0 = ith % nth0; + const int64_t ith1 = ith / nth0; - const int i13 = i03; - const int i12 = i02; + const int64_t dr0 = (nr0 + nth0 - 1)/nth0; + const int64_t dr1 = (nr1 + nth1 - 1)/nth1; - const int i0 = i01; - const int i2 = i02; - const int i3 = i03; + const int64_t ir010 = dr0*ith0; + const int64_t ir011 = MIN(ir010 + dr0, nr0); - void * src0_row = (void *) ((char *) src0->data + (i01*nb01 + i02*nb02 + i03*nb03)); - char * src1_col = ((char *) wdata + ( (0 + i12*ne11 + i13*ne12*ne11)*row_size)); + const int64_t ir110 = dr1*ith1; + const int64_t ir111 = MIN(ir110 + dr1, nr1); - float * dst_col = (float *) ((char *) dst->data + (i0*nb0 + 0*nb1 + i2*nb2 + i3*nb3)); + //printf("ir010 = %6lld, ir011 = %6lld, ir110 = %6lld, ir111 = %6lld\n", ir010, ir011, ir110, ir111); - assert(ne00 % 32 == 0); - - for (int64_t ic = 0; ic < ne11; ++ic) { - vec_dot_q(ne00, &dst_col[ic*ne0], src0_row, (void *) (src1_col + ic*row_size)); - } + // threads with no work simply yield (not sure if it helps) + if (ir010 >= ir011 || ir110 >= ir111) { + sched_yield(); + return; } - //int64_t t1 = ggml_time_us(); - //static int64_t acc = 0; - //acc += t1 - t0; - //if (t1 - t0 > 10) { - // printf("\n"); - // printf("ne00 = %5d, ne01 = %5d, ne02 = %5d, ne03 = %5d\n", ne00, ne01, ne02, ne03); - // printf("nb00 = %5d, nb01 = %5d, nb02 = %5d, nb03 = %5d\n", nb00, nb01, nb02, nb03); - // printf("ne10 = %5d, ne11 = %5d, ne12 = %5d, ne13 = %5d\n", ne10, ne11, ne12, ne13); + assert(ne12 % ne02 == 0); + assert(ne13 % ne03 == 0); - // printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX task %d/%d: %d us, acc = %d\n", ith, nth, (int) (t1 - t0), (int) acc); - //} -} + // block-tiling attempt + const int64_t blck_0 = 16; + const int64_t blck_1 = 16; -static void ggml_compute_forward_mul_mat( - const struct ggml_compute_params * params, - const struct ggml_tensor * src0, - const struct ggml_tensor * src1, - struct ggml_tensor * dst) { - switch (src0->type) { - case GGML_TYPE_Q4_0: - case GGML_TYPE_Q4_1: - case GGML_TYPE_Q5_0: - case GGML_TYPE_Q5_1: - case GGML_TYPE_Q8_0: - case GGML_TYPE_Q8_1: - case GGML_TYPE_Q2_K: - case GGML_TYPE_Q3_K: - case GGML_TYPE_Q4_K: - case GGML_TYPE_Q5_K: - case GGML_TYPE_Q6_K: - { - ggml_compute_forward_mul_mat_q_f32(params, src0, src1, dst); - } break; - case GGML_TYPE_F16: - { - ggml_compute_forward_mul_mat_f16_f32(params, src0, src1, dst); - } break; - case GGML_TYPE_F32: - { - ggml_compute_forward_mul_mat_f32(params, src0, src1, dst); - } break; - default: - { - GGML_ASSERT(false); - } break; + // attempt to reduce false-sharing (does not seem to make a difference) + float tmp[16]; + + for (int64_t iir1 = ir110; iir1 < ir111; iir1 += blck_1) { + for (int64_t iir0 = ir010; iir0 < ir011; iir0 += blck_0) { + for (int64_t ir1 = iir1; ir1 < iir1 + blck_1 && ir1 < ir111; ++ir1) { + const int64_t i13 = (ir1/(ne12*ne11)); + const int64_t i12 = (ir1 - i13*ne12*ne11)/ne11; + const int64_t i11 = (ir1 - i13*ne12*ne11 - i12*ne11); + + // broadcast src0 into src1 + const int64_t i03 = i13/r3; + const int64_t i02 = i12/r2; + + const int64_t i1 = i11; + const int64_t i2 = i12; + const int64_t i3 = i13; + + const char * src0_row = (const char *) src0->data + (0 + i02*nb02 + i03*nb03); + + // desc: when src1 is not a contiguous memory block we have to calculate the offset using the strides + // if it is, then we have either copied the data to params->wdata and made it contiguous or we are using + // the original src1 data pointer, so we should index using the indices directly + // TODO: this is a bit of a hack, we should probably have a better way to handle this + const char * src1_col = (const char *) wdata + + (src1_cont || src1->type != vec_dot_type + ? (i11 + i12*ne11 + i13*ne12*ne11)*row_size + : (i11*nb11 + i12*nb12 + i13*nb13)); + + float * dst_col = (float *) ((char *) dst->data + (i1*nb1 + i2*nb2 + i3*nb3)); + + //for (int64_t ir0 = iir0; ir0 < iir0 + blck_0 && ir0 < ir011; ++ir0) { + // vec_dot(ne00, &dst_col[ir0], src0_row + ir0*nb01, src1_col); + //} + + for (int64_t ir0 = iir0; ir0 < iir0 + blck_0 && ir0 < ir011; ++ir0) { + vec_dot(ne00, &tmp[ir0 - iir0], src0_row + ir0*nb01, src1_col); + } + memcpy(&dst_col[iir0], tmp, (MIN(iir0 + blck_0, ir011) - iir0)*sizeof(float)); + } + } } } // ggml_compute_forward_out_prod - static void ggml_compute_forward_out_prod_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, @@ -11313,21 +11459,17 @@ static void ggml_compute_forward_set_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { GGML_ASSERT(ggml_are_same_shape(src0, dst)); GGML_ASSERT(ggml_is_contiguous(dst) && ggml_is_contiguous(src0)); - GGML_ASSERT(opt0->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(opt0) == 5); - // view src0 and dst with these strides and data offset inbytes during set // nb0 is implicitely element_size because src0 and dst are contiguous - size_t nb1 = ((int32_t *) opt0->data)[0]; - size_t nb2 = ((int32_t *) opt0->data)[1]; - size_t nb3 = ((int32_t *) opt0->data)[2]; - size_t offset = ((int32_t *) opt0->data)[3]; - bool inplace = (bool) ((int32_t *) opt0->data)[4]; + size_t nb1 = ((int32_t *) dst->op_params)[0]; + size_t nb2 = ((int32_t *) dst->op_params)[1]; + size_t nb3 = ((int32_t *) dst->op_params)[2]; + size_t offset = ((int32_t *) dst->op_params)[3]; + bool inplace = (bool) ((int32_t *) dst->op_params)[4]; if (!inplace && (params->type == GGML_TASK_INIT)) { // memcpy needs to be synchronized across threads to avoid race conditions. @@ -11387,13 +11529,12 @@ static void ggml_compute_forward_set( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_set_f32(params, src0, src1, opt0, dst); + ggml_compute_forward_set_f32(params, src0, src1, dst); } break; case GGML_TYPE_F16: case GGML_TYPE_Q4_0: @@ -11490,11 +11631,11 @@ static void ggml_compute_forward_get_rows_q( const int nc = src0->ne[0]; const int nr = ggml_nelements(src1); const enum ggml_type type = src0->type; - dequantize_row_q_t const dequantize_row_q = quantize_fns[type].dequantize_row_q; + ggml_to_float_t const dequantize_row_q = type_traits[type].to_float; assert( dst->ne[0] == nc); assert( dst->ne[1] == nr); - assert(src0->nb[0] == GGML_TYPE_SIZE[type]); + assert(src0->nb[0] == ggml_type_size(type)); for (int i = 0; i < nr; ++i) { const int r = ((int32_t *) src1->data)[i]; @@ -11789,17 +11930,14 @@ static void ggml_compute_forward_diag( static void ggml_compute_forward_diag_mask_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst, const float value) { - GGML_ASSERT(src1->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(src1) == 2); const int ith = params->ith; const int nth = params->nth; - const int n_past = ((int32_t *) src1->data)[0]; - const bool inplace = (bool)((int32_t *) src1->data)[1]; + const int n_past = ((int32_t *) dst->op_params)[0]; + const bool inplace = (bool)((int32_t *) dst->op_params)[1]; GGML_ASSERT(n_past >= 0); @@ -11842,12 +11980,11 @@ static void ggml_compute_forward_diag_mask_f32( static void ggml_compute_forward_diag_mask_inf( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_diag_mask_f32(params, src0, src1, dst, -INFINITY); + ggml_compute_forward_diag_mask_f32(params, src0, dst, -INFINITY); } break; default: { @@ -11859,12 +11996,11 @@ static void ggml_compute_forward_diag_mask_inf( static void ggml_compute_forward_diag_mask_zero( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_diag_mask_f32(params, src0, src1, dst, 0); + ggml_compute_forward_diag_mask_f32(params, src0, dst, 0); } break; default: { @@ -12062,26 +12198,23 @@ static void ggml_compute_forward_soft_max_back( static void ggml_compute_forward_alibi_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { assert(params->ith == 0); - GGML_ASSERT(src1->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(src1) == 3); - if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; } - const int n_past = ((int32_t *) src1->data)[0]; - const int n_head = ((int32_t *) src1->data)[1]; - const float max_bias = ((float *) src1->data)[2]; + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_head = ((int32_t *) dst->op_params)[1]; + float max_bias; + memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float)); assert(n_past >= 0); const int ne0 = src0->ne[0]; // all_seq_len = n_past + ne1 const int ne1 = src0->ne[1]; // seq_len_without_past - //const int ne2 = src0->ne[2]; // n_head -> this is k + const int ne2 = src0->ne[2]; // n_head -> this is k //const int ne3 = src0->ne[3]; // 1 -> bsz const int n = ggml_nrows(src0); @@ -12092,8 +12225,9 @@ static void ggml_compute_forward_alibi_f32( const int nb2 = src0->nb[2]; //const int nb3 = src0->nb[3]; - assert(nb0 == sizeof(float)); - assert(ne1 + n_past == ne0); (void) n_past; + GGML_ASSERT(nb0 == sizeof(float)); + GGML_ASSERT(ne1 + n_past == ne0); + GGML_ASSERT(n_head == ne2); // add alibi to src0 (KQ_scaled) const int n_heads_log2_floor = 1 << (int) floor(log2(n_head)); @@ -12117,7 +12251,7 @@ static void ggml_compute_forward_alibi_f32( m_k = powf(m1, 2 * (k - n_heads_log2_floor) + 1); } - pdst[0] = (i-ne0+1) * m_k + src[0]; + pdst[0] = i * m_k + src[0]; } } @@ -12127,26 +12261,23 @@ static void ggml_compute_forward_alibi_f32( static void ggml_compute_forward_alibi_f16( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { assert(params->ith == 0); - GGML_ASSERT(src1->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(src1) == 3); - if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; } - const int n_past = ((int32_t *) src1->data)[0]; - const int n_head = ((int32_t *) src1->data)[1]; - const float max_bias = ((float *) src1->data)[2]; + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_head = ((int32_t *) dst->op_params)[1]; + float max_bias; + memcpy(&max_bias, (int32_t *) dst->op_params + 2, sizeof(float)); assert(n_past >= 0); const int ne0 = src0->ne[0]; // all_seq_len = n_past + ne1 const int ne1 = src0->ne[1]; // seq_len_without_past - //const int ne2 = src0->ne[2]; // n_head -> this is k + const int ne2 = src0->ne[2]; // n_head -> this is k //const int ne3 = src0->ne[3]; // 1 -> bsz const int n = ggml_nrows(src0); @@ -12157,8 +12288,9 @@ static void ggml_compute_forward_alibi_f16( const int nb2 = src0->nb[2]; //const int nb3 = src0->nb[3]; - assert(nb0 == sizeof(ggml_fp16_t)); - assert(ne1 + n_past == ne0); (void) n_past; + GGML_ASSERT(nb0 == sizeof(ggml_fp16_t)); + GGML_ASSERT(ne1 + n_past == ne0); (void) n_past; + GGML_ASSERT(n_head == ne2); // add alibi to src0 (KQ_scaled) const int n_heads_log2_floor = 1 << (int) floor(log2(n_head)); @@ -12183,7 +12315,7 @@ static void ggml_compute_forward_alibi_f16( } // we return F32 - pdst[0] = (i-ne0+1) * m_k + GGML_FP16_TO_FP32(src[0]); + pdst[0] = i * m_k + GGML_FP16_TO_FP32(src[0]); } } } @@ -12192,16 +12324,15 @@ static void ggml_compute_forward_alibi_f16( static void ggml_compute_forward_alibi( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F16: { - ggml_compute_forward_alibi_f16(params, src0, src1, dst); + ggml_compute_forward_alibi_f16(params, src0, dst); } break; case GGML_TYPE_F32: { - ggml_compute_forward_alibi_f32(params, src0, src1, dst); + ggml_compute_forward_alibi_f32(params, src0, dst); } break; case GGML_TYPE_Q4_0: case GGML_TYPE_Q4_1: @@ -12225,25 +12356,22 @@ static void ggml_compute_forward_alibi( } } - // ggml_compute_forward_clamp static void ggml_compute_forward_clamp_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { assert(params->ith == 0); - GGML_ASSERT(src1->type == GGML_TYPE_F32); - GGML_ASSERT(ggml_nelements(src1) == 2); - if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; } - const float min = ((float *) src1->data)[0]; - const float max = ((float *) src1->data)[1]; + float min; + float max; + memcpy(&min, (float *) dst->op_params + 0, sizeof(float)); + memcpy(&max, (float *) dst->op_params + 1, sizeof(float)); const int ith = params->ith; const int nth = params->nth; @@ -12273,12 +12401,11 @@ static void ggml_compute_forward_clamp_f32( static void ggml_compute_forward_clamp( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_clamp_f32(params, src0, src1, dst); + ggml_compute_forward_clamp_f32(params, src0, dst); } break; case GGML_TYPE_F16: case GGML_TYPE_Q4_0: @@ -12308,19 +12435,27 @@ static void ggml_compute_forward_clamp( static void ggml_compute_forward_rope_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { - GGML_ASSERT(src1->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(src1) == 4); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; } - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; - const int n_ctx = ((int32_t *) src1->data)[3]; + float freq_base; + float freq_scale; + + // these two only relevant for xPos RoPE: + float xpos_base; + bool xpos_down; + + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_dims = ((int32_t *) dst->op_params)[1]; + const int mode = ((int32_t *) dst->op_params)[2]; + const int n_ctx = ((int32_t *) dst->op_params)[3]; + memcpy(&freq_base, (int32_t *) dst->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float)); + memcpy(&xpos_base, (int32_t *) dst->op_params + 6, sizeof(float)); + memcpy(&xpos_down, (int32_t *) dst->op_params + 7, sizeof(bool)); assert(n_past >= 0); @@ -12349,7 +12484,7 @@ static void ggml_compute_forward_rope_f32( // row index used to determine which thread to use int ir = 0; - const float theta_scale = powf(10000.0, -2.0f/n_dims); + const float theta_scale = powf(freq_base, -2.0f/n_dims); const bool is_neox = mode & 2; const bool is_glm = mode & 4; @@ -12361,7 +12496,7 @@ static void ggml_compute_forward_rope_f32( if (ir++ < ir0) continue; if (ir > ir1) break; - float theta = (float)p; + float theta = freq_scale * (float)p; if (is_glm) { theta = MIN(p, n_ctx - 2); @@ -12392,6 +12527,9 @@ static void ggml_compute_forward_rope_f32( for (int64_t i0 = 0; i0 < ne0; i0 += 2) { const float cos_theta = cosf(theta); const float sin_theta = sinf(theta); + // zeta scaling for xPos only: + float zeta = xpos_base != 0.0f ? powf((i0 + 0.4f * ne0) / (1.4f * ne0), (n_past + i2) / xpos_base) : 1.0f; + if (xpos_down) zeta = 1.0f / zeta; theta *= theta_scale; @@ -12401,11 +12539,11 @@ static void ggml_compute_forward_rope_f32( const float x0 = src[0]; const float x1 = src[1]; - dst_data[0] = x0*cos_theta - x1*sin_theta; - dst_data[1] = x0*sin_theta + x1*cos_theta; + dst_data[0] = x0*cos_theta*zeta - x1*sin_theta*zeta; + dst_data[1] = x0*sin_theta*zeta + x1*cos_theta*zeta; } } else { - // TODO: this is probably wrong, but I can't figure it out .. + // TODO: this might be wrong for ne0 != n_dims - need double check // ref: https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt_neox/modeling_gpt_neox.py#LL251C1-L294C28 for (int64_t ib = 0; ib < ne0/n_dims; ++ib) { for (int64_t ic = 0; ic < n_dims; ic += 2) { @@ -12435,19 +12573,21 @@ static void ggml_compute_forward_rope_f32( static void ggml_compute_forward_rope_f16( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { - GGML_ASSERT(src1->type == GGML_TYPE_I32); - GGML_ASSERT(ggml_nelements(src1) == 4); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; } - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; - const int n_ctx = ((int32_t *) src1->data)[3]; + float freq_base; + float freq_scale; + + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_dims = ((int32_t *) dst->op_params)[1]; + const int mode = ((int32_t *) dst->op_params)[2]; + const int n_ctx = ((int32_t *) dst->op_params)[3]; + memcpy(&freq_base, (int32_t *) dst->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float)); assert(n_past >= 0); @@ -12476,7 +12616,7 @@ static void ggml_compute_forward_rope_f16( // row index used to determine which thread to use int ir = 0; - const float theta_scale = powf(10000.0, -2.0f/n_dims); + const float theta_scale = powf(freq_base, -2.0f/n_dims); const bool is_neox = mode & 2; const bool is_glm = mode & 4; @@ -12488,7 +12628,7 @@ static void ggml_compute_forward_rope_f16( if (ir++ < ir0) continue; if (ir > ir1) break; - float theta = (float)p; + float theta = freq_scale * (float)p; if (is_glm) { theta = MIN(p, n_ctx - 2); @@ -12532,7 +12672,7 @@ static void ggml_compute_forward_rope_f16( dst_data[1] = GGML_FP32_TO_FP16(x0*sin_theta + x1*cos_theta); } } else { - // TODO: this is probably wrong, but I can't figure it out .. + // TODO: this might be wrong for ne0 != n_dims - need double check // ref: https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt_neox/modeling_gpt_neox.py#LL251C1-L294C28 for (int64_t ib = 0; ib < ne0/n_dims; ++ib) { for (int64_t ic = 0; ic < n_dims; ic += 2) { @@ -12549,7 +12689,7 @@ static void ggml_compute_forward_rope_f16( const float x0 = GGML_FP16_TO_FP32(src[0]); const float x1 = GGML_FP16_TO_FP32(src[n_dims/2]); - dst_data[0] = GGML_FP32_TO_FP16(x0*cos_theta - x1*sin_theta); + dst_data[0] = GGML_FP32_TO_FP16(x0*cos_theta - x1*sin_theta); dst_data[n_dims/2] = GGML_FP32_TO_FP16(x0*sin_theta + x1*cos_theta); } } @@ -12562,16 +12702,15 @@ static void ggml_compute_forward_rope_f16( static void ggml_compute_forward_rope( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F16: { - ggml_compute_forward_rope_f16(params, src0, src1, dst); + ggml_compute_forward_rope_f16(params, src0, dst); } break; case GGML_TYPE_F32: { - ggml_compute_forward_rope_f32(params, src0, src1, dst); + ggml_compute_forward_rope_f32(params, src0, dst); } break; default: { @@ -12585,10 +12724,7 @@ static void ggml_compute_forward_rope( static void ggml_compute_forward_rope_back_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { - assert(src1->type == GGML_TYPE_I32); - assert(ggml_nelements(src1) == 3); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; @@ -12598,9 +12734,21 @@ static void ggml_compute_forward_rope_back_f32( // dx = rope_back(dy, src1) // src0 is dy, src1 contains options - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; + float freq_base; + float freq_scale; + + // these two only relevant for xPos RoPE: + float xpos_base; + bool xpos_down; + + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_dims = ((int32_t *) dst->op_params)[1]; + const int mode = ((int32_t *) dst->op_params)[2]; + const int n_ctx = ((int32_t *) dst->op_params)[3]; UNUSED(n_ctx); + memcpy(&freq_base, (int32_t *) dst->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) dst->op_params + 5, sizeof(float)); + memcpy(&xpos_base, (int32_t *) dst->op_params + 6, sizeof(float)); + memcpy(&xpos_down, (int32_t *) dst->op_params + 7, sizeof(bool)); assert(n_past >= 0); @@ -12626,7 +12774,7 @@ static void ggml_compute_forward_rope_back_f32( // row index used to determine which thread to use int ir = 0; - const float theta_scale = powf(10000.0, -2.0f/n_dims); + const float theta_scale = powf(freq_base, -2.0f/n_dims); const bool is_neox = mode & 2; @@ -12637,12 +12785,15 @@ static void ggml_compute_forward_rope_back_f32( if (ir++ < ir0) continue; if (ir > ir1) break; - float theta = (float)p; + float theta = freq_scale * (float)p; if (!is_neox) { for (int64_t i0 = 0; i0 < ne0; i0 += 2) { const float cos_theta = cosf(theta); const float sin_theta = sinf(theta); + // zeta scaling for xPos only: + float zeta = xpos_base != 0.0f ? powf((i0 + 0.4f * ne0) / (1.4f * ne0), (n_past + i2) / xpos_base) : 1.0f; + if (xpos_down) zeta = 1.0f / zeta; theta *= theta_scale; @@ -12652,8 +12803,8 @@ static void ggml_compute_forward_rope_back_f32( const float dy0 = dy[0]; const float dy1 = dy[1]; - dx[0] = dy0*cos_theta + dy1*sin_theta; - dx[1] = - dy0*sin_theta + dy1*cos_theta; + dx[0] = dy0*cos_theta*zeta + dy1*sin_theta*zeta; + dx[1] = - dy0*sin_theta*zeta + dy1*cos_theta*zeta; } } else { for (int64_t ib = 0; ib < ne0/n_dims; ++ib) { @@ -12684,10 +12835,7 @@ static void ggml_compute_forward_rope_back_f32( static void ggml_compute_forward_rope_back_f16( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { - assert(src1->type == GGML_TYPE_I32); - assert(ggml_nelements(src1) == 3); if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; @@ -12697,9 +12845,9 @@ static void ggml_compute_forward_rope_back_f16( // dx = rope_back(dy, src1) // src0 is dy, src1 contains options - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; + const int n_past = ((int32_t *) dst->op_params)[0]; + const int n_dims = ((int32_t *) dst->op_params)[1]; + const int mode = ((int32_t *) dst->op_params)[2]; assert(n_past >= 0); @@ -12783,16 +12931,15 @@ static void ggml_compute_forward_rope_back_f16( static void ggml_compute_forward_rope_back( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * src1, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F16: { - ggml_compute_forward_rope_back_f16(params, src0, src1, dst); + ggml_compute_forward_rope_back_f16(params, src0, dst); } break; case GGML_TYPE_F32: { - ggml_compute_forward_rope_back_f32(params, src0, src1, dst); + ggml_compute_forward_rope_back_f32(params, src0, dst); } break; default: { @@ -12989,7 +13136,7 @@ static void ggml_compute_forward_conv_1d_s1_ph( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - struct ggml_tensor * dst) { + struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F16: { @@ -13192,7 +13339,7 @@ static void ggml_compute_forward_conv_1d_s2_ph( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - struct ggml_tensor * dst) { + struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F16: { @@ -13212,14 +13359,13 @@ static void ggml_compute_forward_conv_1d_s2_ph( // ggml_compute_forward_conv_1d static void ggml_compute_forward_conv_1d( - const struct ggml_compute_params * params, - const struct ggml_tensor * src0, - const struct ggml_tensor * src1, - const struct ggml_tensor * opt0, - struct ggml_tensor * dst) { - const int32_t s0 = ((const int32_t*)(opt0->data))[0]; - const int32_t p0 = ((const int32_t*)(opt0->data))[1]; - const int32_t d0 = ((const int32_t*)(opt0->data))[2]; + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + const struct ggml_tensor * src1, + struct ggml_tensor * dst) { + const int32_t s0 = ((const int32_t*)(dst->op_params))[0]; + const int32_t p0 = ((const int32_t*)(dst->op_params))[1]; + const int32_t d0 = ((const int32_t*)(dst->op_params))[2]; GGML_ASSERT(d0 == 1); // dilation not supported GGML_ASSERT(p0 == src0->ne[0]/2); // only half padding supported if (s0 == 1) { @@ -13231,9 +13377,9 @@ static void ggml_compute_forward_conv_1d( }; } -// ggml_compute_forward_conv_2d_sk_p0 +// ggml_compute_forward_conv_2d -static void ggml_compute_forward_conv_2d_sk_p0_f16_f32( +static void ggml_compute_forward_conv_2d_f16_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, @@ -13256,11 +13402,17 @@ static void ggml_compute_forward_conv_2d_sk_p0_f16_f32( // size of the convolution row - the kernel size unrolled across all channels const int ew0 = nk0*nk1*ne02; + const int32_t s0 = ((const int32_t*)(dst->op_params))[0]; + const int32_t s1 = ((const int32_t*)(dst->op_params))[1]; + const int32_t p0 = ((const int32_t*)(dst->op_params))[2]; + const int32_t p1 = ((const int32_t*)(dst->op_params))[3]; + const int32_t d0 = ((const int32_t*)(dst->op_params))[4]; + const int32_t d1 = ((const int32_t*)(dst->op_params))[5]; + GGML_ASSERT(nb00 == sizeof(ggml_fp16_t)); GGML_ASSERT(nb10 == sizeof(float)); if (params->type == GGML_TASK_INIT) { - // TODO: fix this memset (wsize is overestimated) memset(params->wdata, 0, params->wsize); // prepare source data (src1) @@ -13275,8 +13427,13 @@ static void ggml_compute_forward_conv_2d_sk_p0_f16_f32( for (int i0 = 0; i0 < ne0; i0++) { for (int ik1 = 0; ik1 < nk1; ik1++) { for (int ik0 = 0; ik0 < nk0; ik0++) { - dst_data[(i1*ne0 + i0)*ew0 + i12*(nk0*nk1) + ik1*nk0 + ik0] = - GGML_FP32_TO_FP16(src[(i1*nk1 + ik1)*ne10 + (i0*nk0 + ik0)]); + const int idx0 = i0*s0 + ik0*d0 - p0; + const int idx1 = i1*s1 + ik1*d1 - p1; + + if (!(idx1 < 0 || idx1 >= ne11 || idx0 < 0 || idx0 >= ne10)) { + dst_data[(i1*ne0 + i0)*ew0 + i12*(nk0*nk1) + ik1*nk0 + ik0] = + GGML_FP32_TO_FP16(src[idx1*ne10 + idx0]); + } } } } @@ -13303,32 +13460,34 @@ static void ggml_compute_forward_conv_2d_sk_p0_f16_f32( ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0; - for (int i2 = ip0; i2 < ip1; i2++) { - float * dst_data = (float *)((char *) dst->data + i2*nb2); + for (int i3 = 0; i3 < ne3; i3++) { + for (int i2 = ip0; i2 < ip1; i2++) { + float * dst_data = (float *)((char *) dst->data + i3*nb3 + i2*nb2); - for (int i1 = 0; i1 < ne1; ++i1) { - for (int i0 = 0; i0 < ne0; ++i0) { - ggml_vec_dot_f16(ew0, dst_data + i1*ne0 + i0, - (ggml_fp16_t *) ((char *) src0->data + i2*nb03), - (ggml_fp16_t *) wdata + (i1*ne0 + i0)*ew0); + for (int i1 = 0; i1 < ne1; ++i1) { + for (int i0 = 0; i0 < ne0; ++i0) { + ggml_vec_dot_f16(ew0, dst_data + i1*ne0 + i0, + (ggml_fp16_t *) ((char *) src0->data + i2*nb03), + (ggml_fp16_t *) wdata + i3*nb3 + (i1*ne0 + i0)*ew0); + } } } } } -static void ggml_compute_forward_conv_2d_sk_p0( +static void ggml_compute_forward_conv_2d( const struct ggml_compute_params * params, const struct ggml_tensor * src0, const struct ggml_tensor * src1, - struct ggml_tensor * dst) { + struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F16: { - ggml_compute_forward_conv_2d_sk_p0_f16_f32(params, src0, src1, dst); + ggml_compute_forward_conv_2d_f16_f32(params, src0, src1, dst); } break; case GGML_TYPE_F32: { - //ggml_compute_forward_conv_2d_sk_p0_f32(params, src0, src1, dst); + //ggml_compute_forward_conv_2d_f32(params, src0, src1, dst); GGML_ASSERT(false); } break; default: @@ -13338,33 +13497,318 @@ static void ggml_compute_forward_conv_2d_sk_p0( } } -// ggml_compute_forward_conv_2d +// ggml_compute_forward_conv_transpose_2d -static void ggml_compute_forward_conv_2d( - const struct ggml_compute_params* params, - const struct ggml_tensor* src0, - const struct ggml_tensor* src1, - const struct ggml_tensor* opt0, - struct ggml_tensor* dst) { - const int32_t s0 = ((const int32_t*)(opt0->data))[0]; - const int32_t s1 = ((const int32_t*)(opt0->data))[1]; - const int32_t p0 = ((const int32_t*)(opt0->data))[2]; - const int32_t p1 = ((const int32_t*)(opt0->data))[3]; - const int32_t d0 = ((const int32_t*)(opt0->data))[4]; - const int32_t d1 = ((const int32_t*)(opt0->data))[5]; - GGML_ASSERT(d0 == 1); // dilation not supported - GGML_ASSERT(d1 == 1); - GGML_ASSERT(p0 == 0); // padding not supported - GGML_ASSERT(p1 == 0); +static void ggml_compute_forward_conv_transpose_2d( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + const struct ggml_tensor * src1, + struct ggml_tensor * dst) { + GGML_ASSERT(src0->type == GGML_TYPE_F16); + GGML_ASSERT(src1->type == GGML_TYPE_F32); + GGML_ASSERT( dst->type == GGML_TYPE_F32); - if (s0 == src0->ne[0] && s1 == src0->ne[1]) { - ggml_compute_forward_conv_2d_sk_p0(params, src0, src1, dst); + int64_t t0 = ggml_perf_time_us(); + UNUSED(t0); + + GGML_TENSOR_BINARY_OP_LOCALS; + + const int ith = params->ith; + const int nth = params->nth; + + const int nk = ne00*ne01*ne02*ne03; + + GGML_ASSERT(nb00 == sizeof(ggml_fp16_t)); + GGML_ASSERT(nb10 == sizeof(float)); + + if (params->type == GGML_TASK_INIT) { + memset(params->wdata, 0, params->wsize); + + // permute kernel data (src0) from (Kw x Kh x Cout x Cin) to (Cin x Kw x Kh x Cout) + { + ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0; + + for (int64_t i03 = 0; i03 < ne03; i03++) { + for (int64_t i02 = 0; i02 < ne02; i02++) { + const ggml_fp16_t * const src = (ggml_fp16_t *)((char *) src0->data + i03*nb03 + i02*nb02); + ggml_fp16_t * dst_data = wdata + i02*ne01*ne00*ne03; + for (int64_t i01 = 0; i01 < ne01; i01++) { + for (int64_t i00 = 0; i00 < ne00; i00++) { + dst_data[i01*ne00*ne03 + i00*ne03 + i03] = src[i01 * ne00 + i00]; + } + } + } + } + } + + // permute source data (src1) from (Sw x Sh x Cin) to (Cin x Sw x Sh) + { + ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + nk; + for (int i12 = 0; i12 < ne12; i12++) { + for (int i11 = 0; i11 < ne11; i11++) { + const float * const src = (float *)((char *) src1->data + i12*nb12 + i11*nb11); + ggml_fp16_t * dst_data = wdata + i11*ne10*ne12; + for (int i10 = 0; i10 < ne10; i10++) { + dst_data[i10*ne12 + i12] = GGML_FP32_TO_FP16(src[i10]); + } + } + } + } + + return; + } + + if (params->type == GGML_TASK_FINALIZE) { + return; + } + + const int32_t stride = ggml_get_op_params_i32(dst, 0); + + // total patches in dst + const int np = ne2; + + // patches per thread + const int dp = (np + nth - 1)/nth; + + // patch range for this thread + const int ip0 = dp*ith; + const int ip1 = MIN(ip0 + dp, np); + + ggml_fp16_t * const wdata = (ggml_fp16_t *) params->wdata + 0; + ggml_fp16_t * const wdata_src = wdata + nk; + + for (int i2 = ip0; i2 < ip1; i2++) { // Cout + float * dst_data = (float *)((char *) dst->data + i2*nb2); + ggml_fp16_t * wdata_kernel = wdata + i2*ne01*ne00*ne03; + for (int i11 = 0; i11 < ne11; i11++) { + for (int i10 = 0; i10 < ne10; i10++) { + const int i1n = i11*ne10*ne12 + i10*ne12; + for (int i01 = 0; i01 < ne01; i01++) { + for (int i00 = 0; i00 < ne00; i00++) { + float v = 0; + ggml_vec_dot_f16(ne03, &v, + wdata_src + i1n, + wdata_kernel + i01*ne00*ne03 + i00*ne03); + dst_data[(i11*stride + i01)*ne0 + i10*stride + i00] += v; + } + } + } + } } - else { - GGML_ASSERT(false); // only stride equal to kernel size is supported - }; } +// ggml_compute_forward_pool_1d_sk_p0 + +static void ggml_compute_forward_pool_1d_sk_p0( + const struct ggml_compute_params * params, + const enum ggml_op_pool op, + const struct ggml_tensor * src, + const int k, + struct ggml_tensor * dst) { + assert(src->type == GGML_TYPE_F32); + assert(params->ith == 0); + + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + const char * cdata = (const char *)src->data; + const char * const data_end = cdata + ggml_nbytes(src); + float * drow = (float *)dst->data; + + const int64_t rs = dst->ne[0]; + + while (cdata < data_end) { + const float * const srow = (const float *)cdata; + + int j = 0; + + for (int64_t i = 0; i < rs; ++i) { + switch (op) { + case GGML_OP_POOL_AVG: drow[i] = 0; break; + case GGML_OP_POOL_MAX: drow[i] = -FLT_MAX; break; + case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break; + } + for (int ki = 0; ki < k; ++ki) { + switch (op) { + case GGML_OP_POOL_AVG: drow[i] += srow[j]; break; + case GGML_OP_POOL_MAX: if (srow[j] > drow[i]) drow[i] = srow[j]; break; + case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break; + } + ++j; + } + switch (op) { + case GGML_OP_POOL_AVG: drow[i] /= k; break; + case GGML_OP_POOL_MAX: break; + case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break; + } + } + + cdata += src->nb[1]; + drow += rs; + } +} + +// ggml_compute_forward_pool_1d + +static void ggml_compute_forward_pool_1d( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + + const int32_t * opts = (const int32_t *)dst->op_params; + enum ggml_op_pool op = opts[0]; + const int k0 = opts[1]; + const int s0 = opts[2]; + const int p0 = opts[3]; + GGML_ASSERT(p0 == 0); // padding not supported + GGML_ASSERT(k0 == s0); // only s = k supported + + ggml_compute_forward_pool_1d_sk_p0(params, op, src0, k0, dst); +} + +// ggml_compute_forward_pool_2d_sk_p0 + +static void ggml_compute_forward_pool_2d_sk_p0( + const struct ggml_compute_params * params, + const enum ggml_op_pool op, + const struct ggml_tensor * src, + const int k0, + const int k1, + struct ggml_tensor * dst) { + assert(src->type == GGML_TYPE_F32); + assert(params->ith == 0); + + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + const char * cdata = (const char*)src->data; + const char * const data_end = cdata + ggml_nbytes(src); + + const int64_t px = dst->ne[0]; + const int64_t py = dst->ne[1]; + const int64_t pa = px * py; + + float * dplane = (float *)dst->data; + + const int ka = k0 * k1; + + while (cdata < data_end) { + for (int oy = 0; oy < py; ++oy) { + float * const drow = dplane + oy * px; + for (int ox = 0; ox < px; ++ox) { + float * const out = drow + ox; + switch (op) { + case GGML_OP_POOL_AVG: *out = 0; break; + case GGML_OP_POOL_MAX: *out = -FLT_MAX; break; + case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break; + } + + const int ix = ox * k0; + const int iy = oy * k1; + + for (int ky = 0; ky < k1; ++ky) { + const float * const srow = (const float *)(cdata + src->nb[1] * (iy + ky)); + for (int kx = 0; kx < k0; ++kx) { + int j = ix + kx; + switch (op) { + case GGML_OP_POOL_AVG: *out += srow[j]; break; + case GGML_OP_POOL_MAX: if (srow[j] > *out) *out = srow[j]; break; + case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break; + } + } + } + switch (op) { + case GGML_OP_POOL_AVG: *out /= ka; break; + case GGML_OP_POOL_MAX: break; + case GGML_OP_POOL_COUNT: GGML_ASSERT(false); break; + } + } + } + + cdata += src->nb[2]; + dplane += pa; + } +} + +// ggml_compute_forward_pool_2d + +static void ggml_compute_forward_pool_2d( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + + const int32_t * opts = (const int32_t *)dst->op_params; + enum ggml_op_pool op = opts[0]; + const int k0 = opts[1]; + const int k1 = opts[2]; + const int s0 = opts[3]; + const int s1 = opts[4]; + const int p0 = opts[5]; + const int p1 = opts[6]; + GGML_ASSERT(p0 == 0); + GGML_ASSERT(p1 == 0); // padding not supported + GGML_ASSERT(k0 == s0); + GGML_ASSERT(k1 == s1); // only s = k supported + + ggml_compute_forward_pool_2d_sk_p0(params, op, src0, k0, k1, dst); +} + +// ggml_compute_forward_upscale + +static void ggml_compute_forward_upscale_f32( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + GGML_ASSERT(src0->nb[0] == sizeof(float)); + + const int ith = params->ith; + + GGML_TENSOR_UNARY_OP_LOCALS; + + const int scale_factor = dst->op_params[0]; + + // TODO: optimize + + for (int i03 = 0; i03 < ne03; i03++) { + for (int i02 = ith; i02 < ne02; i02++) { + for (int m = 0; m < dst->ne[1]; m++) { + int i01 = m / scale_factor; + for (int n = 0; n < dst->ne[0]; n++) { + int i00 = n / scale_factor; + + const float * x = (float *)((char *) src0->data + i00 * nb00 +i01 * nb01 + i02 * nb02 + i03 * nb03); + + float * y = (float *)((char *) dst->data + n * dst->nb[0] + m * dst->nb[1] + i02 * dst->nb[2] + i03 * dst->nb[3]); + + *y = *x; + } + } + } + } +} + +static void ggml_compute_forward_upscale( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + switch (src0->type) { + case GGML_TYPE_F32: + { + ggml_compute_forward_upscale_f32(params, src0, dst); + } break; + default: + { + GGML_ASSERT(false); + } break; + } +} // ggml_compute_forward_flash_attn @@ -13374,7 +13818,7 @@ static void ggml_compute_forward_flash_attn_f32( const struct ggml_tensor * k, const struct ggml_tensor * v, const bool masked, - struct ggml_tensor * dst) { + struct ggml_tensor * dst) { int64_t t0 = ggml_perf_time_us(); UNUSED(t0); @@ -13552,7 +13996,7 @@ static void ggml_compute_forward_flash_attn_f16( const struct ggml_tensor * k, const struct ggml_tensor * v, const bool masked, - struct ggml_tensor * dst) { + struct ggml_tensor * dst) { int64_t t0 = ggml_perf_time_us(); UNUSED(t0); @@ -14317,7 +14761,6 @@ static void ggml_compute_forward_flash_attn_back( static void ggml_compute_forward_win_part_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; @@ -14326,9 +14769,9 @@ static void ggml_compute_forward_win_part_f32( GGML_TENSOR_LOCALS(int64_t, ne0, src0, ne); GGML_TENSOR_LOCALS(int64_t, ne, dst, ne); - const int32_t nep0 = ((const int32_t *)(opt0->data))[0]; - const int32_t nep1 = ((const int32_t *)(opt0->data))[1]; - const int32_t w = ((const int32_t *)(opt0->data))[2]; + const int32_t nep0 = ((const int32_t *)(dst->op_params))[0]; + const int32_t nep1 = ((const int32_t *)(dst->op_params))[1]; + const int32_t w = ((const int32_t *)(dst->op_params))[2]; assert(ne00 == ne0); assert(ne3 == nep0*nep1); @@ -14362,12 +14805,11 @@ static void ggml_compute_forward_win_part_f32( static void ggml_compute_forward_win_part( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_win_part_f32(params, src0, opt0, dst); + ggml_compute_forward_win_part_f32(params, src0, dst); } break; default: { @@ -14381,7 +14823,6 @@ static void ggml_compute_forward_win_part( static void ggml_compute_forward_win_unpart_f32( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { return; @@ -14390,7 +14831,7 @@ static void ggml_compute_forward_win_unpart_f32( GGML_TENSOR_LOCALS(int64_t, ne0, src0, ne); GGML_TENSOR_LOCALS(int64_t, ne, dst, ne); - const int32_t w = ((const int32_t *)(opt0->data))[0]; + const int32_t w = ((const int32_t *)(dst->op_params))[0]; // padding const int px = (w - ne1%w)%w; @@ -14424,12 +14865,201 @@ static void ggml_compute_forward_win_unpart_f32( static void ggml_compute_forward_win_unpart( const struct ggml_compute_params * params, const struct ggml_tensor * src0, - const struct ggml_tensor * opt0, struct ggml_tensor * dst) { switch (src0->type) { case GGML_TYPE_F32: { - ggml_compute_forward_win_unpart_f32(params, src0, opt0, dst); + ggml_compute_forward_win_unpart_f32(params, src0, dst); + } break; + default: + { + GGML_ASSERT(false); + } break; + } +} + +//gmml_compute_forward_unary + +static void ggml_compute_forward_unary( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + const enum ggml_unary_op op = ggml_get_unary_op(dst); + + switch (op) { + case GGML_UNARY_OP_ABS: + { + ggml_compute_forward_abs(params, src0, dst); + } break; + case GGML_UNARY_OP_SGN: + { + ggml_compute_forward_sgn(params, src0, dst); + } break; + case GGML_UNARY_OP_NEG: + { + ggml_compute_forward_neg(params, src0, dst); + } break; + case GGML_UNARY_OP_STEP: + { + ggml_compute_forward_step(params, src0, dst); + } break; + case GGML_UNARY_OP_TANH: + { + ggml_compute_forward_tanh(params, src0, dst); + } break; + case GGML_UNARY_OP_ELU: + { + ggml_compute_forward_elu(params, src0, dst); + } break; + case GGML_UNARY_OP_RELU: + { + ggml_compute_forward_relu(params, src0, dst); + } break; + case GGML_UNARY_OP_GELU: + { + ggml_compute_forward_gelu(params, src0, dst); + } break; + case GGML_UNARY_OP_GELU_QUICK: + { + ggml_compute_forward_gelu_quick(params, src0, dst); + } break; + case GGML_UNARY_OP_SILU: + { + ggml_compute_forward_silu(params, src0, dst); + } break; + default: + { + GGML_ASSERT(false); + } break; + } +} + +// ggml_compute_forward_get_rel_pos + +static void ggml_compute_forward_get_rel_pos_f16( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + // ref: https://github.com/facebookresearch/segment-anything/blob/main/segment_anything/modeling/image_encoder.py#L292-L322 + + GGML_TENSOR_UNARY_OP_LOCALS; + + const int64_t w = ne1; + + ggml_fp16_t * src0_data = (ggml_fp16_t *) src0->data; + ggml_fp16_t * dst_data = (ggml_fp16_t *) dst->data; + + for (int64_t i2 = 0; i2 < ne2; ++i2) { + for (int64_t i1 = 0; i1 < ne1; ++i1) { + const int64_t pos = (w - i1 - 1) + i2; + for (int64_t i0 = 0; i0 < ne0; ++i0) { + dst_data[i2*ne1*ne0 + i1*ne0 + i0] = src0_data[pos*ne00 + i0]; + } + } + } +} + +static void ggml_compute_forward_get_rel_pos( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + struct ggml_tensor * dst) { + switch (src0->type) { + case GGML_TYPE_F16: + { + ggml_compute_forward_get_rel_pos_f16(params, src0, dst); + } break; + default: + { + GGML_ASSERT(false); + } break; + } +} + +// ggml_compute_forward_add_rel_pos + +static void ggml_compute_forward_add_rel_pos_f32( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + const struct ggml_tensor * src1, + const struct ggml_tensor * src2, + struct ggml_tensor * dst) { + GGML_ASSERT(ggml_are_same_shape(src0, dst)); + GGML_ASSERT(src0->nb[0] == dst->nb[0] && src0->nb[1] == dst->nb[1] + && src0->nb[2] == dst->nb[2] && src0->nb[3] == dst->nb[3]); + + const bool inplace = dst->data == src0->data; + if (!inplace && params->type == GGML_TASK_INIT) { + memcpy((char *) dst->data, (char *) src0->data, ggml_nbytes(dst)); + return; + } + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + int64_t t0 = ggml_perf_time_us(); + UNUSED(t0); + + // ref: https://github.com/facebookresearch/segment-anything/blob/main/segment_anything/modeling/image_encoder.py#L357-L359 + + float * src1_data = (float *) src1->data; + float * src2_data = (float *) src2->data; + float * dst_data = (float *) dst->data; + + const int64_t ne10 = src1->ne[0]; + const int64_t ne11 = src1->ne[1]; + const int64_t ne12 = src1->ne[2]; + const int64_t ne13 = src1->ne[3]; + + const int ith = params->ith; + const int nth = params->nth; + + // total patches in dst + const int np = ne13; + + // patches per thread + const int dp = (np + nth - 1)/nth; + + // patch range for this thread + const int ip0 = dp*ith; + const int ip1 = MIN(ip0 + dp, np); + + + for (int64_t i13 = ip0; i13 < ip1; ++i13) { + for (int64_t i12 = 0; i12 < ne12; ++i12) { + for (int64_t i11 = 0; i11 < ne11; ++i11) { + const int64_t jp1 = i13*ne12*ne11*ne10 + i12*ne11*ne10 + i11*ne10; + for (int64_t i10 = 0; i10 < ne10; ++i10) { + const int64_t jp0 = jp1 + i10; + const float src1_e = src1_data[jp0]; + const float src2_e = src2_data[jp0]; + + const int64_t jdh = jp0 * ne10; + const int64_t jdw = jdh - (ne10 - 1) * i10; + + for (int64_t j = 0; j < ne10; ++j) { + dst_data[jdh + j ] += src2_e; + dst_data[jdw + j*ne10] += src1_e; + } + } + } + } + } +} + +static void ggml_compute_forward_add_rel_pos( + const struct ggml_compute_params * params, + const struct ggml_tensor * src0, + const struct ggml_tensor * src1, + const struct ggml_tensor * src2, + struct ggml_tensor * dst) { + switch (src0->type) { + case GGML_TYPE_F32: + { + ggml_compute_forward_add_rel_pos_f32(params, src0, src1, src2, dst); } break; default: { @@ -14547,24 +15177,6 @@ static void ggml_compute_forward_map_custom1_f32( fun(dst, a); } - -static void ggml_compute_forward_map_custom1( - const struct ggml_compute_params * params, - const struct ggml_tensor * a, - struct ggml_tensor * dst, - const ggml_custom1_op_f32_t fun) { - switch (a->type) { - case GGML_TYPE_F32: - { - ggml_compute_forward_map_custom1_f32(params, a, dst, fun); - } break; - default: - { - GGML_ASSERT(false); - } break; - } -} - // ggml_compute_forward_map_custom2 static void ggml_compute_forward_map_custom2_f32( @@ -14583,24 +15195,6 @@ static void ggml_compute_forward_map_custom2_f32( } -static void ggml_compute_forward_map_custom2( - const struct ggml_compute_params * params, - const struct ggml_tensor * a, - const struct ggml_tensor * b, - struct ggml_tensor * dst, - const ggml_custom2_op_f32_t fun) { - switch (a->type) { - case GGML_TYPE_F32: - { - ggml_compute_forward_map_custom2_f32(params, a, b, dst, fun); - } break; - default: - { - GGML_ASSERT(false); - } break; - } -} - // ggml_compute_forward_map_custom3 static void ggml_compute_forward_map_custom3_f32( @@ -14619,24 +15213,52 @@ static void ggml_compute_forward_map_custom3_f32( fun(dst, a, b, c); } +// ggml_compute_forward_map_custom1 + +static void ggml_compute_forward_map_custom1( + const struct ggml_compute_params * params, + const struct ggml_tensor * a, + struct ggml_tensor * dst) { + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + struct ggml_map_custom1_op_params * p = (struct ggml_map_custom1_op_params *) dst->op_params; + + p->fun(dst, a, params->ith, params->nth, p->userdata); +} + +// ggml_compute_forward_map_custom2 + +static void ggml_compute_forward_map_custom2( + const struct ggml_compute_params * params, + const struct ggml_tensor * a, + const struct ggml_tensor * b, + struct ggml_tensor * dst) { + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; + } + + struct ggml_map_custom2_op_params * p = (struct ggml_map_custom2_op_params *) dst->op_params; + + p->fun(dst, a, b, params->ith, params->nth, p->userdata); +} + +// ggml_compute_forward_map_custom3 static void ggml_compute_forward_map_custom3( const struct ggml_compute_params * params, const struct ggml_tensor * a, const struct ggml_tensor * b, const struct ggml_tensor * c, - struct ggml_tensor * dst, - const ggml_custom3_op_f32_t fun) { - switch (a->type) { - case GGML_TYPE_F32: - { - ggml_compute_forward_map_custom3_f32(params, a, b, c, dst, fun); - } break; - default: - { - GGML_ASSERT(false); - } break; + struct ggml_tensor * dst) { + if (params->type == GGML_TASK_INIT || params->type == GGML_TASK_FINALIZE) { + return; } + + struct ggml_map_custom3_op_params * p = (struct ggml_map_custom3_op_params *) dst->op_params; + + p->fun(dst, a, b, c, params->ith, params->nth, p->userdata); } // ggml_compute_forward_cross_entropy_loss @@ -14929,287 +15551,303 @@ static void ggml_compute_forward(struct ggml_compute_params * params, struct ggm if (skip_cpu) { return; } - GGML_ASSERT(tensor->src0 == NULL || tensor->src0->backend == GGML_BACKEND_CPU); - GGML_ASSERT(tensor->src1 == NULL || tensor->src1->backend == GGML_BACKEND_CPU); + GGML_ASSERT(tensor->src[0] == NULL || tensor->src[0]->backend == GGML_BACKEND_CPU); + GGML_ASSERT(tensor->src[1] == NULL || tensor->src[1]->backend == GGML_BACKEND_CPU); #endif // GGML_USE_CUBLAS switch (tensor->op) { case GGML_OP_DUP: { - ggml_compute_forward_dup(params, tensor->src0, tensor); + ggml_compute_forward_dup(params, tensor->src[0], tensor); } break; case GGML_OP_ADD: { - ggml_compute_forward_add(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_add(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_ADD1: { - ggml_compute_forward_add1(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_add1(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_ACC: { - ggml_compute_forward_acc(params, tensor->src0, tensor->src1, tensor->opt[0], tensor); + ggml_compute_forward_acc(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_SUB: { - ggml_compute_forward_sub(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_sub(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_MUL: { - ggml_compute_forward_mul(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_mul(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_DIV: { - ggml_compute_forward_div(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_div(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_SQR: { - ggml_compute_forward_sqr(params, tensor->src0, tensor); + ggml_compute_forward_sqr(params, tensor->src[0], tensor); } break; case GGML_OP_SQRT: { - ggml_compute_forward_sqrt(params, tensor->src0, tensor); + ggml_compute_forward_sqrt(params, tensor->src[0], tensor); } break; case GGML_OP_LOG: { - ggml_compute_forward_log(params, tensor->src0, tensor); + ggml_compute_forward_log(params, tensor->src[0], tensor); } break; case GGML_OP_SUM: { - ggml_compute_forward_sum(params, tensor->src0, tensor); + ggml_compute_forward_sum(params, tensor->src[0], tensor); } break; case GGML_OP_SUM_ROWS: { - ggml_compute_forward_sum_rows(params, tensor->src0, tensor); + ggml_compute_forward_sum_rows(params, tensor->src[0], tensor); } break; case GGML_OP_MEAN: { - ggml_compute_forward_mean(params, tensor->src0, tensor); + ggml_compute_forward_mean(params, tensor->src[0], tensor); } break; case GGML_OP_ARGMAX: { - ggml_compute_forward_argmax(params, tensor->src0, tensor); + ggml_compute_forward_argmax(params, tensor->src[0], tensor); } break; case GGML_OP_REPEAT: { - ggml_compute_forward_repeat(params, tensor->src0, tensor); + ggml_compute_forward_repeat(params, tensor->src[0], tensor); } break; case GGML_OP_REPEAT_BACK: { - ggml_compute_forward_repeat_back(params, tensor->src0, tensor); + ggml_compute_forward_repeat_back(params, tensor->src[0], tensor); } break; - case GGML_OP_ABS: + case GGML_OP_CONCAT: { - ggml_compute_forward_abs(params, tensor->src0, tensor); - } break; - case GGML_OP_SGN: - { - ggml_compute_forward_sgn(params, tensor->src0, tensor); - } break; - case GGML_OP_NEG: - { - ggml_compute_forward_neg(params, tensor->src0, tensor); - } break; - case GGML_OP_STEP: - { - ggml_compute_forward_step(params, tensor->src0, tensor); - } break; - case GGML_OP_TANH: - { - ggml_compute_forward_tanh(params, tensor->src0, tensor); - } break; - case GGML_OP_ELU: - { - ggml_compute_forward_elu(params, tensor->src0, tensor); - } break; - case GGML_OP_RELU: - { - ggml_compute_forward_relu(params, tensor->src0, tensor); - } break; - case GGML_OP_GELU: - { - ggml_compute_forward_gelu(params, tensor->src0, tensor); - } break; - case GGML_OP_GELU_QUICK: - { - ggml_compute_forward_gelu_quick(params, tensor->src0, tensor); - } break; - case GGML_OP_SILU: - { - ggml_compute_forward_silu(params, tensor->src0, tensor); + ggml_compute_forward_concat(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_SILU_BACK: { - ggml_compute_forward_silu_back(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_silu_back(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_NORM: { - ggml_compute_forward_norm(params, tensor->src0, tensor); + ggml_compute_forward_norm(params, tensor->src[0], tensor); } break; case GGML_OP_RMS_NORM: { - ggml_compute_forward_rms_norm(params, tensor->src0, tensor); + ggml_compute_forward_rms_norm(params, tensor->src[0], tensor); } break; case GGML_OP_RMS_NORM_BACK: { - ggml_compute_forward_rms_norm_back(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_rms_norm_back(params, tensor->src[0], tensor->src[1], tensor); + } break; + case GGML_OP_GROUP_NORM: + { + ggml_compute_forward_group_norm(params, tensor->src[0], tensor); } break; case GGML_OP_MUL_MAT: { - ggml_compute_forward_mul_mat(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_mul_mat(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_OUT_PROD: { - ggml_compute_forward_out_prod(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_out_prod(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_SCALE: { - ggml_compute_forward_scale(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_scale(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_SET: { - ggml_compute_forward_set(params, tensor->src0, tensor->src1, tensor->opt[0], tensor); + ggml_compute_forward_set(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_CPY: { - ggml_compute_forward_cpy(params, tensor->src0, tensor); + ggml_compute_forward_cpy(params, tensor->src[0], tensor); } break; case GGML_OP_CONT: { - ggml_compute_forward_cont(params, tensor->src0, tensor); + ggml_compute_forward_cont(params, tensor->src[0], tensor); } break; case GGML_OP_RESHAPE: { - ggml_compute_forward_reshape(params, tensor->src0, tensor); + ggml_compute_forward_reshape(params, tensor->src[0], tensor); } break; case GGML_OP_VIEW: { - ggml_compute_forward_view(params, tensor->src0); + ggml_compute_forward_view(params, tensor->src[0]); } break; case GGML_OP_PERMUTE: { - ggml_compute_forward_permute(params, tensor->src0); + ggml_compute_forward_permute(params, tensor->src[0]); } break; case GGML_OP_TRANSPOSE: { - ggml_compute_forward_transpose(params, tensor->src0); + ggml_compute_forward_transpose(params, tensor->src[0]); } break; case GGML_OP_GET_ROWS: { - ggml_compute_forward_get_rows(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_get_rows(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_GET_ROWS_BACK: { - ggml_compute_forward_get_rows_back(params, tensor->src0, tensor->src1, tensor->opt[0], tensor); + ggml_compute_forward_get_rows_back(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor); } break; case GGML_OP_DIAG: { - ggml_compute_forward_diag(params, tensor->src0, tensor); + ggml_compute_forward_diag(params, tensor->src[0], tensor); } break; case GGML_OP_DIAG_MASK_INF: { - ggml_compute_forward_diag_mask_inf(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_diag_mask_inf(params, tensor->src[0], tensor); } break; case GGML_OP_DIAG_MASK_ZERO: { - ggml_compute_forward_diag_mask_zero(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_diag_mask_zero(params, tensor->src[0], tensor); } break; case GGML_OP_SOFT_MAX: { - ggml_compute_forward_soft_max(params, tensor->src0, tensor); + ggml_compute_forward_soft_max(params, tensor->src[0], tensor); } break; case GGML_OP_SOFT_MAX_BACK: { - ggml_compute_forward_soft_max_back(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_soft_max_back(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_ROPE: { - ggml_compute_forward_rope(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_rope(params, tensor->src[0], tensor); } break; case GGML_OP_ROPE_BACK: { - ggml_compute_forward_rope_back(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_rope_back(params, tensor->src[0], tensor); } break; case GGML_OP_ALIBI: { - ggml_compute_forward_alibi(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_alibi(params, tensor->src[0], tensor); } break; case GGML_OP_CLAMP: { - ggml_compute_forward_clamp(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_clamp(params, tensor->src[0], tensor); } break; case GGML_OP_CONV_1D: { - ggml_compute_forward_conv_1d(params, tensor->src0, tensor->src1, tensor->opt[0], tensor); + ggml_compute_forward_conv_1d(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_CONV_2D: { - ggml_compute_forward_conv_2d(params, tensor->src0, tensor->src1, tensor->opt[0], tensor); + ggml_compute_forward_conv_2d(params, tensor->src[0], tensor->src[1], tensor); + } break; + case GGML_OP_CONV_TRANSPOSE_2D: + { + ggml_compute_forward_conv_transpose_2d(params, tensor->src[0], tensor->src[1], tensor); + } break; + case GGML_OP_POOL_1D: + { + ggml_compute_forward_pool_1d(params, tensor->src[0], tensor); + } break; + case GGML_OP_POOL_2D: + { + ggml_compute_forward_pool_2d(params, tensor->src[0], tensor); + } break; + case GGML_OP_UPSCALE: + { + ggml_compute_forward_upscale(params, tensor->src[0], tensor); } break; case GGML_OP_FLASH_ATTN: { - const int32_t t = ggml_get_i32_1d(tensor->opt[1], 0); + const int32_t t = ggml_get_op_params_i32(tensor, 0); GGML_ASSERT(t == 0 || t == 1); const bool masked = t != 0; - ggml_compute_forward_flash_attn(params, tensor->src0, tensor->src1, tensor->opt[0], masked, tensor); + ggml_compute_forward_flash_attn(params, tensor->src[0], tensor->src[1], tensor->src[2], masked, tensor); } break; case GGML_OP_FLASH_FF: { - ggml_compute_forward_flash_ff(params, tensor->src0, tensor->src1, tensor->opt[0], tensor->opt[1], tensor->opt[2], tensor); + ggml_compute_forward_flash_ff(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor->src[3], tensor->src[4], tensor); } break; case GGML_OP_FLASH_ATTN_BACK: { - int32_t t = ggml_get_i32_1d(tensor->opt[2], 0); + int32_t t = ggml_get_op_params_i32(tensor, 0); GGML_ASSERT(t == 0 || t == 1); bool masked = t != 0; - ggml_compute_forward_flash_attn_back(params, tensor->src0, tensor->src1, tensor->opt[0], tensor->opt[1], masked, tensor); + ggml_compute_forward_flash_attn_back(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor->src[3], masked, tensor); } break; case GGML_OP_WIN_PART: { - ggml_compute_forward_win_part(params, tensor->src0, tensor->opt[0], tensor); + ggml_compute_forward_win_part(params, tensor->src[0], tensor); } break; case GGML_OP_WIN_UNPART: { - ggml_compute_forward_win_unpart(params, tensor->src0, tensor->opt[0], tensor); + ggml_compute_forward_win_unpart(params, tensor->src[0], tensor); + } break; + case GGML_OP_UNARY: + { + ggml_compute_forward_unary(params, tensor->src[0], tensor); + } break; + case GGML_OP_GET_REL_POS: + { + ggml_compute_forward_get_rel_pos(params, tensor->src[0], tensor); + } break; + case GGML_OP_ADD_REL_POS: + { + ggml_compute_forward_add_rel_pos(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor); } break; case GGML_OP_MAP_UNARY: { - const ggml_unary_op_f32_t fun = *((ggml_unary_op_f32_t *)tensor->opt[0]->data); - ggml_compute_forward_map_unary(params, tensor->src0, tensor, fun); + ggml_unary_op_f32_t fun; + memcpy(&fun, tensor->op_params, sizeof(fun)); + ggml_compute_forward_map_unary(params, tensor->src[0], tensor, fun); } break; case GGML_OP_MAP_BINARY: { - const ggml_binary_op_f32_t fun = *((ggml_binary_op_f32_t *)tensor->opt[0]->data); - ggml_compute_forward_map_binary(params, tensor->src0, tensor->src1, tensor, fun); + ggml_binary_op_f32_t fun; + memcpy(&fun, tensor->op_params, sizeof(fun)); + ggml_compute_forward_map_binary(params, tensor->src[0], tensor->src[1], tensor, fun); + } + break; + case GGML_OP_MAP_CUSTOM1_F32: + { + ggml_custom1_op_f32_t fun; + memcpy(&fun, tensor->op_params, sizeof(fun)); + ggml_compute_forward_map_custom1_f32(params, tensor->src[0], tensor, fun); + } + break; + case GGML_OP_MAP_CUSTOM2_F32: + { + ggml_custom2_op_f32_t fun; + memcpy(&fun, tensor->op_params, sizeof(fun)); + ggml_compute_forward_map_custom2_f32(params, tensor->src[0], tensor->src[1], tensor, fun); + } + break; + case GGML_OP_MAP_CUSTOM3_F32: + { + ggml_custom3_op_f32_t fun; + memcpy(&fun, tensor->op_params, sizeof(fun)); + ggml_compute_forward_map_custom3_f32(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor, fun); } break; case GGML_OP_MAP_CUSTOM1: { - const ggml_custom1_op_f32_t fun = *((ggml_custom1_op_f32_t *)tensor->opt[0]->data); - ggml_compute_forward_map_custom1(params, tensor->src0, tensor, fun); + ggml_compute_forward_map_custom1(params, tensor->src[0], tensor); } break; case GGML_OP_MAP_CUSTOM2: { - const ggml_custom2_op_f32_t fun = *((ggml_custom2_op_f32_t *)tensor->opt[0]->data); - ggml_compute_forward_map_custom2(params, tensor->src0, tensor->src1, tensor, fun); + ggml_compute_forward_map_custom2(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_MAP_CUSTOM3: { - const ggml_custom3_op_f32_t fun = *((ggml_custom3_op_f32_t *)tensor->opt[0]->data); - ggml_compute_forward_map_custom3(params, tensor->src0, tensor->src1, tensor->opt[1], tensor, fun); + ggml_compute_forward_map_custom3(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor); } break; case GGML_OP_CROSS_ENTROPY_LOSS: { - ggml_compute_forward_cross_entropy_loss(params, tensor->src0, tensor->src1, tensor); + ggml_compute_forward_cross_entropy_loss(params, tensor->src[0], tensor->src[1], tensor); } break; case GGML_OP_CROSS_ENTROPY_LOSS_BACK: { - ggml_compute_forward_cross_entropy_loss_back(params, tensor->src0, tensor->src1, tensor->opt[0], tensor); + ggml_compute_forward_cross_entropy_loss_back(params, tensor->src[0], tensor->src[1], tensor->src[2], tensor); } break; case GGML_OP_NONE: @@ -15226,8 +15864,8 @@ static void ggml_compute_forward(struct ggml_compute_params * params, struct ggm //////////////////////////////////////////////////////////////////////////////// static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor * tensor, bool inplace) { - struct ggml_tensor * src0 = tensor->src0; - struct ggml_tensor * src1 = tensor->src1; + struct ggml_tensor * src0 = tensor->src[0]; + struct ggml_tensor * src1 = tensor->src[1]; switch (tensor->op) { case GGML_OP_DUP: @@ -15263,12 +15901,10 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor src0->grad = ggml_add_impl(ctx, src0->grad, tensor->grad, inplace); } if (src1->grad) { - GGML_ASSERT(ggml_nelements(tensor->opt[0]) == 5); - GGML_ASSERT(tensor->opt[0]->type == GGML_TYPE_I32); - const size_t nb1 = (( int32_t * ) tensor->opt[0]->data)[0]; - const size_t nb2 = (( int32_t * ) tensor->opt[0]->data)[1]; - const size_t nb3 = (( int32_t * ) tensor->opt[0]->data)[2]; - const size_t offset = (( int32_t * ) tensor->opt[0]->data)[3]; + const size_t nb1 = ((int32_t *) tensor->op_params)[0]; + const size_t nb2 = ((int32_t *) tensor->op_params)[1]; + const size_t nb3 = ((int32_t *) tensor->op_params)[2]; + const size_t offset = ((int32_t *) tensor->op_params)[3]; struct ggml_tensor * tensor_grad_view = ggml_view_4d(ctx, tensor->grad, @@ -15417,72 +16053,9 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor inplace); } } break; - case GGML_OP_ABS: + case GGML_OP_CONCAT: { - if (src0->grad) { - src0->grad = - ggml_add_impl(ctx, - src0->grad, - ggml_mul(ctx, - ggml_sgn(ctx, src0), - tensor->grad), - inplace); - } - } break; - case GGML_OP_SGN: - { - if (src0->grad) { - // noop - } - } break; - case GGML_OP_NEG: - { - if (src0->grad) { - src0->grad = ggml_sub_impl(ctx, src0->grad, tensor->grad, inplace); - } - } break; - case GGML_OP_STEP: - { - if (src0->grad) { - // noop - } - } break; - case GGML_OP_TANH: - { - GGML_ASSERT(false); // TODO: not implemented - } break; - case GGML_OP_ELU: - { - GGML_ASSERT(false); // TODO: not implemented - } break; - case GGML_OP_RELU: - { - if (src0->grad) { - src0->grad = ggml_sub_impl(ctx, - src0->grad, - ggml_mul(ctx, - ggml_step(ctx, src0), - tensor->grad), - inplace); - } - } break; - case GGML_OP_GELU: - { - GGML_ASSERT(false); // TODO: not implemented - } break; - case GGML_OP_GELU_QUICK: - { - GGML_ASSERT(false); // TODO: not implemented - } break; - case GGML_OP_SILU: - { - // necessary for llama - if (src0->grad) { - src0->grad = ggml_add_impl(ctx, - src0->grad, - ggml_silu_back(ctx, src0, tensor->grad), - inplace); - } + GGML_ASSERT(false); // TODO: implement } break; case GGML_OP_SILU_BACK: { @@ -15506,6 +16079,10 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor { GGML_ASSERT(false); // TODO: not implemented } break; + case GGML_OP_GROUP_NORM: + { + GGML_ASSERT(false); // TODO: not implemented + } break; case GGML_OP_MUL_MAT: { // https://cs231n.github.io/optimization-2/#staged @@ -15576,12 +16153,10 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor } break; case GGML_OP_SET: { - GGML_ASSERT(ggml_nelements(tensor->opt[0]) == 5); - GGML_ASSERT(tensor->opt[0]->type == GGML_TYPE_I32); - const size_t nb1 = (( int32_t * ) tensor->opt[0]->data)[0]; - const size_t nb2 = (( int32_t * ) tensor->opt[0]->data)[1]; - const size_t nb3 = (( int32_t * ) tensor->opt[0]->data)[2]; - const size_t offset = (( int32_t * ) tensor->opt[0]->data)[3]; + const size_t nb1 = ((int32_t *) tensor->op_params)[0]; + const size_t nb2 = ((int32_t *) tensor->op_params)[1]; + const size_t nb3 = ((int32_t *) tensor->op_params)[2]; + const size_t offset = ((int32_t *) tensor->op_params)[3]; struct ggml_tensor * tensor_grad_view = NULL; @@ -15658,8 +16233,7 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor if (src0->grad) { size_t offset; - GGML_ASSERT(sizeof(offset) <= ggml_nbytes(tensor->opt[0])); - memcpy(&offset, tensor->opt[0]->data, sizeof(offset)); + memcpy(&offset, tensor->op_params, sizeof(offset)); size_t nb1 = tensor->nb[1]; size_t nb2 = tensor->nb[2]; @@ -15686,7 +16260,7 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor { // necessary for llama if (src0->grad) { - int32_t * axes = (int32_t *) tensor->opt[0]->data; + int32_t * axes = (int32_t *) tensor->op_params; int axis0 = axes[0] & 0x3; int axis1 = axes[1] & 0x3; int axis2 = axes[2] & 0x3; @@ -15742,33 +16316,23 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor { // necessary for llama if (src0->grad) { - assert(src1->type == GGML_TYPE_I32); - assert(ggml_nelements(src1) == 2); - const int n_past = ((int32_t *) src1->data)[0]; + const int n_past = ((int32_t *) tensor->op_params)[0]; src0->grad = ggml_add_impl(ctx, src0->grad, ggml_diag_mask_zero_impl(ctx, tensor->grad, n_past, false), inplace); } - if (src1->grad) { - // noop - } } break; case GGML_OP_DIAG_MASK_ZERO: { // necessary for llama if (src0->grad) { - assert(src1->type == GGML_TYPE_I32); - assert(ggml_nelements(src1) == 2); - const int n_past = ((int32_t *) src1->data)[0]; + const int n_past = ((int32_t *) tensor->op_params)[0]; src0->grad = ggml_add_impl(ctx, src0->grad, ggml_diag_mask_zero_impl(ctx, tensor->grad, n_past, false), inplace); } - if (src1->grad) { - // noop - } } break; case GGML_OP_SOFT_MAX: { @@ -15789,46 +16353,65 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor { // necessary for llama if (src0->grad) { - assert(src1->type == GGML_TYPE_I32); - assert(ggml_nelements(src1) == 4); - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; + const int n_past = ((int32_t *) tensor->op_params)[0]; + const int n_dims = ((int32_t *) tensor->op_params)[1]; + const int mode = ((int32_t *) tensor->op_params)[2]; + const int n_ctx = ((int32_t *) tensor->op_params)[3]; + float freq_base; + float freq_scale; + float xpos_base; + bool xpos_down; + memcpy(&freq_base, (int32_t *) tensor->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) tensor->op_params + 5, sizeof(float)); + memcpy(&xpos_base, (int32_t *) tensor->op_params + 6, sizeof(float)); + memcpy(&xpos_down, (int32_t *) tensor->op_params + 7, sizeof(bool)); + src0->grad = ggml_add_impl(ctx, src0->grad, ggml_rope_back(ctx, tensor->grad, n_past, n_dims, - mode), + mode, + n_ctx, + freq_base, + freq_scale, + xpos_base, + xpos_down), inplace); } - if (src1->grad) { - // noop - } } break; case GGML_OP_ROPE_BACK: { if (src0->grad) { - assert(src1->type == GGML_TYPE_I32); - assert(ggml_nelements(src1) == 4); - const int n_past = ((int32_t *) src1->data)[0]; - const int n_dims = ((int32_t *) src1->data)[1]; - const int mode = ((int32_t *) src1->data)[2]; - const int n_ctx = ((int32_t *) src1->data)[3]; + const int n_past = ((int32_t *) tensor->op_params)[0]; + const int n_dims = ((int32_t *) tensor->op_params)[1]; + const int mode = ((int32_t *) tensor->op_params)[2]; + const int n_ctx = ((int32_t *) tensor->op_params)[3]; + float freq_base; + float freq_scale; + float xpos_base; + bool xpos_down; + memcpy(&freq_base, (int32_t *) tensor->op_params + 4, sizeof(float)); + memcpy(&freq_scale, (int32_t *) tensor->op_params + 5, sizeof(float)); + memcpy(&xpos_base, (int32_t *) tensor->op_params + 6, sizeof(float)); + memcpy(&xpos_down, (int32_t *) tensor->op_params + 7, sizeof(bool)); + src0->grad = ggml_add_impl(ctx, src0->grad, - ggml_rope(ctx, + ggml_rope_impl(ctx, tensor->grad, n_past, n_dims, mode, - n_ctx), + n_ctx, + freq_base, + freq_scale, + xpos_base, + xpos_down, + false), inplace); } - if (src1->grad) { - // noop - } } break; case GGML_OP_ALIBI: { @@ -15846,18 +16429,34 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor { GGML_ASSERT(false); // TODO: not implemented } break; + case GGML_OP_CONV_TRANSPOSE_2D: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_OP_POOL_1D: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_OP_POOL_2D: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_OP_UPSCALE: + { + GGML_ASSERT(false); // TODO: not implemented + } break; case GGML_OP_FLASH_ATTN: { struct ggml_tensor * flash_grad = NULL; - if (src0->grad || src1->grad || tensor->opt[0]->grad) { - int32_t t = ggml_get_i32_1d(tensor->opt[1], 0); + if (src0->grad || src1->grad || tensor->src[2]->grad) { + int32_t t = ggml_get_op_params_i32(tensor, 0); GGML_ASSERT(t == 0 || t == 1); bool masked = t != 0; flash_grad = ggml_flash_attn_back(ctx, src0, src1, - tensor->opt[0], + tensor->src[2], tensor->grad, masked); } @@ -15954,7 +16553,7 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor inplace); } - struct ggml_tensor * opt0 = tensor->opt[0]; + struct ggml_tensor * opt0 = tensor->src[2]; if (opt0->grad) { struct ggml_tensor * grad_v = NULL; @@ -16013,8 +16612,87 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor } break; case GGML_OP_WIN_PART: case GGML_OP_WIN_UNPART: + case GGML_OP_UNARY: + { + switch (ggml_get_unary_op(tensor)) { + case GGML_UNARY_OP_ABS: + { + if (src0->grad) { + src0->grad = + ggml_add_impl(ctx, + src0->grad, + ggml_mul(ctx, + ggml_sgn(ctx, src0), + tensor->grad), + inplace); + } + } break; + case GGML_UNARY_OP_SGN: + { + if (src0->grad) { + // noop + } + } break; + case GGML_UNARY_OP_NEG: + { + if (src0->grad) { + src0->grad = ggml_sub_impl(ctx, src0->grad, tensor->grad, inplace); + } + } break; + case GGML_UNARY_OP_STEP: + { + if (src0->grad) { + // noop + } + } break; + case GGML_UNARY_OP_TANH: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_UNARY_OP_ELU: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_UNARY_OP_RELU: + { + if (src0->grad) { + src0->grad = ggml_add_impl(ctx, + src0->grad, + ggml_mul(ctx, + ggml_step(ctx, src0), + tensor->grad), + inplace); + } + } break; + case GGML_UNARY_OP_GELU: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_UNARY_OP_GELU_QUICK: + { + GGML_ASSERT(false); // TODO: not implemented + } break; + case GGML_UNARY_OP_SILU: + { + // necessary for llama + if (src0->grad) { + src0->grad = ggml_add_impl(ctx, + src0->grad, + ggml_silu_back(ctx, src0, tensor->grad), + inplace); + } + } break; + default: + GGML_ASSERT(false); + } + } break; + case GGML_OP_GET_REL_POS: + case GGML_OP_ADD_REL_POS: case GGML_OP_MAP_UNARY: case GGML_OP_MAP_BINARY: + case GGML_OP_MAP_CUSTOM1_F32: + case GGML_OP_MAP_CUSTOM2_F32: + case GGML_OP_MAP_CUSTOM3_F32: case GGML_OP_MAP_CUSTOM1: case GGML_OP_MAP_CUSTOM2: case GGML_OP_MAP_CUSTOM3: @@ -16048,6 +16726,34 @@ static void ggml_compute_backward(struct ggml_context * ctx, struct ggml_tensor } } +static_assert(GGML_GRAPH_HASHTABLE_SIZE > GGML_MAX_NODES * 2, "GGML_GRAPH_HT_SIZE is too small"); + +static size_t hash(void * p) { + return (size_t)p % GGML_GRAPH_HASHTABLE_SIZE; +} + +static bool hash_insert(void * hash_table[], void * p) { + size_t h = hash(p); + + // linear probing + size_t i = h; + while (hash_table[i] != NULL && hash_table[i] != p) { + i = (i + 1) % GGML_GRAPH_HASHTABLE_SIZE; + if (i == h) { + // hash table is full + GGML_ASSERT(false); + } + } + + if (hash_table[i] == p) { + return true; + } + + // insert + hash_table[i] = p; + return false; +} + static void ggml_visit_parents(struct ggml_cgraph * cgraph, struct ggml_tensor * node) { if (node->grad == NULL) { // this usually happens when we generate intermediate nodes from constants in the backward pass @@ -16058,29 +16764,13 @@ static void ggml_visit_parents(struct ggml_cgraph * cgraph, struct ggml_tensor * } // check if already visited - for (int i = 0; i < cgraph->n_nodes; i++) { - if (cgraph->nodes[i] == node) { - return; - } + if (hash_insert(cgraph->visited_hash_table, node)) { + return; } - for (int i = 0; i < cgraph->n_leafs; i++) { - if (cgraph->leafs[i] == node) { - return; - } - } - - if (node->src0) { - ggml_visit_parents(cgraph, node->src0); - } - - if (node->src1) { - ggml_visit_parents(cgraph, node->src1); - } - - for (int i = 0; i < GGML_MAX_OPT; ++i) { - if (node->opt[i]) { - ggml_visit_parents(cgraph, node->opt[i]); + for (int i = 0; i < GGML_MAX_SRC; ++i) { + if (node->src[i]) { + ggml_visit_parents(cgraph, node->src[i]); } } @@ -16135,12 +16825,10 @@ struct ggml_cgraph ggml_build_forward(struct ggml_tensor * tensor) { struct ggml_cgraph result = { /*.n_nodes =*/ 0, /*.n_leafs =*/ 0, - /*.n_threads =*/ GGML_DEFAULT_N_THREADS, - /*.work_size =*/ 0, - /*.work =*/ NULL, /*.nodes =*/ { NULL }, /*.grads =*/ { NULL }, /*.leafs =*/ { NULL }, + /*.hash_table =*/ { NULL }, /*.perf_runs =*/ 0, /*.perf_cycles =*/ 0, /*.perf_time_us =*/ 0, @@ -16182,13 +16870,42 @@ struct ggml_cgraph ggml_build_backward(struct ggml_context * ctx, struct ggml_cg if (node->is_param) { GGML_PRINT_DEBUG("%s: found root node %p\n", __func__, (void *) node); - ggml_build_forward_impl(&result, node->grad, true); + ggml_build_forward_expand(&result, node->grad); } } return result; } +struct ggml_cgraph * ggml_new_graph(struct ggml_context * ctx) { + struct ggml_object * obj = ggml_new_object(ctx, GGML_OBJECT_GRAPH, GGML_GRAPH_SIZE); + struct ggml_cgraph * cgraph = (struct ggml_cgraph *) ((char *) ctx->mem_buffer + obj->offs); + + *cgraph = (struct ggml_cgraph) { + /*.n_nodes =*/ 0, + /*.n_leafs =*/ 0, + /*.nodes =*/ { NULL }, + /*.grads =*/ { NULL }, + /*.leafs =*/ { NULL }, + /*.hash_table =*/ { NULL }, + /*.perf_runs =*/ 0, + /*.perf_cycles =*/ 0, + /*.perf_time_us =*/ 0, + }; + + return cgraph; +} + +struct ggml_cgraph * ggml_build_forward_ctx(struct ggml_context * ctx, struct ggml_tensor * tensor) { + struct ggml_cgraph * cgraph = ggml_new_graph(ctx); + ggml_build_forward_impl(cgraph, tensor, false); + return cgraph; +} + +size_t ggml_graph_overhead(void) { + return GGML_OBJECT_SIZE + GGML_PAD(GGML_GRAPH_SIZE, GGML_MEM_ALIGN); +} + // // thread data // @@ -16254,7 +16971,7 @@ typedef pthread_t ggml_thread_t; // Android's libc implementation "bionic" does not support setting affinity #if defined(__linux__) && !defined(__BIONIC__) -void set_numa_thread_affinity(int thread_n, int n_threads) { +static void set_numa_thread_affinity(int thread_n, int n_threads) { if (!ggml_is_numa()) { return; } @@ -16279,7 +16996,7 @@ void set_numa_thread_affinity(int thread_n, int n_threads) { CPU_FREE(cpus); } -void clear_numa_thread_affinity(void) { +static void clear_numa_thread_affinity(void) { if (!ggml_is_numa()) { return; } @@ -16303,21 +17020,25 @@ void clear_numa_thread_affinity(void) { #else // TODO: Windows etc. // (the linux implementation may also work on BSD, someone should test) -void set_numa_thread_affinity(int thread_n, int n_threads) { UNUSED(thread_n); UNUSED(n_threads); } -void clear_numa_thread_affinity(void) {} +static void set_numa_thread_affinity(int thread_n, int n_threads) { UNUSED(thread_n); UNUSED(n_threads); } +static void clear_numa_thread_affinity(void) {} #endif struct ggml_compute_state_shared { - struct ggml_cgraph * cgraph; + const struct ggml_cgraph * cgraph; + const struct ggml_cplan * cplan; int64_t perf_node_start_cycles; int64_t perf_node_start_time_us; - int n_threads; + const int n_threads; // synchronization primitives atomic_int n_active; // num active threads atomic_int node_n; // active graph node + + bool (*abort_callback)(void * data); // abort ggml_graph_compute when true + void * abort_callback_data; }; struct ggml_compute_state { @@ -16337,14 +17058,22 @@ static void ggml_graph_compute_perf_stats_node(struct ggml_tensor * node, const static thread_ret_t ggml_graph_compute_thread(void * data) { struct ggml_compute_state * state = (struct ggml_compute_state *) data; - struct ggml_cgraph * cgraph = state->shared->cgraph; - const int n_threads = state->shared->n_threads; + const struct ggml_cgraph * cgraph = state->shared->cgraph; + const struct ggml_cplan * cplan = state->shared->cplan; + + const int * n_tasks_arr = cplan->n_tasks; + const int n_threads = state->shared->n_threads; + set_numa_thread_affinity(state->ith, n_threads); int node_n = -1; while (true) { + if (cplan->abort_callback && cplan->abort_callback(cplan->abort_callback_data)) { + state->shared->node_n += 1; + return (thread_ret_t) GGML_EXIT_ABORTED; + } if (atomic_fetch_sub(&state->shared->n_active, 1) == 1) { // all other threads are finished and spinning // do finalize and init here so we don't have synchronize again @@ -16352,18 +17081,18 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { /*.type =*/ GGML_TASK_FINALIZE, /*.ith =*/ 0, /*.nth =*/ 0, - /*.wsize =*/ cgraph->work ? ggml_nbytes(cgraph->work) : 0, - /*.wdata =*/ cgraph->work ? cgraph->work->data : NULL, + /*.wsize =*/ cplan->work_size, + /*.wdata =*/ cplan->work_data, }; if (node_n != -1) { /* FINALIZE */ struct ggml_tensor * node = state->shared->cgraph->nodes[node_n]; if (GGML_OP_HAS_FINALIZE[node->op]) { - params.nth = node->n_tasks; + params.nth = n_tasks_arr[node_n]; ggml_compute_forward(¶ms, node); - ggml_graph_compute_perf_stats_node(node, state->shared); } + ggml_graph_compute_perf_stats_node(node, state->shared); } // distribute new work or execute it direct if 1T @@ -16371,11 +17100,12 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { GGML_PRINT_DEBUG_5("%s: %d/%d\n", __func__, node_n, cgraph->n_nodes); struct ggml_tensor * node = cgraph->nodes[node_n]; + const int n_tasks = n_tasks_arr[node_n]; state->shared->perf_node_start_cycles = ggml_perf_cycles(); state->shared->perf_node_start_time_us = ggml_perf_time_us(); - params.nth = node->n_tasks; + params.nth = n_tasks; /* INIT */ if (GGML_OP_HAS_INIT[node->op]) { @@ -16383,7 +17113,7 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { ggml_compute_forward(¶ms, node); } - if (node->n_tasks == 1) { + if (n_tasks == 1) { // TODO: maybe push node_n to the atomic but if other threads see n_tasks is 1, // they do something more efficient than spinning (?) params.type = GGML_TASK_COMPUTE; @@ -16392,11 +17122,16 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { if (GGML_OP_HAS_FINALIZE[node->op]) { params.type = GGML_TASK_FINALIZE; ggml_compute_forward(¶ms, node); - ggml_graph_compute_perf_stats_node(node, state->shared); } + + ggml_graph_compute_perf_stats_node(node, state->shared); } else { break; } + + if (cplan->abort_callback && cplan->abort_callback(cplan->abort_callback_data)) { + break; + } } atomic_store(&state->shared->n_active, n_threads); @@ -16405,7 +17140,7 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { // wait for other threads to finish const int last = node_n; do { - sched_yield(); + //sched_yield(); node_n = atomic_load(&state->shared->node_n); } while (node_n == last); } @@ -16415,384 +17150,465 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { /* COMPUTE */ struct ggml_tensor * node = cgraph->nodes[node_n]; + const int n_tasks = n_tasks_arr[node_n]; struct ggml_compute_params params = { /*.type =*/ GGML_TASK_COMPUTE, /*.ith =*/ state->ith, - /*.nth =*/ node->n_tasks, - /*.wsize =*/ cgraph->work ? ggml_nbytes(cgraph->work) : 0, - /*.wdata =*/ cgraph->work ? cgraph->work->data : NULL, + /*.nth =*/ n_tasks, + /*.wsize =*/ cplan->work_size, + /*.wdata =*/ cplan->work_data, }; - if (state->ith < node->n_tasks) { + if (state->ith < n_tasks) { ggml_compute_forward(¶ms, node); } } - return 0; + return GGML_EXIT_SUCCESS; } -void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph) { - const int n_threads = cgraph->n_threads; +struct ggml_cplan ggml_graph_plan(struct ggml_cgraph * cgraph, int n_threads) { + if (n_threads <= 0) { + n_threads = GGML_DEFAULT_N_THREADS; + } + + size_t work_size = 0; + + struct ggml_cplan cplan; + memset(&cplan, 0, sizeof(struct ggml_cplan)); + + // thread scheduling for the different operations + work buffer size estimation + for (int i = 0; i < cgraph->n_nodes; i++) { + int n_tasks = 1; + + struct ggml_tensor * node = cgraph->nodes[i]; + + switch (node->op) { + case GGML_OP_CPY: + case GGML_OP_DUP: + { + n_tasks = n_threads; + + size_t cur = 0; + if (ggml_is_quantized(node->type)) { + cur = ggml_type_size(GGML_TYPE_F32) * node->ne[0] * n_tasks; + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_ADD: + case GGML_OP_ADD1: + { + n_tasks = n_threads; + + size_t cur = 0; + + if (ggml_is_quantized(node->src[0]->type)) { + cur = ggml_type_size(GGML_TYPE_F32) * node->src[0]->ne[0] * n_tasks; + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_ACC: + { + n_tasks = n_threads; + + size_t cur = 0; + + if (ggml_is_quantized(node->src[0]->type)) { + cur = ggml_type_size(GGML_TYPE_F32) * node->src[1]->ne[0] * n_tasks; + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_SUB: + case GGML_OP_DIV: + case GGML_OP_SQR: + case GGML_OP_SQRT: + case GGML_OP_LOG: + case GGML_OP_SUM: + case GGML_OP_SUM_ROWS: + case GGML_OP_MEAN: + case GGML_OP_ARGMAX: + case GGML_OP_REPEAT: + case GGML_OP_REPEAT_BACK: + { + n_tasks = 1; + } break; + + case GGML_OP_UNARY: + { + switch (ggml_get_unary_op(node)) { + case GGML_UNARY_OP_ABS: + case GGML_UNARY_OP_SGN: + case GGML_UNARY_OP_NEG: + case GGML_UNARY_OP_STEP: + case GGML_UNARY_OP_TANH: + case GGML_UNARY_OP_ELU: + case GGML_UNARY_OP_RELU: + { + n_tasks = 1; + } break; + + case GGML_UNARY_OP_GELU: + case GGML_UNARY_OP_GELU_QUICK: + case GGML_UNARY_OP_SILU: + { + n_tasks = n_threads; + } break; + } + } break; + case GGML_OP_SILU_BACK: + case GGML_OP_MUL: + case GGML_OP_NORM: + case GGML_OP_RMS_NORM: + case GGML_OP_RMS_NORM_BACK: + case GGML_OP_GROUP_NORM: + { + n_tasks = n_threads; + } break; + case GGML_OP_CONCAT: + case GGML_OP_MUL_MAT: + case GGML_OP_OUT_PROD: + { + n_tasks = n_threads; + + // TODO: use different scheduling for different matrix sizes + //const int nr0 = ggml_nrows(node->src[0]); + //const int nr1 = ggml_nrows(node->src[1]); + + //n_tasks = MIN(n_threads, MAX(1, nr0/128)); + //printf("nr0 = %8d, nr1 = %8d, nr0*nr1 = %8d, n_tasks%d\n", nr0, nr1, nr0*nr1, n_tasks); + + size_t cur = 0; + const enum ggml_type vec_dot_type = type_traits[node->src[0]->type].vec_dot_type; + +#if defined(GGML_USE_CUBLAS) + if (ggml_cuda_can_mul_mat(node->src[0], node->src[1], node)) { + n_tasks = 1; // TODO: this actually is doing nothing + // the threads are still spinning + } else +#elif defined(GGML_USE_CLBLAST) + if (ggml_cl_can_mul_mat(node->src[0], node->src[1], node)) { + n_tasks = 1; // TODO: this actually is doing nothing + // the threads are still spinning + cur = ggml_cl_mul_mat_get_wsize(node->src[0], node->src[1], node); + } else +#endif +#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) + if (ggml_compute_forward_mul_mat_use_blas(node->src[0], node->src[1], node)) { + n_tasks = 1; // TODO: this actually is doing nothing + // the threads are still spinning + if (node->src[0]->type != GGML_TYPE_F32) { + // here we need memory just for single 2D matrix from src0 + cur = ggml_type_size(GGML_TYPE_F32)*(node->src[0]->ne[0]*node->src[0]->ne[1]); + } + } else +#endif + if (node->src[1]->type != vec_dot_type) { + cur = ggml_type_size(vec_dot_type)*ggml_nelements(node->src[1])/ggml_blck_size(vec_dot_type); + } else { + cur = 0; + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_SCALE: + { + n_tasks = 1; + } break; + case GGML_OP_SET: + case GGML_OP_CONT: + case GGML_OP_RESHAPE: + case GGML_OP_VIEW: + case GGML_OP_PERMUTE: + case GGML_OP_TRANSPOSE: + case GGML_OP_GET_ROWS: + case GGML_OP_GET_ROWS_BACK: + case GGML_OP_DIAG: + { + n_tasks = 1; + } break; + case GGML_OP_DIAG_MASK_ZERO: + case GGML_OP_DIAG_MASK_INF: + case GGML_OP_SOFT_MAX: + case GGML_OP_SOFT_MAX_BACK: + case GGML_OP_ROPE: + case GGML_OP_ROPE_BACK: + case GGML_OP_ADD_REL_POS: + { + n_tasks = n_threads; + } break; + case GGML_OP_ALIBI: + { + n_tasks = 1; //TODO + } break; + case GGML_OP_CLAMP: + { + n_tasks = 1; //TODO + } break; + case GGML_OP_CONV_1D: + { + n_tasks = n_threads; + + GGML_ASSERT(node->src[0]->ne[3] == 1); + GGML_ASSERT(node->src[1]->ne[2] == 1); + GGML_ASSERT(node->src[1]->ne[3] == 1); + + size_t cur = 0; + const int nk = node->src[0]->ne[0]; + + if (node->src[0]->type == GGML_TYPE_F16 && + node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(ggml_fp16_t)*( + nk*ggml_up32(node->src[0]->ne[1])*node->src[0]->ne[2] + + ( 2*(nk/2) + node->src[1]->ne[0])*node->src[1]->ne[1] + ); + } else if (node->src[0]->type == GGML_TYPE_F32 && + node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(float)*( + nk*ggml_up32(node->src[0]->ne[1])*node->src[0]->ne[2] + + ( 2*(nk/2) + node->src[1]->ne[0])*node->src[1]->ne[1] + ); + } else { + GGML_ASSERT(false); + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_CONV_2D: + { + n_tasks = n_threads; + + const int64_t ne00 = node->src[0]->ne[0]; // W + const int64_t ne01 = node->src[0]->ne[1]; // H + const int64_t ne02 = node->src[0]->ne[2]; // C + const int64_t ne03 = node->src[0]->ne[3]; // N + + const int64_t ne10 = node->src[1]->ne[0]; // W + const int64_t ne11 = node->src[1]->ne[1]; // H + const int64_t ne12 = node->src[1]->ne[2]; // C + + const int64_t ne0 = node->ne[0]; + const int64_t ne1 = node->ne[1]; + const int64_t ne2 = node->ne[2]; + const int64_t nk = ne00*ne01; + const int64_t ew0 = nk * ne02; + + UNUSED(ne03); + UNUSED(ne2); + + size_t cur = 0; + + if (node->src[0]->type == GGML_TYPE_F16 && + node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(ggml_fp16_t)*(ne0*ne1*ew0); + } else if (node->src[0]->type == GGML_TYPE_F32 && + node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(float)* (ne10*ne11*ne12); + } else { + GGML_ASSERT(false); + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_CONV_TRANSPOSE_2D: + { + n_tasks = n_threads; + + const int64_t ne00 = node->src[0]->ne[0]; // W + const int64_t ne01 = node->src[0]->ne[1]; // H + const int64_t ne02 = node->src[0]->ne[2]; // Channels Out + const int64_t ne03 = node->src[0]->ne[3]; // Channels In + + const int64_t ne10 = node->src[1]->ne[0]; // W + const int64_t ne11 = node->src[1]->ne[1]; // H + const int64_t ne12 = node->src[1]->ne[2]; // Channels In + + size_t cur = 0; + cur += sizeof(ggml_fp16_t)*ne00*ne01*ne02*ne03; + cur += sizeof(ggml_fp16_t)*ne10*ne11*ne12; + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_POOL_1D: + case GGML_OP_POOL_2D: + { + n_tasks = 1; + } break; + case GGML_OP_UPSCALE: + { + n_tasks = n_threads; + } break; + case GGML_OP_FLASH_ATTN: + { + n_tasks = n_threads; + + size_t cur = 0; + + const int64_t ne11 = ggml_up(node->src[1]->ne[1], GGML_SOFT_MAX_UNROLL); + + if (node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(float)*ne11*n_tasks; // TODO: this can become (n_tasks-1) + cur += sizeof(float)*ne11*n_tasks; // this is overestimated by x2 + } + + if (node->src[1]->type == GGML_TYPE_F16) { + cur = sizeof(float)*ne11*n_tasks; // TODO: this can become (n_tasks-1) + cur += sizeof(float)*ne11*n_tasks; // this is overestimated by x2 + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_FLASH_FF: + { + n_tasks = n_threads; + + size_t cur = 0; + + if (node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(float)*node->src[1]->ne[1]*n_tasks; // TODO: this can become (n_tasks-1) + cur += sizeof(float)*node->src[1]->ne[1]*n_tasks; // this is overestimated by x2 + } + + if (node->src[1]->type == GGML_TYPE_F16) { + cur = sizeof(float)*node->src[1]->ne[1]*n_tasks; // TODO: this can become (n_tasks-1) + cur += sizeof(float)*node->src[1]->ne[1]*n_tasks; // this is overestimated by x2 + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_FLASH_ATTN_BACK: + { + n_tasks = n_threads; + + size_t cur = 0; + + const int64_t D = node->src[0]->ne[0]; + const int64_t ne11 = ggml_up(node->src[1]->ne[1], GGML_SOFT_MAX_UNROLL); + const int64_t mxDn = MAX(D, ne11) * 2; // *2 because of S and SM in ggml_compute_forward_flash_attn_back + if (node->src[1]->type == GGML_TYPE_F32) { + cur = sizeof(float)*mxDn*n_tasks; // TODO: this can become (n_tasks-1) + cur += sizeof(float)*mxDn*n_tasks; // this is overestimated by x2 + } + + if (node->src[1]->type == GGML_TYPE_F16) { + cur = sizeof(float)*mxDn*n_tasks; // TODO: this can become (n_tasks-1) + cur += sizeof(float)*mxDn*n_tasks; // this is overestimated by x2 + } + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_WIN_PART: + case GGML_OP_WIN_UNPART: + case GGML_OP_GET_REL_POS: + case GGML_OP_MAP_UNARY: + case GGML_OP_MAP_BINARY: + case GGML_OP_MAP_CUSTOM1_F32: + case GGML_OP_MAP_CUSTOM2_F32: + case GGML_OP_MAP_CUSTOM3_F32: + { + n_tasks = 1; + } break; + case GGML_OP_MAP_CUSTOM1: + { + struct ggml_map_custom1_op_params * p = (struct ggml_map_custom1_op_params *) node->op_params; + if (p->n_tasks == GGML_N_TASKS_MAX) { + n_tasks = n_threads; + } else { + n_tasks = MIN(p->n_tasks, n_threads); + } + } break; + case GGML_OP_MAP_CUSTOM2: + { + struct ggml_map_custom2_op_params * p = (struct ggml_map_custom2_op_params *) node->op_params; + if (p->n_tasks == GGML_N_TASKS_MAX) { + n_tasks = n_threads; + } else { + n_tasks = MIN(p->n_tasks, n_threads); + } + } break; + case GGML_OP_MAP_CUSTOM3: + { + struct ggml_map_custom3_op_params * p = (struct ggml_map_custom3_op_params *) node->op_params; + if (p->n_tasks == GGML_N_TASKS_MAX) { + n_tasks = n_threads; + } else { + n_tasks = MIN(p->n_tasks, n_threads); + } + } break; + case GGML_OP_CROSS_ENTROPY_LOSS: + { + n_tasks = n_threads; + + size_t cur = ggml_type_size(node->type)*(n_tasks + node->src[0]->ne[0]*n_tasks); + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_CROSS_ENTROPY_LOSS_BACK: + { + n_tasks = n_threads; + + size_t cur = ggml_type_size(node->type)*node->src[0]->ne[0]*n_tasks; + + work_size = MAX(work_size, cur); + } break; + case GGML_OP_NONE: + { + n_tasks = 1; + } break; + case GGML_OP_COUNT: + { + GGML_ASSERT(false); + } break; + } + + cplan.n_tasks[i] = n_tasks; + } + + if (work_size > 0) { + work_size += CACHE_LINE_SIZE*(n_threads - 1); + } + + cplan.n_threads = n_threads; + cplan.work_size = work_size; + cplan.work_data = NULL; + + return cplan; +} + +int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan) { + { + GGML_ASSERT(cplan); + GGML_ASSERT(cplan->n_threads > 0); + + if (cplan->work_size > 0) { + GGML_ASSERT(cplan->work_data); + } + + for (int i = 0; i < cgraph->n_nodes; ++i) { + if (cgraph->nodes[i]->op != GGML_OP_NONE) { + GGML_ASSERT(cplan->n_tasks[i] > 0); + } + } + } + + const int n_threads = cplan->n_threads; struct ggml_compute_state_shared state_shared = { /*.cgraph =*/ cgraph, + /*.cgraph_plan =*/ cplan, /*.perf_node_start_cycles =*/ 0, /*.perf_node_start_time_us =*/ 0, /*.n_threads =*/ n_threads, /*.n_active =*/ n_threads, /*.node_n =*/ -1, + /*.abort_callback =*/ NULL, + /*.abort_callback_data =*/ NULL, }; struct ggml_compute_state * workers = alloca(sizeof(struct ggml_compute_state)*n_threads); - // initialize tasks + work buffer - { - size_t work_size = 0; - - // thread scheduling for the different operations - for (int i = 0; i < cgraph->n_nodes; i++) { - struct ggml_tensor * node = cgraph->nodes[i]; - - switch (node->op) { - case GGML_OP_CPY: - case GGML_OP_DUP: - { - node->n_tasks = n_threads; - - size_t cur = 0; - if (ggml_is_quantized(node->type)) { - cur = GGML_TYPE_SIZE[GGML_TYPE_F32] * node->ne[0] * n_threads; - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_ADD: - case GGML_OP_ADD1: - { - node->n_tasks = n_threads; - - size_t cur = 0; - - if (ggml_is_quantized(node->src0->type)) { - cur = GGML_TYPE_SIZE[GGML_TYPE_F32] * node->src0->ne[0] * n_threads; - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_ACC: - { - node->n_tasks = n_threads; - - size_t cur = 0; - - if (ggml_is_quantized(node->src0->type)) { - cur = GGML_TYPE_SIZE[GGML_TYPE_F32] * node->src1->ne[0] * n_threads; - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_SUB: - case GGML_OP_DIV: - case GGML_OP_SQR: - case GGML_OP_SQRT: - case GGML_OP_LOG: - case GGML_OP_SUM: - case GGML_OP_SUM_ROWS: - case GGML_OP_MEAN: - case GGML_OP_ARGMAX: - case GGML_OP_REPEAT: - case GGML_OP_REPEAT_BACK: - case GGML_OP_ABS: - case GGML_OP_SGN: - case GGML_OP_NEG: - case GGML_OP_STEP: - case GGML_OP_TANH: - case GGML_OP_ELU: - case GGML_OP_RELU: - { - node->n_tasks = 1; - } break; - case GGML_OP_MUL: - case GGML_OP_GELU: - case GGML_OP_GELU_QUICK: - case GGML_OP_SILU: - case GGML_OP_SILU_BACK: - case GGML_OP_NORM: - case GGML_OP_RMS_NORM: - case GGML_OP_RMS_NORM_BACK: - { - node->n_tasks = n_threads; - } break; - case GGML_OP_MUL_MAT: - case GGML_OP_OUT_PROD: - { - node->n_tasks = n_threads; - - // TODO: use different scheduling for different matrix sizes - //const int nr0 = ggml_nrows(node->src0); - //const int nr1 = ggml_nrows(node->src1); - - //node->n_tasks = MIN(n_threads, MAX(1, nr0/128)); - //printf("nr0 = %8d, nr1 = %8d, nr0*nr1 = %8d, n_tasks = %d\n", nr0, nr1, nr0*nr1, node->n_tasks); - - size_t cur = 0; - -#if defined(GGML_USE_CUBLAS) - if (ggml_cuda_can_mul_mat(node->src0, node->src1, node)) { - node->n_tasks = 1; // TODO: this actually is doing nothing - // the threads are still spinning - } - else -#elif defined(GGML_USE_CLBLAST) - if (ggml_cl_can_mul_mat(node->src0, node->src1, node)) { - node->n_tasks = 1; // TODO: this actually is doing nothing - // the threads are still spinning - cur = ggml_cl_mul_mat_get_wsize(node->src0, node->src1, node); - } - else -#endif - if (node->src0->type == GGML_TYPE_F16 && node->src1->type == GGML_TYPE_F32) { -#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) - if (ggml_compute_forward_mul_mat_use_blas(node->src0, node->src1, node)) { - node->n_tasks = 1; // TODO: this actually is doing nothing - // the threads are still spinning - // here we need memory just for single 2D matrix from src0 - cur = GGML_TYPE_SIZE[GGML_TYPE_F32]*(node->src0->ne[0]*node->src0->ne[1]); - } else { - cur = GGML_TYPE_SIZE[GGML_TYPE_F16]*ggml_nelements(node->src1); - } -#else - cur = GGML_TYPE_SIZE[GGML_TYPE_F16]*ggml_nelements(node->src1); -#endif - } else if (node->src0->type == GGML_TYPE_F32 && node->src1->type == GGML_TYPE_F32) { - cur = 0; -#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) - if (ggml_compute_forward_mul_mat_use_blas(node->src0, node->src1, node)) { - node->n_tasks = 1; - } -#endif - } else if (ggml_is_quantized(node->src0->type) && node->src1->type == GGML_TYPE_F32) { -#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS) - if (ggml_compute_forward_mul_mat_use_blas(node->src0, node->src1, node)) { - node->n_tasks = 1; - cur = GGML_TYPE_SIZE[GGML_TYPE_F32]*(node->src0->ne[0]*node->src0->ne[1]); - } else -#endif - { - const enum ggml_type type_q = quantize_fns[node->src0->type].vec_dot_type; - cur = GGML_TYPE_SIZE[type_q]*ggml_nelements(node->src1)/GGML_BLCK_SIZE[type_q]; - } - } else { - GGML_ASSERT(false); - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_SCALE: - { - node->n_tasks = 1; - } break; - case GGML_OP_SET: - case GGML_OP_CONT: - case GGML_OP_RESHAPE: - case GGML_OP_VIEW: - case GGML_OP_PERMUTE: - case GGML_OP_TRANSPOSE: - case GGML_OP_GET_ROWS: - case GGML_OP_GET_ROWS_BACK: - case GGML_OP_DIAG: - case GGML_OP_DIAG_MASK_ZERO: - { - node->n_tasks = 1; - } break; - case GGML_OP_DIAG_MASK_INF: - case GGML_OP_SOFT_MAX: - case GGML_OP_SOFT_MAX_BACK: - case GGML_OP_ROPE: - case GGML_OP_ROPE_BACK: - { - node->n_tasks = n_threads; - } break; - case GGML_OP_ALIBI: - { - node->n_tasks = 1; //TODO - } break; - case GGML_OP_CLAMP: - { - node->n_tasks = 1; //TODO - } break; - case GGML_OP_CONV_1D: - { - node->n_tasks = n_threads; - - GGML_ASSERT(node->src0->ne[3] == 1); - GGML_ASSERT(node->src1->ne[2] == 1); - GGML_ASSERT(node->src1->ne[3] == 1); - - size_t cur = 0; - const int nk = node->src0->ne[0]; - - if (node->src0->type == GGML_TYPE_F16 && - node->src1->type == GGML_TYPE_F32) { - cur = sizeof(ggml_fp16_t)*( - nk*ggml_up32(node->src0->ne[1])*node->src0->ne[2] + - ( 2*(nk/2) + node->src1->ne[0])*node->src1->ne[1] - ); - } else if (node->src0->type == GGML_TYPE_F32 && - node->src1->type == GGML_TYPE_F32) { - cur = sizeof(float)*( - nk*ggml_up32(node->src0->ne[1])*node->src0->ne[2] + - ( 2*(nk/2) + node->src1->ne[0])*node->src1->ne[1] - ); - } else { - GGML_ASSERT(false); - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_CONV_2D: - { - node->n_tasks = n_threads; - - GGML_ASSERT(node->src1->ne[3] == 1); - - const int64_t ne00 = node->src0->ne[0]; // W - const int64_t ne01 = node->src0->ne[1]; // H - const int64_t ne02 = node->src0->ne[2]; // C - const int64_t ne03 = node->src0->ne[3]; // N - - const int64_t ne10 = node->src1->ne[0]; // W - const int64_t ne11 = node->src1->ne[1]; // H - const int64_t ne12 = node->src1->ne[2]; // C - - const int64_t nk = ne00*ne01; - - UNUSED(ne02); - UNUSED(ne03); - UNUSED(nk); - - size_t cur = 0; - - if (node->src0->type == GGML_TYPE_F16 && - node->src1->type == GGML_TYPE_F32) { - cur = sizeof(ggml_fp16_t)*(ne10*ne11*ne12); - } else if (node->src0->type == GGML_TYPE_F32 && - node->src1->type == GGML_TYPE_F32) { - cur = sizeof(float)* (ne10*ne11*ne12); - } else { - GGML_ASSERT(false); - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_FLASH_ATTN: - { - node->n_tasks = n_threads; - - size_t cur = 0; - - const int64_t ne11 = ggml_up(node->src1->ne[1], GGML_SOFT_MAX_UNROLL); - - if (node->src1->type == GGML_TYPE_F32) { - cur = sizeof(float)*ne11*node->n_tasks; // TODO: this can become (n_tasks-1) - cur += sizeof(float)*ne11*node->n_tasks; // this is overestimated by x2 - } - - if (node->src1->type == GGML_TYPE_F16) { - cur = sizeof(float)*ne11*node->n_tasks; // TODO: this can become (n_tasks-1) - cur += sizeof(float)*ne11*node->n_tasks; // this is overestimated by x2 - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_FLASH_FF: - { - node->n_tasks = n_threads; - - size_t cur = 0; - - if (node->src1->type == GGML_TYPE_F32) { - cur = sizeof(float)*node->src1->ne[1]*node->n_tasks; // TODO: this can become (n_tasks-1) - cur += sizeof(float)*node->src1->ne[1]*node->n_tasks; // this is overestimated by x2 - } - - if (node->src1->type == GGML_TYPE_F16) { - cur = sizeof(float)*node->src1->ne[1]*node->n_tasks; // TODO: this can become (n_tasks-1) - cur += sizeof(float)*node->src1->ne[1]*node->n_tasks; // this is overestimated by x2 - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_FLASH_ATTN_BACK: - { - node->n_tasks = n_threads; - - size_t cur = 0; - - const int64_t D = node->src0->ne[0]; - const int64_t ne11 = ggml_up(node->src1->ne[1], GGML_SOFT_MAX_UNROLL); - const int64_t mxDn = MAX(D, ne11) * 2; // *2 because of S and SM in ggml_compute_forward_flash_attn_back - if (node->src1->type == GGML_TYPE_F32) { - cur = sizeof(float)*mxDn*node->n_tasks; // TODO: this can become (n_tasks-1) - cur += sizeof(float)*mxDn*node->n_tasks; // this is overestimated by x2 - } - - if (node->src1->type == GGML_TYPE_F16) { - cur = sizeof(float)*mxDn*node->n_tasks; // TODO: this can become (n_tasks-1) - cur += sizeof(float)*mxDn*node->n_tasks; // this is overestimated by x2 - } - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_WIN_PART: - case GGML_OP_WIN_UNPART: - case GGML_OP_MAP_UNARY: - case GGML_OP_MAP_BINARY: - case GGML_OP_MAP_CUSTOM1: - case GGML_OP_MAP_CUSTOM2: - case GGML_OP_MAP_CUSTOM3: - { - node->n_tasks = 1; - } break; - case GGML_OP_CROSS_ENTROPY_LOSS: - { - node->n_tasks = n_threads; - - size_t cur = ggml_type_size(node->type)*(node->n_tasks + node->src0->ne[0]*node->n_tasks); - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_CROSS_ENTROPY_LOSS_BACK: - { - node->n_tasks = n_threads; - - size_t cur = ggml_type_size(node->type)*node->src0->ne[0]*node->n_tasks; - - work_size = MAX(work_size, cur); - } break; - case GGML_OP_NONE: - { - node->n_tasks = 1; - } break; - case GGML_OP_COUNT: - { - GGML_ASSERT(false); - } break; - } - } - - if (cgraph->work != NULL && work_size > cgraph->work_size) { - GGML_ASSERT(false); // TODO: better handling - } - - if (work_size > 0 && cgraph->work == NULL) { - cgraph->work_size = work_size + CACHE_LINE_SIZE*(n_threads - 1); - - GGML_PRINT_DEBUG("%s: allocating work buffer for graph (%zu bytes)\n", __func__, cgraph->work_size); - cgraph->work = ggml_new_tensor_1d(ctx, GGML_TYPE_I8, cgraph->work_size); - } - } - // create thread pool if (n_threads > 1) { for (int j = 1; j < n_threads; ++j) { @@ -16804,8 +17620,10 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph) const int rc = ggml_thread_create(&workers[j].thrd, NULL, ggml_graph_compute_thread, &workers[j]); GGML_ASSERT(rc == 0); + UNUSED(rc); } } + workers[0].ith = 0; workers[0].shared = &state_shared; @@ -16813,12 +17631,12 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph) const int64_t perf_start_time_us = ggml_perf_time_us(); // this is a work thread too - ggml_graph_compute_thread(&workers[0]); + int compute_status = (size_t) ggml_graph_compute_thread(&workers[0]); // don't leave affinity set on the main thread clear_numa_thread_affinity(); - // join thread pool + // join or kill thread pool if (n_threads > 1) { for (int j = 1; j < n_threads; j++) { const int rc = ggml_thread_join(workers[j].thrd, NULL); @@ -16842,6 +17660,8 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph) (double) perf_time_us_cur / 1000.0, (double) cgraph->perf_time_us / 1000.0 / cgraph->perf_runs); } + + return compute_status; } void ggml_graph_reset(struct ggml_cgraph * cgraph) { @@ -16854,6 +17674,16 @@ void ggml_graph_reset(struct ggml_cgraph * cgraph) { } } +void ggml_graph_compute_with_ctx(struct ggml_context * ctx, struct ggml_cgraph * cgraph, int n_threads) { + struct ggml_cplan cplan = ggml_graph_plan(cgraph, n_threads); + + struct ggml_object * obj = ggml_new_object(ctx, GGML_OBJECT_WORK_BUFFER, cplan.work_size); + + cplan.work_data = (uint8_t *)ctx->mem_buffer + obj->offs; + + ggml_graph_compute(cgraph, &cplan); +} + struct ggml_tensor * ggml_graph_get_tensor(struct ggml_cgraph * cgraph, const char * name) { for (int i = 0; i < cgraph->n_leafs; i++) { struct ggml_tensor * leaf = cgraph->leafs[i]; @@ -16892,28 +17722,24 @@ static void ggml_graph_export_node(const struct ggml_tensor * tensor, const char const int64_t * ne = tensor->ne; const size_t * nb = tensor->nb; - fprintf(fout, "%-6s %-6s %-12s %8d %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %16zu %16zu %16zu %16zu %8d %16p %32s\n", + fprintf(fout, "%-6s %-6s %-12s %8d %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %16zu %16zu %16zu %16zu %16p %32s\n", arg, ggml_type_name(tensor->type), ggml_op_name (tensor->op), tensor->n_dims, ne[0], ne[1], ne[2], ne[3], nb[0], nb[1], nb[2], nb[3], - tensor->n_tasks, tensor->data, tensor->name); } void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) { - //assert(cgraph->work == NULL); - //assert(cgraph->work_size == 0); - uint64_t size_eval = 0; // compute size of intermediate results // TODO: does not take into account scratch buffers !!!! for (int i = 0; i < cgraph->n_nodes; ++i) { - size_eval += ggml_nbytes(cgraph->nodes[i]); + size_eval += ggml_nbytes_pad(cgraph->nodes[i]); } // print @@ -16936,8 +17762,8 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) { ggml_graph_export_leaf(cgraph->leafs[i], fout); GGML_ASSERT(cgraph->leafs[i]->op == GGML_OP_NONE); - GGML_ASSERT(cgraph->leafs[i]->src0 == NULL); - GGML_ASSERT(cgraph->leafs[i]->src1 == NULL); + GGML_ASSERT(cgraph->leafs[i]->src[0] == NULL); + GGML_ASSERT(cgraph->leafs[i]->src[1] == NULL); } // header @@ -16948,17 +17774,9 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) { for (int i = 0; i < cgraph->n_nodes; ++i) { ggml_graph_export_node(cgraph->nodes[i], "DST", fout); - if (cgraph->nodes[i]->src0) { - ggml_graph_export_node(cgraph->nodes[i]->src0, "SRC0", fout); - } - - if (cgraph->nodes[i]->src1) { - ggml_graph_export_node(cgraph->nodes[i]->src1, "SRC1", fout); - } - - for (int j = 0; j < GGML_MAX_OPT; ++j) { - if (cgraph->nodes[i]->opt[j]) { - ggml_graph_export_node(cgraph->nodes[i]->opt[j], "OPT", fout); + for (int j = 0; j < GGML_MAX_SRC; ++j) { + if (cgraph->nodes[i]->src[j]) { + ggml_graph_export_node(cgraph->nodes[i]->src[j], "SRC", fout); } } @@ -17012,7 +17830,8 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) { fwrite(&nb, sizeof(uint64_t), 1, fout); } - fwrite(tensor->name, sizeof(char), GGML_MAX_NAME, fout); + fwrite(tensor->name, sizeof(char), GGML_MAX_NAME, fout); + fwrite(tensor->op_params, sizeof(char), GGML_MAX_OP_PARAMS, fout); // dump the data // TODO: pad this to 32 byte boundary @@ -17045,20 +17864,18 @@ void ggml_graph_export(const struct ggml_cgraph * cgraph, const char * fname) { fwrite(&nb, sizeof(uint64_t), 1, fout); } - fwrite(tensor->name, sizeof(char), GGML_MAX_NAME, fout); + fwrite(tensor->name, sizeof(char), GGML_MAX_NAME, fout); + fwrite(tensor->op_params, sizeof(char), GGML_MAX_OP_PARAMS, fout); // output the op arguments { - struct ggml_tensor * args[2 + GGML_MAX_OPT] = { NULL }; + struct ggml_tensor * args[GGML_MAX_SRC] = { NULL }; - args[0] = tensor->src0; - args[1] = tensor->src1; - - for (int j = 0; j < GGML_MAX_OPT; ++j) { - args[2 + j] = tensor->opt[j]; + for (int j = 0; j < GGML_MAX_SRC; ++j) { + args[j] = tensor->src[j]; } - for (int j = 0; j < 2 + GGML_MAX_OPT; ++j) { + for (int j = 0; j < GGML_MAX_SRC; ++j) { if (args[j]) { int32_t idx = -1; @@ -17229,7 +18046,8 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context ** tensor->op = (enum ggml_op) op; - memcpy(tensor->name, ptr, GGML_MAX_NAME); ptr += GGML_MAX_NAME; + memcpy(tensor->name, ptr, GGML_MAX_NAME); ptr += GGML_MAX_NAME; + memcpy(tensor->op_params, ptr, GGML_MAX_OP_PARAMS); ptr += GGML_MAX_OP_PARAMS; tensor->data = (void *) ptr; @@ -17274,14 +18092,15 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context ** nb[j] = nb_cur; } - const char * ptr_name = ptr; ptr += GGML_MAX_NAME; + const char * ptr_name = ptr; ptr += GGML_MAX_NAME; + const char * ptr_op_params = ptr; ptr += GGML_MAX_OP_PARAMS; - const int32_t * ptr_arg_idx = (const int32_t *) ptr; ptr += (2 + GGML_MAX_OPT)*sizeof(int32_t); + const int32_t * ptr_arg_idx = (const int32_t *) ptr; ptr += GGML_MAX_SRC*sizeof(int32_t); - struct ggml_tensor * args[2 + GGML_MAX_OPT] = { NULL }; + struct ggml_tensor * args[GGML_MAX_SRC] = { NULL }; // parse args - for (int j = 0; j < 2 + GGML_MAX_OPT; ++j) { + for (int j = 0; j < GGML_MAX_SRC; ++j) { const int32_t arg_idx = ptr_arg_idx[j]; if (arg_idx == -1) { @@ -17311,8 +18130,8 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context ** { tensor = ggml_view_4d(*ctx_eval, args[0], ne[0], ne[1], ne[2], ne[3], 0, 0, 0, 0); - uint64_t offs; - memcpy(&offs, args[2]->data, sizeof(offs)); + size_t offs; + memcpy(&offs, ptr_op_params, sizeof(offs)); tensor->data = ((char *) tensor->data) + offs; } break; @@ -17332,17 +18151,15 @@ struct ggml_cgraph ggml_graph_import(const char * fname, struct ggml_context ** } break; } - memcpy(tensor->name, ptr_name, GGML_MAX_NAME); + memcpy(tensor->name, ptr_name, GGML_MAX_NAME); + memcpy(tensor->op_params, ptr_op_params, GGML_MAX_OP_PARAMS); for (int j = 0; j < GGML_MAX_DIMS; ++j) { tensor->nb[j] = nb[j]; } - tensor->src0 = args[0]; - tensor->src1 = args[1]; - - for (int j = 0; j < GGML_MAX_OPT; ++j) { - tensor->opt[j] = args[2 + j]; + for (int j = 0; j < GGML_MAX_SRC; ++j) { + tensor->src[j] = args[j]; } result.nodes[i] = tensor; @@ -17360,9 +18177,6 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) { GGML_PRINT("=== GRAPH ===\n"); - GGML_PRINT_DEBUG("n_threads = %d\n", cgraph->n_threads); - GGML_PRINT_DEBUG("total work size = %zu bytes\n", cgraph->work_size); - GGML_PRINT("n_nodes = %d\n", cgraph->n_nodes); for (int i = 0; i < cgraph->n_nodes; i++) { struct ggml_tensor * node = cgraph->nodes[i]; @@ -17372,7 +18186,7 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) { GGML_PRINT(" - %3d: [ %5" PRId64 ", %5" PRId64 ", %5" PRId64 "] %16s %s (%3d) cpu = %7.3f / %7.3f ms, wall = %7.3f / %7.3f ms\n", i, node->ne[0], node->ne[1], node->ne[2], - GGML_OP_NAME[node->op], node->is_param ? "x" : node->grad ? "g" : " ", node->perf_runs, + ggml_op_name(node->op), node->is_param ? "x" : node->grad ? "g" : " ", node->perf_runs, (double) node->perf_cycles / (double) ggml_cycles_per_ms(), (double) node->perf_cycles / (double) ggml_cycles_per_ms() / (double) node->perf_runs, (double) node->perf_time_us / 1000.0, @@ -17386,7 +18200,7 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) { GGML_PRINT(" - %3d: [ %5" PRId64 ", %5" PRId64 "] %8s\n", i, node->ne[0], node->ne[1], - GGML_OP_NAME[node->op]); + ggml_op_name(node->op)); } for (int i = 0; i < GGML_OP_COUNT; i++) { @@ -17394,7 +18208,7 @@ void ggml_graph_print(const struct ggml_cgraph * cgraph) { continue; } - GGML_PRINT("perf_total_per_op_us[%16s] = %7.3f ms\n", GGML_OP_NAME[i], (double) perf_total_per_op_us[i] / 1000.0); + GGML_PRINT("perf_total_per_op_us[%16s] = %7.3f ms\n", ggml_op_name(i), (double) perf_total_per_op_us[i] / 1000.0); } GGML_PRINT("========================================\n"); @@ -17488,13 +18302,13 @@ void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph } if (node->n_dims == 2) { - fprintf(fp, "%d [%" PRId64 ", %" PRId64 "] | %s", i, node->ne[0], node->ne[1], GGML_OP_SYMBOL[node->op]); + fprintf(fp, "%d [%" PRId64 ", %" PRId64 "] | %s", i, node->ne[0], node->ne[1], ggml_op_symbol(node->op)); } else { - fprintf(fp, "%d [%" PRId64 ", %" PRId64 ", %" PRId64 "] | %s", i, node->ne[0], node->ne[1], node->ne[2], GGML_OP_SYMBOL[node->op]); + fprintf(fp, "%d [%" PRId64 ", %" PRId64 ", %" PRId64 "] | %s", i, node->ne[0], node->ne[1], node->ne[2], ggml_op_symbol(node->op)); } if (node->grad) { - fprintf(fp, " | %s\"; ]\n", GGML_OP_SYMBOL[node->grad->op]); + fprintf(fp, " | %s\"; ]\n", ggml_op_symbol(node->grad->op)); } else { fprintf(fp, "\"; ]\n"); } @@ -17541,19 +18355,11 @@ void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph for (int i = 0; i < gb->n_nodes; i++) { struct ggml_tensor * node = gb->nodes[i]; - if (node->src0) { - ggml_graph_dump_dot_node_edge(fp, gb, node, node->src0, "x"); - } - - if (node->src1) { - ggml_graph_dump_dot_node_edge(fp, gb, node, node->src1, "y"); - } - - for (int j = 0; j < GGML_MAX_OPT; j++) { - if (node->opt[j]) { + for (int j = 0; j < GGML_MAX_SRC; j++) { + if (node->src[j]) { char label[16]; - snprintf(label, sizeof(label), "opt %d", j); - ggml_graph_dump_dot_node_edge(fp, gb, node, node->opt[j], label); + snprintf(label, sizeof(label), "src %d", j); + ggml_graph_dump_dot_node_edge(fp, gb, node, node->src[j], label); } } } @@ -17561,19 +18367,11 @@ void ggml_graph_dump_dot(const struct ggml_cgraph * gb, const struct ggml_cgraph for (int i = 0; i < gb->n_leafs; i++) { struct ggml_tensor * node = gb->leafs[i]; - if (node->src0) { - ggml_graph_dump_dot_leaf_edge(fp, node, node->src0, "x"); - } - - if (node->src1) { - ggml_graph_dump_dot_leaf_edge(fp, node, node->src1, "y"); - } - - for (int j = 0; j < GGML_MAX_OPT; j++) { - if (node->opt[j]) { + for (int j = 0; j < GGML_MAX_SRC; j++) { + if (node->src[j]) { char label[16]; - snprintf(label, sizeof(label), "opt %d", j); - ggml_graph_dump_dot_leaf_edge(fp, node, node->opt[j], label); + snprintf(label, sizeof(label), "src %d", j); + ggml_graph_dump_dot_leaf_edge(fp, node, node->src[j], label); } } } @@ -17635,9 +18433,6 @@ static enum ggml_opt_result ggml_opt_adam( struct ggml_cgraph * gb) { GGML_ASSERT(ggml_is_scalar(f)); - gf->n_threads = params.n_threads; - gb->n_threads = params.n_threads; - // these will store the parameters we want to optimize struct ggml_tensor * ps[GGML_MAX_PARAMS]; @@ -17684,7 +18479,8 @@ static enum ggml_opt_result ggml_opt_adam( // compute the function value ggml_graph_reset (gf); ggml_set_f32 (f->grad, 1.0f); - ggml_graph_compute(ctx, gb); + + ggml_graph_compute_with_ctx(ctx, gb, params.n_threads); opt->adam.fx_prev = ggml_get_f32_1d(f, 0); opt->adam.fx_best = opt->adam.fx_prev; @@ -17764,7 +18560,8 @@ static enum ggml_opt_result ggml_opt_adam( ggml_graph_reset (gf); ggml_set_f32 (f->grad, 1.0f); - ggml_graph_compute(ctx, gb); + + ggml_graph_compute_with_ctx(ctx, gb, params.n_threads); const float fx = ggml_get_f32_1d(f, 0); @@ -17886,7 +18683,8 @@ static enum ggml_opt_result linesearch_backtracking( ggml_graph_reset (gf); ggml_set_f32 (f->grad, 1.0f); - ggml_graph_compute(ctx, gb); + + ggml_graph_compute_with_ctx(ctx, gb, params->n_threads); ggml_opt_get_grad(np, ps, g); @@ -17954,9 +18752,6 @@ static enum ggml_opt_result ggml_opt_lbfgs( } } - gf->n_threads = params.n_threads; - gb->n_threads = params.n_threads; - const int m = params.lbfgs.m; // these will store the parameters we want to optimize @@ -18008,7 +18803,8 @@ static enum ggml_opt_result ggml_opt_lbfgs( ggml_graph_reset (gf); ggml_set_f32 (f->grad, 1.0f); - ggml_graph_compute(ctx, gb); + + ggml_graph_compute_with_ctx(ctx, gb, params.n_threads); ggml_opt_get_grad(np, ps, g); @@ -18344,8 +19140,8 @@ enum ggml_opt_result ggml_opt_resume( struct ggml_tensor * f) { // build forward + backward compute graphs - struct ggml_tensor * gfbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / GGML_TYPE_SIZE[GGML_TYPE_I32]+ (sizeof(struct ggml_cgraph) % GGML_TYPE_SIZE[GGML_TYPE_I32] ? 1 : 0)); - struct ggml_tensor * gbbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / GGML_TYPE_SIZE[GGML_TYPE_I32]+ (sizeof(struct ggml_cgraph) % GGML_TYPE_SIZE[GGML_TYPE_I32] ? 1 : 0)); + struct ggml_tensor * gfbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / ggml_type_size(GGML_TYPE_I32)+ (sizeof(struct ggml_cgraph) % ggml_type_size(GGML_TYPE_I32) ? 1 : 0)); + struct ggml_tensor * gbbuf = ggml_new_tensor_1d(ctx, GGML_TYPE_I32, sizeof(struct ggml_cgraph) / ggml_type_size(GGML_TYPE_I32)+ (sizeof(struct ggml_cgraph) % ggml_type_size(GGML_TYPE_I32) ? 1 : 0)); struct ggml_cgraph * gf = (struct ggml_cgraph *) gfbuf->data; struct ggml_cgraph * gb = (struct ggml_cgraph *) gbbuf->data; @@ -18604,6 +19400,1106 @@ size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, i //////////////////////////////////////////////////////////////////////////////// +struct gguf_str { + uint64_t n; // GGUFv2 + char * data; +}; + +static const size_t GGUF_TYPE_SIZE[GGUF_TYPE_COUNT] = { + [GGUF_TYPE_UINT8] = sizeof(uint8_t), + [GGUF_TYPE_INT8] = sizeof(int8_t), + [GGUF_TYPE_UINT16] = sizeof(uint16_t), + [GGUF_TYPE_INT16] = sizeof(int16_t), + [GGUF_TYPE_UINT32] = sizeof(uint32_t), + [GGUF_TYPE_INT32] = sizeof(int32_t), + [GGUF_TYPE_FLOAT32] = sizeof(float), + [GGUF_TYPE_BOOL] = sizeof(bool), + [GGUF_TYPE_STRING] = sizeof(struct gguf_str), + [GGUF_TYPE_UINT64] = sizeof(uint64_t), + [GGUF_TYPE_INT64] = sizeof(int64_t), + [GGUF_TYPE_FLOAT64] = sizeof(double), + [GGUF_TYPE_ARRAY] = 0, // undefined +}; +static_assert(GGUF_TYPE_COUNT == 13, "GGUF_TYPE_COUNT != 13"); + +static const char * GGUF_TYPE_NAME[GGUF_TYPE_COUNT] = { + [GGUF_TYPE_UINT8] = "u8", + [GGUF_TYPE_INT8] = "i8", + [GGUF_TYPE_UINT16] = "u16", + [GGUF_TYPE_INT16] = "i16", + [GGUF_TYPE_UINT32] = "u32", + [GGUF_TYPE_INT32] = "i32", + [GGUF_TYPE_FLOAT32] = "f32", + [GGUF_TYPE_BOOL] = "bool", + [GGUF_TYPE_STRING] = "str", + [GGUF_TYPE_ARRAY] = "arr", + [GGUF_TYPE_UINT64] = "u64", + [GGUF_TYPE_INT64] = "i64", + [GGUF_TYPE_FLOAT64] = "f64", +}; +static_assert(GGUF_TYPE_COUNT == 13, "GGUF_TYPE_COUNT != 13"); + +union gguf_value { + uint8_t uint8; + int8_t int8; + uint16_t uint16; + int16_t int16; + uint32_t uint32; + int32_t int32; + float float32; + uint64_t uint64; + int64_t int64; + double float64; + bool bool_; + + struct gguf_str str; + + struct { + enum gguf_type type; + + uint64_t n; // GGUFv2 + void * data; + } arr; +}; + +struct gguf_kv { + struct gguf_str key; + + enum gguf_type type; + union gguf_value value; +}; + +struct gguf_header { + uint32_t magic; + uint32_t version; + uint64_t n_tensors; // GGUFv2 + uint64_t n_kv; // GGUFv2 +}; + +struct gguf_tensor_info { + struct gguf_str name; + + uint32_t n_dims; + uint64_t ne[GGML_MAX_DIMS]; + + enum ggml_type type; + + uint64_t offset; // offset from start of `data`, must be a multiple of `ALIGNMENT` + + // for writing API + const void * data; + size_t size; +}; + +struct gguf_context { + struct gguf_header header; + + struct gguf_kv * kv; + struct gguf_tensor_info * infos; + + size_t alignment; + size_t offset; // offset of `data` from beginning of file + size_t size; // size of `data` in bytes + + //uint8_t * padding; + void * data; +}; + +static bool gguf_fread_el(FILE * file, void * dst, size_t size, size_t * offset) { + const size_t n = fread(dst, 1, size, file); + *offset += n; + return n == size; +} + +// NOTE: temporary handling of GGUFv1 >> remove after Oct 2023 +static bool gguf_fread_str_cur(FILE * file, struct gguf_str * p, size_t * offset) { + p->n = 0; + p->data = NULL; + + bool ok = true; + + ok = ok && gguf_fread_el(file, &p->n, sizeof(p->n), offset); p->data = calloc(p->n + 1, 1); + ok = ok && gguf_fread_el(file, p->data, p->n, offset); + + return ok; +} + +static bool gguf_fread_str_v1(FILE * file, struct gguf_str * p, size_t * offset) { + p->n = 0; + p->data = NULL; + + bool ok = true; + + uint32_t n = 0; + ok = ok && gguf_fread_el(file, &n, sizeof(n), offset); p->data = calloc(n + 1, 1); p->n = n; + ok = ok && gguf_fread_el(file, p->data, p->n, offset); + + return ok; +} + +struct gguf_context * gguf_init_empty(void) { + struct gguf_context * ctx = GGML_ALIGNED_MALLOC(sizeof(struct gguf_context)); + + ctx->header.magic = GGUF_MAGIC; + ctx->header.version = GGUF_VERSION; + ctx->header.n_tensors = 0; + ctx->header.n_kv = 0; + + ctx->kv = NULL; + ctx->infos = NULL; + + ctx->alignment = GGUF_DEFAULT_ALIGNMENT; + ctx->offset = 0; + ctx->size = 0; + + ctx->data = NULL; + + return ctx; +} + +struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params) { + FILE * file = fopen(fname, "rb"); + if (!file) { + return NULL; + } + + // offset from start of file + size_t offset = 0; + + uint32_t magic = 0; + + // check the magic before making allocations + { + gguf_fread_el(file, &magic, sizeof(magic), &offset); + + if (magic != GGUF_MAGIC) { + fprintf(stderr, "%s: invalid magic number %08x\n", __func__, magic); + fclose(file); + return NULL; + } + } + + bool ok = true; + + struct gguf_context * ctx = GGML_ALIGNED_MALLOC(sizeof(struct gguf_context)); + + // read the header + { + ctx->header.magic = magic; + + ctx->kv = NULL; + ctx->infos = NULL; + ctx->data = NULL; + + ok = ok && gguf_fread_el(file, &ctx->header.version, sizeof(ctx->header.version), &offset); + + if (ctx->header.version == 1) { + // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023 + uint32_t n_tensors = 0; + uint32_t n_kv = 0; + + ok = ok && gguf_fread_el(file, &n_tensors, sizeof(n_tensors), &offset); + ok = ok && gguf_fread_el(file, &n_kv, sizeof(n_kv), &offset); + + ctx->header.n_tensors = n_tensors; + ctx->header.n_kv = n_kv; + } else { + ok = ok && gguf_fread_el(file, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors), &offset); + ok = ok && gguf_fread_el(file, &ctx->header.n_kv, sizeof(ctx->header.n_kv), &offset); + } + + if (!ok) { + fprintf(stderr, "%s: failed to read header\n", __func__); + fclose(file); + gguf_free(ctx); + return NULL; + } + } + + // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023 + bool (* gguf_fread_str)(FILE *, struct gguf_str *, size_t *) = gguf_fread_str_cur; + if (ctx->header.version == 1) { + gguf_fread_str = gguf_fread_str_v1; + } + + // read the kv pairs + { + ctx->kv = GGML_ALIGNED_MALLOC(ctx->header.n_kv * sizeof(struct gguf_kv)); + + for (uint32_t i = 0; i < ctx->header.n_kv; ++i) { + struct gguf_kv * kv = &ctx->kv[i]; + + //fprintf(stderr, "%s: reading kv %d\n", __func__, i); + + ok = ok && gguf_fread_str(file, &kv->key, &offset); + ok = ok && gguf_fread_el (file, &kv->type, sizeof(kv->type), &offset); + + //fprintf(stderr, "%s: reading kv with key %s\n", __func__, kv->key.data); + + switch (kv->type) { + case GGUF_TYPE_UINT8: ok = ok && gguf_fread_el (file, &kv->value.uint8, sizeof(kv->value.uint8), &offset); break; + case GGUF_TYPE_INT8: ok = ok && gguf_fread_el (file, &kv->value.int8, sizeof(kv->value.int8), &offset); break; + case GGUF_TYPE_UINT16: ok = ok && gguf_fread_el (file, &kv->value.uint16, sizeof(kv->value.uint16), &offset); break; + case GGUF_TYPE_INT16: ok = ok && gguf_fread_el (file, &kv->value.int16, sizeof(kv->value.int16), &offset); break; + case GGUF_TYPE_UINT32: ok = ok && gguf_fread_el (file, &kv->value.uint32, sizeof(kv->value.uint32), &offset); break; + case GGUF_TYPE_INT32: ok = ok && gguf_fread_el (file, &kv->value.int32, sizeof(kv->value.int32), &offset); break; + case GGUF_TYPE_FLOAT32: ok = ok && gguf_fread_el (file, &kv->value.float32, sizeof(kv->value.float32), &offset); break; + case GGUF_TYPE_UINT64: ok = ok && gguf_fread_el (file, &kv->value.uint64, sizeof(kv->value.uint64), &offset); break; + case GGUF_TYPE_INT64: ok = ok && gguf_fread_el (file, &kv->value.int64, sizeof(kv->value.int64), &offset); break; + case GGUF_TYPE_FLOAT64: ok = ok && gguf_fread_el (file, &kv->value.float64, sizeof(kv->value.float64), &offset); break; + case GGUF_TYPE_BOOL: ok = ok && gguf_fread_el (file, &kv->value.bool_, sizeof(kv->value.bool_), &offset); break; + case GGUF_TYPE_STRING: ok = ok && gguf_fread_str(file, &kv->value.str, &offset); break; + case GGUF_TYPE_ARRAY: + { + ok = ok && gguf_fread_el(file, &kv->value.arr.type, sizeof(kv->value.arr.type), &offset); + + if (ctx->header.version == 1) { + // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023 + uint32_t n = 0; + ok = ok && gguf_fread_el(file, &n, sizeof(n), &offset); + kv->value.arr.n = n; + } else { + ok = ok && gguf_fread_el(file, &kv->value.arr.n, sizeof(kv->value.arr.n), &offset); + } + + switch (kv->value.arr.type) { + case GGUF_TYPE_UINT8: + case GGUF_TYPE_INT8: + case GGUF_TYPE_UINT16: + case GGUF_TYPE_INT16: + case GGUF_TYPE_UINT32: + case GGUF_TYPE_INT32: + case GGUF_TYPE_FLOAT32: + case GGUF_TYPE_UINT64: + case GGUF_TYPE_INT64: + case GGUF_TYPE_FLOAT64: + case GGUF_TYPE_BOOL: + { + kv->value.arr.data = malloc(kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type]); + ok = ok && gguf_fread_el(file, kv->value.arr.data, kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type], &offset); + } break; + case GGUF_TYPE_STRING: + { + kv->value.arr.data = malloc(kv->value.arr.n * sizeof(struct gguf_str)); + for (uint32_t j = 0; j < kv->value.arr.n; ++j) { + ok = ok && gguf_fread_str(file, &((struct gguf_str *) kv->value.arr.data)[j], &offset); + } + } break; + case GGUF_TYPE_ARRAY: + case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); break; + }; + } break; + case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); + }; + + if (!ok) { + break; + } + } + + if (!ok) { + fprintf(stderr, "%s: failed to read key-value pairs\n", __func__); + fclose(file); + gguf_free(ctx); + return NULL; + } + } + + // read the tensor infos + { + ctx->infos = GGML_ALIGNED_MALLOC(ctx->header.n_tensors * sizeof(struct gguf_tensor_info)); + + for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) { + struct gguf_tensor_info * info = &ctx->infos[i]; + + for (int j = 0; j < GGML_MAX_DIMS; ++j) { + info->ne[j] = 1; + } + + ok = ok && gguf_fread_str(file, &info->name, &offset); + ok = ok && gguf_fread_el (file, &info->n_dims, sizeof(info->n_dims), &offset); + for (uint32_t j = 0; j < info->n_dims; ++j) { + if (ctx->header.version == 1) { + // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023 + uint32_t t = 0; + ok = ok && gguf_fread_el(file, &t, sizeof(t), &offset); + info->ne[j] = t; + } else { + ok = ok && gguf_fread_el(file, &info->ne[j], sizeof(info->ne[j]), &offset); + } + } + ok = ok && gguf_fread_el (file, &info->type, sizeof(info->type), &offset); + ok = ok && gguf_fread_el (file, &info->offset, sizeof(info->offset), &offset); + + if (!ok) { + fprintf(stderr, "%s: failed to read tensor info\n", __func__); + fclose(file); + gguf_free(ctx); + return NULL; + } + } + } + + ctx->alignment = GGUF_DEFAULT_ALIGNMENT; + + int alignment_idx = gguf_find_key(ctx, "general.alignment"); + if (alignment_idx != -1) { + ctx->alignment = gguf_get_val_u32(ctx, alignment_idx); + } + + // we require the data section to be aligned, so take into account any padding + { + const size_t offset_pad = offset % ctx->alignment; + + if (offset_pad != 0) { + offset += ctx->alignment - offset_pad; + fseek(file, offset, SEEK_SET); + } + } + + // store the current file offset - this is where the data section starts + ctx->offset = offset; + + // compute the total size of the data section, taking into account the alignment + { + ctx->size = 0; + for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) { + struct gguf_tensor_info * info = &ctx->infos[i]; + + const int64_t ne = + (int64_t) info->ne[0] * + (int64_t) info->ne[1] * + (int64_t) info->ne[2] * + (int64_t) info->ne[3]; + + if (ne % ggml_blck_size(info->type) != 0) { + fprintf(stderr, "%s: tensor '%s' number of elements (%" PRId64 ") is not a multiple of block size (%d)\n", + __func__, info->name.data, ne, ggml_blck_size(info->type)); + fclose(file); + gguf_free(ctx); + return NULL; + } + + const size_t size_cur = (ne*ggml_type_size(info->type))/ggml_blck_size(info->type); + + ctx->size += GGML_PAD(size_cur, ctx->alignment); + } + } + + // load the tensor data only if requested + if (params.ctx != NULL) { + // if the provided gguf_context is no_alloc, then we create "empty" tensors and do not read the binary blob + // otherwise, we load the binary blob into the created ggml_context as well, and point the "data" members of + // the ggml_tensor structs to the appropriate locations in the binary blob + + // compute the exact size needed for the new ggml_context + const size_t mem_size = + params.no_alloc ? + (ctx->header.n_tensors )*ggml_tensor_overhead() : + (ctx->header.n_tensors + 1)*ggml_tensor_overhead() + ctx->size; + + struct ggml_init_params pdata = { + .mem_size = mem_size, + .mem_buffer = NULL, + .no_alloc = params.no_alloc, + }; + + *params.ctx = ggml_init(pdata); + + struct ggml_context * ctx_data = *params.ctx; + + struct ggml_tensor * data = NULL; + + if (params.no_alloc == false) { + data = ggml_new_tensor_1d(ctx_data, GGML_TYPE_I8, ctx->size); + + ok = ok && data != NULL; + + // read the binary blob with the tensor data + ok = ok && gguf_fread_el(file, data->data, ctx->size, &offset); + + if (!ok) { + fprintf(stderr, "%s: failed to read tensor data\n", __func__); + fclose(file); + ggml_free(ctx_data); + gguf_free(ctx); + return NULL; + } + + ctx->data = data->data; + } + + ggml_set_no_alloc(ctx_data, true); + + // create the tensors + for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) { + const int64_t ne[GGML_MAX_DIMS] = { + ctx->infos[i].ne[0], + ctx->infos[i].ne[1], + ctx->infos[i].ne[2], + ctx->infos[i].ne[3], + }; + + struct ggml_tensor * cur = ggml_new_tensor(ctx_data, ctx->infos[i].type, ctx->infos[i].n_dims, ne); + + ok = ok && cur != NULL; + + ggml_set_name(cur, ctx->infos[i].name.data); + + if (!ok) { + break; + } + + // point the data member to the appropriate location in the binary blob using the tensor infos + if (params.no_alloc == false) { + //cur->data = (char *) data->data + ctx->infos[i].offset - ctx->offset; // offset from start of file + cur->data = (char *) data->data + ctx->infos[i].offset; // offset from data + } + } + + if (!ok) { + fprintf(stderr, "%s: failed to read the tensor data\n", __func__); + fclose(file); + ggml_free(ctx_data); + gguf_free(ctx); + return NULL; + } + + ggml_set_no_alloc(ctx_data, params.no_alloc); + } + + fclose(file); + + return ctx; +} + +void gguf_free(struct gguf_context * ctx) { + if (ctx == NULL) { + return; + } + + if (ctx->kv) { + // free string memory - not great.. + for (uint32_t i = 0; i < ctx->header.n_kv; ++i) { + struct gguf_kv * kv = &ctx->kv[i]; + + if (kv->key.data) { + free(kv->key.data); + } + + if (kv->type == GGUF_TYPE_STRING) { + if (kv->value.str.data) { + free(kv->value.str.data); + } + } + + if (kv->type == GGUF_TYPE_ARRAY) { + if (kv->value.arr.data) { + if (kv->value.arr.type == GGUF_TYPE_STRING) { + for (uint32_t j = 0; j < kv->value.arr.n; ++j) { + struct gguf_str * str = &((struct gguf_str *) kv->value.arr.data)[j]; + if (str->data) { + free(str->data); + } + } + } + free(kv->value.arr.data); + } + } + } + + GGML_ALIGNED_FREE(ctx->kv); + } + + if (ctx->infos) { + for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) { + struct gguf_tensor_info * info = &ctx->infos[i]; + + if (info->name.data) { + free(info->name.data); + } + } + + GGML_ALIGNED_FREE(ctx->infos); + } + + GGML_ALIGNED_FREE(ctx); +} + +const char * gguf_type_name(enum gguf_type type) { + return GGUF_TYPE_NAME[type]; +} + +int gguf_get_version(struct gguf_context * ctx) { + return ctx->header.version; +} + +size_t gguf_get_alignment(struct gguf_context * ctx) { + return ctx->alignment; +} + +size_t gguf_get_data_offset(struct gguf_context * ctx) { + return ctx->offset; +} + +void * gguf_get_data(struct gguf_context * ctx) { + return ctx->data; +} + +int gguf_get_n_kv(struct gguf_context * ctx) { + return ctx->header.n_kv; +} + +int gguf_find_key(struct gguf_context * ctx, const char * key) { + // return -1 if key not found + int keyfound = -1; + + const int n_kv = gguf_get_n_kv(ctx); + + for (int i = 0; i < n_kv; ++i) { + if (strcmp(key, gguf_get_key(ctx, i)) == 0) { + keyfound = i; + break; + } + } + + return keyfound; +} + +const char * gguf_get_key(struct gguf_context * ctx, int i) { + return ctx->kv[i].key.data; +} + +enum gguf_type gguf_get_kv_type(struct gguf_context * ctx, int i) { + return ctx->kv[i].type; +} + +enum gguf_type gguf_get_arr_type(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.arr.type; +} + +const void * gguf_get_arr_data(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.arr.data; +} + +const char * gguf_get_arr_str(struct gguf_context * ctx, int key_id, int i) { + struct gguf_kv * kv = &ctx->kv[key_id]; + struct gguf_str * str = &((struct gguf_str *) kv->value.arr.data)[i]; + return str->data; +} + +int gguf_get_arr_n(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.arr.n; +} + +uint8_t gguf_get_val_u8(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.uint8; +} + +int8_t gguf_get_val_i8(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.int8; +} + +uint16_t gguf_get_val_u16(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.uint16; +} + +int16_t gguf_get_val_i16(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.int16; +} + +uint32_t gguf_get_val_u32(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.uint32; +} + +int32_t gguf_get_val_i32(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.int32; +} + +float gguf_get_val_f32(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.float32; +} + +uint64_t gguf_get_val_u64(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.uint64; +} + +int64_t gguf_get_val_i64(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.int64; +} + +double gguf_get_val_f64(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.float64; +} + +bool gguf_get_val_bool(struct gguf_context * ctx, int i) { + return ctx->kv[i].value.bool_; +} + +const char * gguf_get_val_str (struct gguf_context * ctx, int i) { + return ctx->kv[i].value.str.data; +} + +int gguf_get_n_tensors(struct gguf_context * ctx) { + return ctx->header.n_tensors; +} + +int gguf_find_tensor(struct gguf_context * ctx, const char * name) { + // return -1 if tensor not found + int tensorfound = -1; + + const int n_tensors = gguf_get_n_tensors(ctx); + + for (int i = 0; i < n_tensors; ++i) { + if (strcmp(name, gguf_get_tensor_name(ctx, i)) == 0) { + tensorfound = i; + break; + } + } + + return tensorfound; +} + +size_t gguf_get_tensor_offset(struct gguf_context * ctx, int i) { + return ctx->infos[i].offset; +} + +char * gguf_get_tensor_name(struct gguf_context * ctx, int i) { + return ctx->infos[i].name.data; +} + +// returns the index +static int gguf_get_or_add_key(struct gguf_context * ctx, const char * key) { + const int idx = gguf_find_key(ctx, key); + if (idx >= 0) { + return idx; + } + + const int n_kv = gguf_get_n_kv(ctx); + + ctx->kv = realloc(ctx->kv, (n_kv + 1) * sizeof(struct gguf_kv)); + ctx->kv[n_kv].key.n = strlen(key); + ctx->kv[n_kv].key.data = strdup(key); + ctx->header.n_kv++; + + return n_kv; +} + +void gguf_set_val_u8(struct gguf_context * ctx, const char * key, uint8_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_UINT8; + ctx->kv[idx].value.uint8 = val; +} + +void gguf_set_val_i8(struct gguf_context * ctx, const char * key, int8_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_INT8; + ctx->kv[idx].value.int8 = val; +} + +void gguf_set_val_u16(struct gguf_context * ctx, const char * key, uint16_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_UINT16; + ctx->kv[idx].value.uint16 = val; +} + +void gguf_set_val_i16(struct gguf_context * ctx, const char * key, int16_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_INT16; + ctx->kv[idx].value.int16 = val; +} + +void gguf_set_val_u32(struct gguf_context * ctx, const char * key, uint32_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_UINT32; + ctx->kv[idx].value.uint32 = val; +} + +void gguf_set_val_i32(struct gguf_context * ctx, const char * key, int32_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_INT32; + ctx->kv[idx].value.int32 = val; +} + +void gguf_set_val_f32(struct gguf_context * ctx, const char * key, float val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_FLOAT32; + ctx->kv[idx].value.float32 = val; +} + +void gguf_set_val_u64(struct gguf_context * ctx, const char * key, uint64_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_UINT64; + ctx->kv[idx].value.uint64 = val; +} + +void gguf_set_val_i64(struct gguf_context * ctx, const char * key, int64_t val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_INT64; + ctx->kv[idx].value.int64 = val; +} + +void gguf_set_val_f64(struct gguf_context * ctx, const char * key, double val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_FLOAT64; + ctx->kv[idx].value.float64 = val; +} + +void gguf_set_val_bool(struct gguf_context * ctx, const char * key, bool val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_BOOL; + ctx->kv[idx].value.bool_ = val; +} + +void gguf_set_val_str(struct gguf_context * ctx, const char * key, const char * val) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_STRING; + ctx->kv[idx].value.str.n = strlen(val); + ctx->kv[idx].value.str.data = strdup(val); +} + +void gguf_set_arr_data(struct gguf_context * ctx, const char * key, enum gguf_type type, const void * data, int n) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_ARRAY; + ctx->kv[idx].value.arr.type = type; + ctx->kv[idx].value.arr.n = n; + ctx->kv[idx].value.arr.data = malloc(n*GGUF_TYPE_SIZE[type]); + memcpy(ctx->kv[idx].value.arr.data, data, n*GGUF_TYPE_SIZE[type]); +} + +void gguf_set_arr_str(struct gguf_context * ctx, const char * key, const char ** data, int n) { + const int idx = gguf_get_or_add_key(ctx, key); + + ctx->kv[idx].type = GGUF_TYPE_ARRAY; + ctx->kv[idx].value.arr.type = GGUF_TYPE_STRING; + ctx->kv[idx].value.arr.n = n; + ctx->kv[idx].value.arr.data = malloc(n*sizeof(struct gguf_str)); + for (int i = 0; i < n; i++) { + struct gguf_str * str = &((struct gguf_str *)ctx->kv[idx].value.arr.data)[i]; + str->n = strlen(data[i]); + str->data = strdup(data[i]); + } +} + +// set or add KV pairs from another context +void gguf_set_kv(struct gguf_context * ctx, struct gguf_context * src) { + for (uint32_t i = 0; i < src->header.n_kv; i++) { + switch (src->kv[i].type) { + case GGUF_TYPE_UINT8: gguf_set_val_u8 (ctx, src->kv[i].key.data, src->kv[i].value.uint8); break; + case GGUF_TYPE_INT8: gguf_set_val_i8 (ctx, src->kv[i].key.data, src->kv[i].value.int8); break; + case GGUF_TYPE_UINT16: gguf_set_val_u16 (ctx, src->kv[i].key.data, src->kv[i].value.uint16); break; + case GGUF_TYPE_INT16: gguf_set_val_i16 (ctx, src->kv[i].key.data, src->kv[i].value.int16); break; + case GGUF_TYPE_UINT32: gguf_set_val_u32 (ctx, src->kv[i].key.data, src->kv[i].value.uint32); break; + case GGUF_TYPE_INT32: gguf_set_val_i32 (ctx, src->kv[i].key.data, src->kv[i].value.int32); break; + case GGUF_TYPE_FLOAT32: gguf_set_val_f32 (ctx, src->kv[i].key.data, src->kv[i].value.float32); break; + case GGUF_TYPE_UINT64: gguf_set_val_u64 (ctx, src->kv[i].key.data, src->kv[i].value.uint64); break; + case GGUF_TYPE_INT64: gguf_set_val_i64 (ctx, src->kv[i].key.data, src->kv[i].value.int64); break; + case GGUF_TYPE_FLOAT64: gguf_set_val_f64 (ctx, src->kv[i].key.data, src->kv[i].value.float64); break; + case GGUF_TYPE_BOOL: gguf_set_val_bool(ctx, src->kv[i].key.data, src->kv[i].value.bool_); break; + case GGUF_TYPE_STRING: gguf_set_val_str (ctx, src->kv[i].key.data, src->kv[i].value.str.data); break; + case GGUF_TYPE_ARRAY: + { + if (src->kv[i].value.arr.type == GGUF_TYPE_STRING) { + const char ** data = malloc(src->kv[i].value.arr.n*sizeof(char *)); + for (uint32_t j = 0; j < src->kv[i].value.arr.n; j++) { + data[j] = ((struct gguf_str *)src->kv[i].value.arr.data)[j].data; + } + gguf_set_arr_str(ctx, src->kv[i].key.data, data, src->kv[i].value.arr.n); + free(data); + } else if (src->kv[i].value.arr.type == GGUF_TYPE_ARRAY) { + GGML_ASSERT(false && "nested arrays not supported"); + } else { + gguf_set_arr_data(ctx, src->kv[i].key.data, src->kv[i].value.arr.type, src->kv[i].value.arr.data, src->kv[i].value.arr.n); + } + } break; + case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); break; + } + } +} + +void gguf_add_tensor( + struct gguf_context * ctx, + const struct ggml_tensor * tensor) { + const int idx = ctx->header.n_tensors; + ctx->infos = realloc(ctx->infos, (idx + 1)*sizeof(struct gguf_tensor_info)); + + ctx->infos[idx].name.n = strlen(tensor->name); + ctx->infos[idx].name.data = strdup(tensor->name); + + for (int i = 0; i < GGML_MAX_DIMS; ++i) { + ctx->infos[idx].ne[i] = 1; + } + + ctx->infos[idx].n_dims = tensor->n_dims; + for (int i = 0; i < tensor->n_dims; i++) { + ctx->infos[idx].ne[i] = tensor->ne[i]; + } + + ctx->infos[idx].type = tensor->type; + ctx->infos[idx].offset = 0; + ctx->infos[idx].data = tensor->data; + ctx->infos[idx].size = ggml_nbytes(tensor); + + if (ctx->header.n_tensors > 0) { + ctx->infos[idx].offset = ctx->infos[idx - 1].offset + GGML_PAD(ctx->infos[idx - 1].size, ctx->alignment); + } + + ctx->header.n_tensors++; +} + +void gguf_set_tensor_type(struct gguf_context * ctx, const char * name, enum ggml_type type) { + const int idx = gguf_find_tensor(ctx, name); + if (idx < 0) { + GGML_ASSERT(false && "tensor not found"); + } + + ctx->infos[idx].type = type; +} + +void gguf_set_tensor_data(struct gguf_context * ctx, const char * name, const void * data, size_t size) { + const int idx = gguf_find_tensor(ctx, name); + if (idx < 0) { + GGML_ASSERT(false && "tensor not found"); + } + + ctx->infos[idx].data = data; + ctx->infos[idx].size = size; + + // update offsets + for (uint32_t i = idx + 1; i < ctx->header.n_tensors; ++i) { + ctx->infos[i].offset = ctx->infos[i - 1].offset + GGML_PAD(ctx->infos[i - 1].size, ctx->alignment); + } +} + +//static void gguf_fwrite_str(FILE * file, const struct gguf_str * val) { +// fwrite(&val->n, sizeof(val->n), 1, file); +// fwrite(val->data, sizeof(char), val->n, file); +//} +// +//static void gguf_fwrite_el(FILE * file, const void * val, size_t size) { +// fwrite(val, sizeof(char), size, file); +//} + +struct gguf_buf { + void * data; + size_t size; + size_t offset; +}; + +static struct gguf_buf gguf_buf_init(size_t size) { + struct gguf_buf buf = { + /*buf.data =*/ size == 0 ? NULL : malloc(size), + /*buf.size =*/ size, + /*buf.offset =*/ 0, + }; + + return buf; +} + +static void gguf_buf_free(struct gguf_buf buf) { + if (buf.data) { + free(buf.data); + } +} + +static void gguf_buf_grow(struct gguf_buf * buf, size_t size) { + if (buf->offset + size > buf->size) { + buf->size = 1.5*(buf->offset + size); + if (buf->data) { + buf->data = realloc(buf->data, buf->size); + } + } +} + +static void gguf_bwrite_str(struct gguf_buf * buf, const struct gguf_str * val) { + gguf_buf_grow(buf, sizeof(val->n) + val->n); + + if (buf->data) { + memcpy((char *) buf->data + buf->offset, &val->n, sizeof(val->n)); + } + buf->offset += sizeof(val->n); + + if (buf->data) { + memcpy((char *) buf->data + buf->offset, val->data, val->n); + } + buf->offset += val->n; +} + +static void gguf_bwrite_el(struct gguf_buf * buf, const void * val, size_t el_size) { + gguf_buf_grow(buf, el_size); + + if (buf->data) { + memcpy((char *) buf->data + buf->offset, val, el_size); + } + buf->offset += el_size; +} + +static void gguf_write_to_buf(struct gguf_context * ctx, struct gguf_buf * buf, bool only_meta) { + // write header + gguf_bwrite_el(buf, &ctx->header.magic, sizeof(ctx->header.magic)); + gguf_bwrite_el(buf, &ctx->header.version, sizeof(ctx->header.version)); + gguf_bwrite_el(buf, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors)); + gguf_bwrite_el(buf, &ctx->header.n_kv, sizeof(ctx->header.n_kv)); + + // write key-value pairs + for (uint32_t i = 0; i < ctx->header.n_kv; ++i) { + struct gguf_kv * kv = &ctx->kv[i]; + + gguf_bwrite_str(buf, &kv->key); + gguf_bwrite_el (buf, &kv->type, sizeof(kv->type)); + + switch (kv->type) { + case GGUF_TYPE_UINT8: gguf_bwrite_el( buf, &kv->value.uint8, sizeof(kv->value.uint8) ); break; + case GGUF_TYPE_INT8: gguf_bwrite_el (buf, &kv->value.int8, sizeof(kv->value.int8) ); break; + case GGUF_TYPE_UINT16: gguf_bwrite_el (buf, &kv->value.uint16, sizeof(kv->value.uint16) ); break; + case GGUF_TYPE_INT16: gguf_bwrite_el (buf, &kv->value.int16, sizeof(kv->value.int16) ); break; + case GGUF_TYPE_UINT32: gguf_bwrite_el (buf, &kv->value.uint32, sizeof(kv->value.uint32) ); break; + case GGUF_TYPE_INT32: gguf_bwrite_el (buf, &kv->value.int32, sizeof(kv->value.int32) ); break; + case GGUF_TYPE_FLOAT32: gguf_bwrite_el (buf, &kv->value.float32, sizeof(kv->value.float32)); break; + case GGUF_TYPE_UINT64: gguf_bwrite_el (buf, &kv->value.uint64, sizeof(kv->value.uint64) ); break; + case GGUF_TYPE_INT64: gguf_bwrite_el (buf, &kv->value.int64, sizeof(kv->value.int64) ); break; + case GGUF_TYPE_FLOAT64: gguf_bwrite_el (buf, &kv->value.float64, sizeof(kv->value.float64)); break; + case GGUF_TYPE_BOOL: gguf_bwrite_el (buf, &kv->value.bool_, sizeof(kv->value.bool_) ); break; + case GGUF_TYPE_STRING: gguf_bwrite_str(buf, &kv->value.str ); break; + case GGUF_TYPE_ARRAY: + { + gguf_bwrite_el(buf, &kv->value.arr.type, sizeof(kv->value.arr.type)); + gguf_bwrite_el(buf, &kv->value.arr.n, sizeof(kv->value.arr.n) ); + + switch (kv->value.arr.type) { + case GGUF_TYPE_UINT8: + case GGUF_TYPE_INT8: + case GGUF_TYPE_UINT16: + case GGUF_TYPE_INT16: + case GGUF_TYPE_UINT32: + case GGUF_TYPE_INT32: + case GGUF_TYPE_FLOAT32: + case GGUF_TYPE_UINT64: + case GGUF_TYPE_INT64: + case GGUF_TYPE_FLOAT64: + case GGUF_TYPE_BOOL: + { + gguf_bwrite_el(buf, kv->value.arr.data, kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type]); + } break; + case GGUF_TYPE_STRING: + { + for (uint32_t j = 0; j < kv->value.arr.n; ++j) { + gguf_bwrite_str(buf, &((struct gguf_str *) kv->value.arr.data)[j]); + } + } break; + case GGUF_TYPE_ARRAY: + case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); break; + }; + } break; + case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); + }; + } + + // write tensor infos + for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) { + struct gguf_tensor_info * info = &ctx->infos[i]; + + gguf_bwrite_str(buf, &info->name); + gguf_bwrite_el (buf, &info->n_dims, sizeof(info->n_dims)); + for (uint32_t j = 0; j < info->n_dims; ++j) { + gguf_bwrite_el(buf, &info->ne[j], sizeof(info->ne[j])); + } + gguf_bwrite_el(buf, &info->type, sizeof(info->type)); + gguf_bwrite_el(buf, &info->offset, sizeof(info->offset)); + } + + // we require the data section to be aligned, so take into account any padding + { + const size_t offset = buf->offset; + const size_t offset_pad = GGML_PAD(offset, ctx->alignment); + + if (offset_pad != offset) { + uint8_t pad = 0; + for (size_t i = 0; i < offset_pad - offset; ++i) { + gguf_bwrite_el(buf, &pad, sizeof(pad)); + } + } + } + + if (only_meta) { + return; + } + + size_t offset = 0; + + // write tensor data + for (uint32_t i = 0; i < ctx->header.n_tensors; ++i) { + struct gguf_tensor_info * info = &ctx->infos[i]; + + const size_t size = info->size; + const size_t size_pad = GGML_PAD(size, ctx->alignment); + + gguf_bwrite_el(buf, info->data, size); + + if (size_pad != size) { + uint8_t pad = 0; + for (size_t j = 0; j < size_pad - size; ++j) { + gguf_bwrite_el(buf, &pad, sizeof(pad)); + } + } + + GGML_ASSERT(offset == info->offset); + + offset += size_pad; + } +} + +void gguf_write_to_file(struct gguf_context * ctx, const char * fname, bool only_meta) { + FILE * file = fopen(fname, "wb"); + if (!file) { + GGML_ASSERT(false && "failed to open file for writing"); + } + + struct gguf_buf buf = gguf_buf_init(16*1024); + + gguf_write_to_buf(ctx, &buf, only_meta); + + fwrite(buf.data, 1, buf.offset, file); + + gguf_buf_free(buf); + + fclose(file); +} + +size_t gguf_get_meta_size(struct gguf_context * ctx) { + // no allocs - only compute size + struct gguf_buf buf = gguf_buf_init(0); + + gguf_write_to_buf(ctx, &buf, true); + + return buf.offset; +} + +void gguf_get_meta_data(struct gguf_context * ctx, void * data) { + struct gguf_buf buf = gguf_buf_init(16*1024); + + gguf_write_to_buf(ctx, &buf, true); + + memcpy(data, buf.data, buf.offset); + + gguf_buf_free(buf); +} + +//////////////////////////////////////////////////////////////////////////////// + int ggml_cpu_has_avx(void) { #if defined(__AVX__) return 1; diff --git a/ggml.h b/ggml.h index 29884166..4ef3d525 100644 --- a/ggml.h +++ b/ggml.h @@ -65,7 +65,7 @@ // ggml_set_f32(a, 3.0f); // ggml_set_f32(b, 4.0f); // -// ggml_graph_compute(ctx0, &gf); +// ggml_graph_compute_with_ctx(ctx, &gf, n_threads); // // printf("f = %f\n", ggml_get_f32_1d(f, 0)); // @@ -130,13 +130,16 @@ // The data of the tensor is accessed via the "data" pointer. For example: // // { -// struct ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 2, 3); +// const int nx = 2; +// const int ny = 3; // -// // a[1, 2] = 1.0f; -// *(float *) ((char *) a->data + 2*a->nb[1] + 1*a->nb[0]) = 1.0f; +// struct ggml_tensor * a = ggml_new_tensor_2d(ctx, GGML_TYPE_F32, nx, ny); // -// // a[2, 0] = 2.0f; -// *(float *) ((char *) a->data + 0*a->nb[1] + 2*a->nb[0]) = 2.0f; +// for (int y = 0; y < ny; y++) { +// for (int x = 0; x < nx; x++) { +// *(float *) ((char *) a->data + y*a->nb[1] + x*a->nb[0]) = x + y; +// } +// } // // ... // } @@ -183,6 +186,15 @@ # define GGML_API #endif +// TODO: support for clang +#ifdef __GNUC__ +# define GGML_DEPRECATED(func, hint) func __attribute__((deprecated(hint))) +#elif defined(_MSC_VER) +# define GGML_DEPRECATED(func, hint) __declspec(deprecated(hint)) func +#else +# define GGML_DEPRECATED(func, hint) func +#endif + #include #include #include @@ -197,12 +209,29 @@ #define GGML_MAX_NODES 4096 #define GGML_MAX_PARAMS 256 #define GGML_MAX_CONTEXTS 64 -#define GGML_MAX_OPT 4 -#define GGML_MAX_NAME 48 +#define GGML_MAX_SRC 6 +#define GGML_MAX_NAME 64 +#define GGML_MAX_OP_PARAMS 32 #define GGML_DEFAULT_N_THREADS 4 +#if UINTPTR_MAX == 0xFFFFFFFF + #define GGML_MEM_ALIGN 4 +#else + #define GGML_MEM_ALIGN 16 +#endif + +#define GGML_EXIT_SUCCESS 0 +#define GGML_EXIT_ABORTED 1 + +#define GGUF_MAGIC 0x46554747 // "GGUF" +#define GGUF_VERSION 2 + +#define GGUF_DEFAULT_ALIGNMENT 32 + #define GGML_UNUSED(x) (void)(x) +#define GGML_PAD(x, n) (((x) + (n) - 1) & ~((n) - 1)) + #define GGML_ASSERT(x) \ do { \ if (!(x)) { \ @@ -239,8 +268,9 @@ extern "C" { #endif -#ifdef __ARM_NEON - // we use the built-in 16-bit float type +#if defined(__ARM_NEON) && defined(__CUDACC__) + typedef half ggml_fp16_t; +#elif defined(__ARM_NEON) typedef __fp16 ggml_fp16_t; #else typedef uint16_t ggml_fp16_t; @@ -250,8 +280,8 @@ extern "C" { GGML_API float ggml_fp16_to_fp32(ggml_fp16_t x); GGML_API ggml_fp16_t ggml_fp32_to_fp16(float x); - GGML_API void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, size_t n); - GGML_API void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, size_t n); + GGML_API void ggml_fp16_to_fp32_row(const ggml_fp16_t * x, float * y, int n); + GGML_API void ggml_fp32_to_fp16_row(const float * x, ggml_fp16_t * y, int n); struct ggml_object; struct ggml_context; @@ -324,20 +354,12 @@ extern "C" { GGML_OP_ARGMAX, GGML_OP_REPEAT, GGML_OP_REPEAT_BACK, - GGML_OP_ABS, - GGML_OP_SGN, - GGML_OP_NEG, - GGML_OP_STEP, - GGML_OP_TANH, - GGML_OP_ELU, - GGML_OP_RELU, - GGML_OP_GELU, - GGML_OP_GELU_QUICK, - GGML_OP_SILU, + GGML_OP_CONCAT, GGML_OP_SILU_BACK, GGML_OP_NORM, // normalize GGML_OP_RMS_NORM, GGML_OP_RMS_NORM_BACK, + GGML_OP_GROUP_NORM, GGML_OP_MUL_MAT, GGML_OP_OUT_PROD, @@ -363,16 +385,29 @@ extern "C" { GGML_OP_CLAMP, GGML_OP_CONV_1D, GGML_OP_CONV_2D, + GGML_OP_CONV_TRANSPOSE_2D, + GGML_OP_POOL_1D, + GGML_OP_POOL_2D, + + GGML_OP_UPSCALE, // nearest interpolate GGML_OP_FLASH_ATTN, GGML_OP_FLASH_FF, GGML_OP_FLASH_ATTN_BACK, GGML_OP_WIN_PART, GGML_OP_WIN_UNPART, + GGML_OP_GET_REL_POS, + GGML_OP_ADD_REL_POS, + + GGML_OP_UNARY, GGML_OP_MAP_UNARY, GGML_OP_MAP_BINARY, + GGML_OP_MAP_CUSTOM1_F32, + GGML_OP_MAP_CUSTOM2_F32, + GGML_OP_MAP_CUSTOM3_F32, + GGML_OP_MAP_CUSTOM1, GGML_OP_MAP_CUSTOM2, GGML_OP_MAP_CUSTOM3, @@ -383,6 +418,24 @@ extern "C" { GGML_OP_COUNT, }; + enum ggml_unary_op { + GGML_UNARY_OP_ABS, + GGML_UNARY_OP_SGN, + GGML_UNARY_OP_NEG, + GGML_UNARY_OP_STEP, + GGML_UNARY_OP_TANH, + GGML_UNARY_OP_ELU, + GGML_UNARY_OP_RELU, + GGML_UNARY_OP_GELU, + GGML_UNARY_OP_GELU_QUICK, + GGML_UNARY_OP_SILU, + }; + + enum ggml_object_type { + GGML_OBJECT_TENSOR, + GGML_OBJECT_GRAPH, + GGML_OBJECT_WORK_BUFFER + }; // ggml object struct ggml_object { @@ -391,7 +444,9 @@ extern "C" { struct ggml_object * next; - char padding[8]; + enum ggml_object_type type; + + char padding[4]; }; static const size_t GGML_OBJECT_SIZE = sizeof(struct ggml_object); @@ -411,15 +466,13 @@ extern "C" { // compute data enum ggml_op op; + // op params - allocated as int32_t for alignment + int32_t op_params[GGML_MAX_OP_PARAMS / sizeof(int32_t)]; + bool is_param; struct ggml_tensor * grad; - struct ggml_tensor * src0; - struct ggml_tensor * src1; - struct ggml_tensor * opt[GGML_MAX_OPT]; - - // thread scheduling - int n_tasks; + struct ggml_tensor * src[GGML_MAX_SRC]; // performance int perf_runs; @@ -437,25 +490,46 @@ extern "C" { static const size_t GGML_TENSOR_SIZE = sizeof(struct ggml_tensor); + // the compute plan that needs to be prepared for ggml_graph_compute() + // since https://github.com/ggerganov/ggml/issues/287 + struct ggml_cplan { + size_t work_size; // size of work buffer, calculated by `ggml_graph_plan()` + uint8_t * work_data; // work buffer, to be allocated by caller before calling to `ggml_graph_compute()` + + int n_threads; + + // the `n_tasks` of nodes, 1:1 mapping to cgraph nodes + int n_tasks[GGML_MAX_NODES]; + + // abort ggml_graph_compute when true + bool (*abort_callback)(void * data); + void * abort_callback_data; + }; + + // next prime after GGML_MAX_NODES + // #define GGML_GRAPH_HASHTABLE_SIZE 4099 + // next prime after GGML_MAX_NODES * 2 (nodes + leafs) + #define GGML_GRAPH_HASHTABLE_SIZE 8273 + // computation graph struct ggml_cgraph { int n_nodes; int n_leafs; - int n_threads; - - size_t work_size; - struct ggml_tensor * work; struct ggml_tensor * nodes[GGML_MAX_NODES]; struct ggml_tensor * grads[GGML_MAX_NODES]; struct ggml_tensor * leafs[GGML_MAX_NODES]; + void * visited_hash_table[GGML_GRAPH_HASHTABLE_SIZE]; + // performance int perf_runs; int64_t perf_cycles; int64_t perf_time_us; }; + static const size_t GGML_GRAPH_SIZE = sizeof(struct ggml_cgraph); + // scratch buffer struct ggml_scratch { size_t offs; @@ -509,6 +583,7 @@ extern "C" { GGML_API int64_t ggml_nelements (const struct ggml_tensor * tensor); GGML_API int64_t ggml_nrows (const struct ggml_tensor * tensor); GGML_API size_t ggml_nbytes (const struct ggml_tensor * tensor); + GGML_API size_t ggml_nbytes_pad (const struct ggml_tensor * tensor); // same as ggml_nbytes() but padded to GGML_MEM_ALIGN GGML_API size_t ggml_nbytes_split(const struct ggml_tensor * tensor, int nrows_split); GGML_API int ggml_blck_size (enum ggml_type type); @@ -517,6 +592,7 @@ extern "C" { GGML_API const char * ggml_type_name(enum ggml_type type); GGML_API const char * ggml_op_name (enum ggml_op op); + GGML_API const char * ggml_op_symbol(enum ggml_op op); GGML_API size_t ggml_element_size(const struct ggml_tensor * tensor); @@ -529,6 +605,8 @@ extern "C" { GGML_API bool ggml_is_contiguous(const struct ggml_tensor * tensor); GGML_API bool ggml_is_permuted (const struct ggml_tensor * tensor); + GGML_API bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1); + // use this to compute the memory overhead of a tensor GGML_API size_t ggml_tensor_overhead(void); @@ -540,6 +618,7 @@ extern "C" { GGML_API size_t ggml_used_mem(const struct ggml_context * ctx); GGML_API size_t ggml_set_scratch (struct ggml_context * ctx, struct ggml_scratch scratch); + GGML_API bool ggml_get_no_alloc(struct ggml_context * ctx); GGML_API void ggml_set_no_alloc(struct ggml_context * ctx, bool no_alloc); GGML_API void * ggml_get_mem_buffer (const struct ggml_context * ctx); @@ -599,9 +678,11 @@ extern "C" { GGML_API void * ggml_get_data (const struct ggml_tensor * tensor); GGML_API float * ggml_get_data_f32(const struct ggml_tensor * tensor); - GGML_API const char * ggml_get_name(const struct ggml_tensor * tensor); - GGML_API struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name); - GGML_API struct ggml_tensor * ggml_format_name(struct ggml_tensor * tensor, const char * fmt, ...); + GGML_API enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor); + + GGML_API const char * ggml_get_name (const struct ggml_tensor * tensor); + GGML_API struct ggml_tensor * ggml_set_name ( struct ggml_tensor * tensor, const char * name); + GGML_API struct ggml_tensor * ggml_format_name( struct ggml_tensor * tensor, const char * fmt, ...); // // operations on tensors with backpropagation @@ -611,6 +692,11 @@ extern "C" { struct ggml_context * ctx, struct ggml_tensor * a); + // in-place, returns view(a) + GGML_API struct ggml_tensor * ggml_dup_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a); + GGML_API struct ggml_tensor * ggml_add( struct ggml_context * ctx, struct ggml_tensor * a, @@ -735,6 +821,13 @@ extern "C" { struct ggml_tensor * a, struct ggml_tensor * b); + // concat a and b on dim 2 + // used in stable-diffusion + GGML_API struct ggml_tensor * ggml_concat( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b); + GGML_API struct ggml_tensor * ggml_abs( struct ggml_context * ctx, struct ggml_tensor * a); @@ -824,25 +917,42 @@ extern "C" { struct ggml_tensor * b); // normalize along rows - // TODO: eps is hardcoded to 1e-5 for now GGML_API struct ggml_tensor * ggml_norm( struct ggml_context * ctx, - struct ggml_tensor * a); + struct ggml_tensor * a, + float eps); GGML_API struct ggml_tensor * ggml_norm_inplace( struct ggml_context * ctx, - struct ggml_tensor * a); + struct ggml_tensor * a, + float eps); GGML_API struct ggml_tensor * ggml_rms_norm( struct ggml_context * ctx, - struct ggml_tensor * a); + struct ggml_tensor * a, + float eps); GGML_API struct ggml_tensor * ggml_rms_norm_inplace( struct ggml_context * ctx, - struct ggml_tensor * a); + struct ggml_tensor * a, + float eps); + + // group normalize along ne0*ne1*n_groups + // used in stable-diffusion + // TODO: eps is hardcoded to 1e-6 for now + GGML_API struct ggml_tensor * ggml_group_norm( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_groups); + + GGML_API struct ggml_tensor * ggml_group_norm_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_groups); // a - x // b - dy + // TODO: update with configurable eps GGML_API struct ggml_tensor * ggml_rms_norm_back( struct ggml_context * ctx, struct ggml_tensor * a, @@ -934,11 +1044,22 @@ extern "C" { struct ggml_tensor * a, struct ggml_tensor * b); + // a -> b, in-place, return view(b) + GGML_API struct ggml_tensor * ggml_cpy_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b); + // make contiguous GGML_API struct ggml_tensor * ggml_cont( struct ggml_context * ctx, struct ggml_tensor * a); + // make contiguous, in-place + GGML_API struct ggml_tensor * ggml_cont_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a); + // return view(a), b specifies the new shape // TODO: when we start computing gradient, make a copy instead of view GGML_API struct ggml_tensor * ggml_reshape( @@ -1107,6 +1228,37 @@ extern "C" { int mode, int n_ctx); + // custom RoPE + GGML_API struct ggml_tensor * ggml_rope_custom( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_past, + int n_dims, + int mode, + int n_ctx, + float freq_base, + float freq_scale); + + // in-place, returns view(a) + GGML_API struct ggml_tensor * ggml_rope_custom_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_past, + int n_dims, + int mode, + int n_ctx, + float freq_base, + float freq_scale); + + // xPos RoPE, in-place, returns view(a) + GGML_API struct ggml_tensor * ggml_rope_xpos_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + int n_past, + int n_dims, + float base, + bool down); + // rotary position embedding backward, i.e compute dx from dy // a - dy GGML_API struct ggml_tensor * ggml_rope_back( @@ -1114,7 +1266,12 @@ extern "C" { struct ggml_tensor * a, int n_past, int n_dims, - int mode); + int mode, + int n_ctx, + float freq_base, + float freq_scale, + float xpos_base, + bool xpos_down); // alibi position embedding // in-place, returns view(a) @@ -1141,6 +1298,15 @@ extern "C" { int p0, // padding int d0); // dilation + // conv_1d with padding = half + // alias for ggml_conv_1d(a, b, s, a->ne[0]/2, d) + GGML_API struct ggml_tensor* ggml_conv_1d_ph( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + int s, + int d); + GGML_API struct ggml_tensor * ggml_conv_2d( struct ggml_context * ctx, struct ggml_tensor * a, @@ -1152,14 +1318,70 @@ extern "C" { int d0, int d1); - // conv_1d with padding = half - // alias for ggml_conv_1d(a, b, s, a->ne[0]/2, d) - GGML_API struct ggml_tensor* ggml_conv_1d_ph( + + // kernel size is a->ne[0] x a->ne[1] + // stride is equal to kernel size + // padding is zero + // example: + // a: 16 16 3 768 + // b: 1024 1024 3 1 + // res: 64 64 768 1 + // used in sam + GGML_API struct ggml_tensor * ggml_conv_2d_sk_p0( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b); + + // kernel size is a->ne[0] x a->ne[1] + // stride is 1 + // padding is half + // example: + // a: 3 3 256 256 + // b: 64 64 256 1 + // res: 64 64 256 1 + // used in sam + GGML_API struct ggml_tensor * ggml_conv_2d_s1_ph( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b); + + GGML_API struct ggml_tensor * ggml_conv_transpose_2d_p0( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, - int s, - int d); + int stride); + + enum ggml_op_pool { + GGML_OP_POOL_MAX, + GGML_OP_POOL_AVG, + GGML_OP_POOL_COUNT, + }; + + GGML_API struct ggml_tensor * ggml_pool_1d( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_op_pool op, + int k0, // kernel size + int s0, // stride + int p0); // padding + + GGML_API struct ggml_tensor * ggml_pool_2d( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_op_pool op, + int k0, + int k1, + int s0, + int s1, + int p0, + int p1); + + // nearest interpolate + // used in stable-diffusion + GGML_API struct ggml_tensor * ggml_upscale( + struct ggml_context * ctx, + struct ggml_tensor * a, + int scale_factor); GGML_API struct ggml_tensor * ggml_flash_attn( struct ggml_context * ctx, @@ -1204,6 +1426,37 @@ extern "C" { int h0, int w); + GGML_API struct ggml_tensor * ggml_unary( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_unary_op op); + + GGML_API struct ggml_tensor * ggml_unary_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + enum ggml_unary_op op); + + // used in sam + GGML_API struct ggml_tensor * ggml_get_rel_pos( + struct ggml_context * ctx, + struct ggml_tensor * a, + int qh, + int kh); + + // used in sam + + GGML_API struct ggml_tensor * ggml_add_rel_pos( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * pw, + struct ggml_tensor * ph); + + GGML_API struct ggml_tensor * ggml_add_rel_pos_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * pw, + struct ggml_tensor * ph); + // custom operators typedef void (*ggml_unary_op_f32_t) (const int, float *, const float *); @@ -1213,63 +1466,129 @@ extern "C" { typedef void (*ggml_custom2_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *); typedef void (*ggml_custom3_op_f32_t)(struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *, const struct ggml_tensor *); - GGML_API struct ggml_tensor * ggml_map_unary_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_unary_f32( struct ggml_context * ctx, struct ggml_tensor * a, - ggml_unary_op_f32_t fun); + ggml_unary_op_f32_t fun), + "use ggml_map_custom1 instead"); - GGML_API struct ggml_tensor * ggml_map_unary_inplace_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_unary_inplace_f32( struct ggml_context * ctx, struct ggml_tensor * a, - ggml_unary_op_f32_t fun); + ggml_unary_op_f32_t fun), + "use ggml_map_custom1_inplace instead"); - GGML_API struct ggml_tensor * ggml_map_binary_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_binary_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, - ggml_binary_op_f32_t fun); + ggml_binary_op_f32_t fun), + "use ggml_map_custom2 instead"); - GGML_API struct ggml_tensor * ggml_map_binary_inplace_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_binary_inplace_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, - ggml_binary_op_f32_t fun); + ggml_binary_op_f32_t fun), + "use ggml_map_custom2_inplace instead"); - GGML_API struct ggml_tensor * ggml_map_custom1_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom1_f32( struct ggml_context * ctx, struct ggml_tensor * a, - ggml_custom1_op_f32_t fun); + ggml_custom1_op_f32_t fun), + "use ggml_map_custom1 instead"); - GGML_API struct ggml_tensor * ggml_map_custom1_inplace_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom1_inplace_f32( struct ggml_context * ctx, struct ggml_tensor * a, - ggml_custom1_op_f32_t fun); + ggml_custom1_op_f32_t fun), + "use ggml_map_custom1_inplace instead"); - GGML_API struct ggml_tensor * ggml_map_custom2_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom2_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, - ggml_custom2_op_f32_t fun); + ggml_custom2_op_f32_t fun), + "use ggml_map_custom2 instead"); - GGML_API struct ggml_tensor * ggml_map_custom2_inplace_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom2_inplace_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, - ggml_custom2_op_f32_t fun); + ggml_custom2_op_f32_t fun), + "use ggml_map_custom2_inplace instead"); - GGML_API struct ggml_tensor * ggml_map_custom3_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom3_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_tensor * c, - ggml_custom3_op_f32_t fun); + ggml_custom3_op_f32_t fun), + "use ggml_map_custom3 instead"); - GGML_API struct ggml_tensor * ggml_map_custom3_inplace_f32( + GGML_DEPRECATED(GGML_API struct ggml_tensor * ggml_map_custom3_inplace_f32( struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_tensor * c, - ggml_custom3_op_f32_t fun); + ggml_custom3_op_f32_t fun), + "use ggml_map_custom3_inplace instead"); + + // custom operators v2 + + typedef void (*ggml_custom1_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, int ith, int nth, void * userdata); + typedef void (*ggml_custom2_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, const struct ggml_tensor * b, int ith, int nth, void * userdata); + typedef void (*ggml_custom3_op_t)(struct ggml_tensor * dst , const struct ggml_tensor * a, const struct ggml_tensor * b, const struct ggml_tensor * c, int ith, int nth, void * userdata); + + #define GGML_N_TASKS_MAX -1 + + GGML_API struct ggml_tensor * ggml_map_custom1( + struct ggml_context * ctx, + struct ggml_tensor * a, + ggml_custom1_op_t fun, + int n_tasks, + void * userdata); + + GGML_API struct ggml_tensor * ggml_map_custom1_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + ggml_custom1_op_t fun, + int n_tasks, + void * userdata); + + GGML_API struct ggml_tensor * ggml_map_custom2( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + ggml_custom2_op_t fun, + int n_tasks, + void * userdata); + + GGML_API struct ggml_tensor * ggml_map_custom2_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + ggml_custom2_op_t fun, + int n_tasks, + void * userdata); + + GGML_API struct ggml_tensor * ggml_map_custom3( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + struct ggml_tensor * c, + ggml_custom3_op_t fun, + int n_tasks, + void * userdata); + + GGML_API struct ggml_tensor * ggml_map_custom3_inplace( + struct ggml_context * ctx, + struct ggml_tensor * a, + struct ggml_tensor * b, + struct ggml_tensor * c, + ggml_custom3_op_t fun, + int n_tasks, + void * userdata); // loss function @@ -1290,15 +1609,28 @@ extern "C" { GGML_API void ggml_set_param( struct ggml_context * ctx, - struct ggml_tensor * tensor); + struct ggml_tensor * tensor); + GGML_API void ggml_build_forward_expand(struct ggml_cgraph * cgraph, struct ggml_tensor * tensor); GGML_API struct ggml_cgraph ggml_build_forward (struct ggml_tensor * tensor); GGML_API struct ggml_cgraph ggml_build_backward(struct ggml_context * ctx, struct ggml_cgraph * gf, bool keep); - GGML_API void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph); - GGML_API void ggml_graph_reset (struct ggml_cgraph * cgraph); + // graph allocation in a context + GGML_API struct ggml_cgraph * ggml_new_graph (struct ggml_context * ctx); + GGML_API struct ggml_cgraph * ggml_build_forward_ctx(struct ggml_context * ctx, struct ggml_tensor * tensor); + GGML_API size_t ggml_graph_overhead(void); + + // ggml_graph_plan() has to be called before ggml_graph_compute() + // when plan.work_size > 0, caller must allocate memory for plan.work_data + GGML_API struct ggml_cplan ggml_graph_plan (struct ggml_cgraph * cgraph, int n_threads /*= GGML_DEFAULT_N_THREADS*/); + GGML_API int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan); + GGML_API void ggml_graph_reset (struct ggml_cgraph * cgraph); + + // same as ggml_graph_compute() but the work data is allocated as a part of the context + // note: the drawback of this API is that you must have ensured that the context has enough memory for the work data + GGML_API void ggml_graph_compute_with_ctx(struct ggml_context * ctx, struct ggml_cgraph * cgraph, int n_threads); GGML_API struct ggml_tensor * ggml_graph_get_tensor(struct ggml_cgraph * cgraph, const char * name); @@ -1488,6 +1820,127 @@ extern "C" { GGML_API size_t ggml_quantize_chunk(enum ggml_type type, const float * src, void * dst, int start, int n, int64_t * hist); + // + // gguf + // + + enum gguf_type { + GGUF_TYPE_UINT8 = 0, + GGUF_TYPE_INT8 = 1, + GGUF_TYPE_UINT16 = 2, + GGUF_TYPE_INT16 = 3, + GGUF_TYPE_UINT32 = 4, + GGUF_TYPE_INT32 = 5, + GGUF_TYPE_FLOAT32 = 6, + GGUF_TYPE_BOOL = 7, + GGUF_TYPE_STRING = 8, + GGUF_TYPE_ARRAY = 9, + GGUF_TYPE_UINT64 = 10, + GGUF_TYPE_INT64 = 11, + GGUF_TYPE_FLOAT64 = 12, + GGUF_TYPE_COUNT, // marks the end of the enum + }; + + struct gguf_context; + + struct gguf_init_params { + bool no_alloc; + + // if not NULL, create a ggml_context and allocate the tensor data in it + struct ggml_context ** ctx; + }; + + GGML_API struct gguf_context * gguf_init_empty(void); + GGML_API struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params); + //GGML_API struct gguf_context * gguf_init_from_buffer(..); + + GGML_API void gguf_free(struct gguf_context * ctx); + + GGML_API const char * gguf_type_name(enum gguf_type type); + + GGML_API int gguf_get_version (struct gguf_context * ctx); + GGML_API size_t gguf_get_alignment (struct gguf_context * ctx); + GGML_API size_t gguf_get_data_offset(struct gguf_context * ctx); + GGML_API void * gguf_get_data (struct gguf_context * ctx); + + GGML_API int gguf_get_n_kv(struct gguf_context * ctx); + GGML_API int gguf_find_key(struct gguf_context * ctx, const char * key); + GGML_API const char * gguf_get_key (struct gguf_context * ctx, int i); + + GGML_API enum gguf_type gguf_get_kv_type (struct gguf_context * ctx, int i); + GGML_API enum gguf_type gguf_get_arr_type(struct gguf_context * ctx, int i); + + // results are undefined if the wrong type is used for the key + GGML_API uint8_t gguf_get_val_u8 (struct gguf_context * ctx, int i); + GGML_API int8_t gguf_get_val_i8 (struct gguf_context * ctx, int i); + GGML_API uint16_t gguf_get_val_u16 (struct gguf_context * ctx, int i); + GGML_API int16_t gguf_get_val_i16 (struct gguf_context * ctx, int i); + GGML_API uint32_t gguf_get_val_u32 (struct gguf_context * ctx, int i); + GGML_API int32_t gguf_get_val_i32 (struct gguf_context * ctx, int i); + GGML_API float gguf_get_val_f32 (struct gguf_context * ctx, int i); + GGML_API uint64_t gguf_get_val_u64 (struct gguf_context * ctx, int i); + GGML_API int64_t gguf_get_val_i64 (struct gguf_context * ctx, int i); + GGML_API double gguf_get_val_f64 (struct gguf_context * ctx, int i); + GGML_API bool gguf_get_val_bool(struct gguf_context * ctx, int i); + GGML_API const char * gguf_get_val_str (struct gguf_context * ctx, int i); + GGML_API int gguf_get_arr_n (struct gguf_context * ctx, int i); + GGML_API const void * gguf_get_arr_data(struct gguf_context * ctx, int i); + GGML_API const char * gguf_get_arr_str (struct gguf_context * ctx, int key_id, int i); + + GGML_API int gguf_get_n_tensors (struct gguf_context * ctx); + GGML_API int gguf_find_tensor (struct gguf_context * ctx, const char * name); + GGML_API size_t gguf_get_tensor_offset(struct gguf_context * ctx, int i); + GGML_API char * gguf_get_tensor_name (struct gguf_context * ctx, int i); + + // overrides existing values or adds a new one + GGML_API void gguf_set_val_u8 (struct gguf_context * ctx, const char * key, uint8_t val); + GGML_API void gguf_set_val_i8 (struct gguf_context * ctx, const char * key, int8_t val); + GGML_API void gguf_set_val_u16 (struct gguf_context * ctx, const char * key, uint16_t val); + GGML_API void gguf_set_val_i16 (struct gguf_context * ctx, const char * key, int16_t val); + GGML_API void gguf_set_val_u32 (struct gguf_context * ctx, const char * key, uint32_t val); + GGML_API void gguf_set_val_i32 (struct gguf_context * ctx, const char * key, int32_t val); + GGML_API void gguf_set_val_f32 (struct gguf_context * ctx, const char * key, float val); + GGML_API void gguf_set_val_u64 (struct gguf_context * ctx, const char * key, uint64_t val); + GGML_API void gguf_set_val_i64 (struct gguf_context * ctx, const char * key, int64_t val); + GGML_API void gguf_set_val_f64 (struct gguf_context * ctx, const char * key, double val); + GGML_API void gguf_set_val_bool(struct gguf_context * ctx, const char * key, bool val); + GGML_API void gguf_set_val_str (struct gguf_context * ctx, const char * key, const char * val); + GGML_API void gguf_set_arr_data(struct gguf_context * ctx, const char * key, enum gguf_type type, const void * data, int n); + GGML_API void gguf_set_arr_str (struct gguf_context * ctx, const char * key, const char ** data, int n); + + // set or add KV pairs from another context + GGML_API void gguf_set_kv(struct gguf_context * ctx, struct gguf_context * src); + + // manage tensor info + GGML_API void gguf_add_tensor(struct gguf_context * ctx, const struct ggml_tensor * tensor); + GGML_API void gguf_set_tensor_type(struct gguf_context * ctx, const char * name, enum ggml_type type); + GGML_API void gguf_set_tensor_data(struct gguf_context * ctx, const char * name, const void * data, size_t size); + + // writing gguf files can be done in 2 ways: + // + // - write the entire gguf_context to a binary file in a single pass: + // + // gguf_write_to_file(ctx, fname); + // + // - first prepare a file with a placeholder for the meta data, write the tensor data, then write the meta data: + // + // FILE * f = fopen(fname, "wb"); + // fseek(f, gguf_get_meta_size(ctx), SEEK_SET); + // fwrite(f, ...); + // void * data = gguf_meta_get_meta_data(ctx); + // fseek(f, 0, SEEK_SET); + // fwrite(f, data, gguf_get_meta_size(ctx)); + // free(data); + // fclose(f); + // + + // write the entire context to a binary file + GGML_API void gguf_write_to_file(struct gguf_context * ctx, const char * fname, bool only_meta); + + // get the size in bytes of the meta data (header, kv pairs, tensor info) including padding + GGML_API size_t gguf_get_meta_size(struct gguf_context * ctx); + GGML_API void gguf_get_meta_data(struct gguf_context * ctx, void * data); + // // system info // @@ -1516,25 +1969,28 @@ extern "C" { // #ifdef __cplusplus - // restrict not standard in C++ +// restrict not standard in C++ #define GGML_RESTRICT #else #define GGML_RESTRICT restrict #endif - typedef void (*dequantize_row_q_t)(const void * GGML_RESTRICT x, float * GGML_RESTRICT y, int k); - typedef void (*quantize_row_q_t) (const float * GGML_RESTRICT x, void * GGML_RESTRICT y, int k); - typedef void (*vec_dot_q_t) (const int n, float * GGML_RESTRICT s, const void * GGML_RESTRICT x, const void * GGML_RESTRICT y); + typedef void (*ggml_to_float_t) (const void * GGML_RESTRICT x, float * GGML_RESTRICT y, int k); + typedef void (*ggml_from_float_t)(const float * GGML_RESTRICT x, void * GGML_RESTRICT y, int k); + typedef void (*ggml_vec_dot_t) (const int n, float * GGML_RESTRICT s, const void * GGML_RESTRICT x, const void * GGML_RESTRICT y); typedef struct { - dequantize_row_q_t dequantize_row_q; - quantize_row_q_t quantize_row_q; - quantize_row_q_t quantize_row_q_reference; - quantize_row_q_t quantize_row_q_dot; - vec_dot_q_t vec_dot_q; - enum ggml_type vec_dot_type; - } quantize_fns_t; + const char * type_name; + int blck_size; + size_t type_size; + bool is_quantized; + ggml_to_float_t to_float; + ggml_from_float_t from_float; + ggml_from_float_t from_float_reference; + ggml_vec_dot_t vec_dot; + enum ggml_type vec_dot_type; + } ggml_type_traits_t; - quantize_fns_t ggml_internal_get_quantize_fn(size_t i); + ggml_type_traits_t ggml_internal_get_type_traits(enum ggml_type type); #ifdef __cplusplus } diff --git a/whisper.cpp b/whisper.cpp index 1f4f8a06..3192fbc6 100644 --- a/whisper.cpp +++ b/whisper.cpp @@ -441,6 +441,7 @@ struct whisper_hparams { int32_t n_text_layer = 4; int32_t n_mels = 80; int32_t ftype = 1; + float eps = 1e-5f; }; // audio encoding layer @@ -1578,7 +1579,7 @@ static bool whisper_encode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, inpL); + cur = ggml_norm(ctx0, inpL, hparams.eps); // cur = ln_0_w*cur + ln_0_b cur = ggml_add(ctx0, @@ -1725,7 +1726,7 @@ static bool whisper_encode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, inpFF); + cur = ggml_norm(ctx0, inpFF, hparams.eps); wstate.use_buf(ctx0, 1); @@ -1788,7 +1789,7 @@ static bool whisper_encode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, cur); + cur = ggml_norm(ctx0, cur, hparams.eps); wstate.use_buf(ctx0, 1); @@ -1805,10 +1806,9 @@ static bool whisper_encode_internal( // run the computation { struct ggml_cgraph gf = {}; - gf.n_threads = n_threads; - ggml_build_forward_expand(&gf, cur); - ggml_graph_compute(ctx0, &gf); + ggml_build_forward_expand (&gf, cur); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); //ggml_graph_print(&gf); } @@ -1851,12 +1851,11 @@ static bool whisper_encode_internal( // pre-compute cross-attention memory { struct ggml_cgraph gf = {}; - gf.n_threads = n_threads; // TODO: hack to disconnect the encoded features from the previous graph cur->op = GGML_OP_NONE; - cur->src0 = nullptr; - cur->src1 = nullptr; + cur->src[0] = nullptr; + cur->src[1] = nullptr; for (int il = 0; il < model.hparams.n_text_layer; ++il) { auto& layer = model.layers_decoder[il]; @@ -1894,7 +1893,7 @@ static bool whisper_encode_internal( ggml_build_forward_expand(&gf, ggml_cpy(ctx0, Vcross, v)); } - ggml_graph_compute(ctx0, &gf); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); //ggml_graph_print(&gf); } @@ -1965,7 +1964,6 @@ static bool whisper_decode_internal( struct ggml_context * ctx0 = ggml_init(params); struct ggml_cgraph gf = {}; - gf.n_threads = n_threads; struct ggml_tensor * embd = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, N); memcpy(embd->data, tokens, N*ggml_element_size(embd)); @@ -1992,7 +1990,7 @@ static bool whisper_decode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, inpL); + cur = ggml_norm(ctx0, inpL, hparams.eps); // cur = ln_0_w*cur + ln_0_b cur = ggml_add(ctx0, @@ -2119,7 +2117,7 @@ static bool whisper_decode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, inpCA); // note: we use inpCA here + cur = ggml_norm(ctx0, inpCA, hparams.eps); // note: we use inpCA here // cur = ln_0_w*cur + ln_0_b cur = ggml_add(ctx0, @@ -2229,7 +2227,7 @@ static bool whisper_decode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, inpFF); + cur = ggml_norm(ctx0, inpFF, hparams.eps); wstate.use_buf(ctx0, 1); @@ -2284,7 +2282,7 @@ static bool whisper_decode_internal( { wstate.use_buf(ctx0, 0); - cur = ggml_norm(ctx0, cur); + cur = ggml_norm(ctx0, cur, hparams.eps); wstate.use_buf(ctx0, 1); @@ -2308,8 +2306,8 @@ static bool whisper_decode_internal( // run the computation { - ggml_build_forward_expand(&gf, logits); - ggml_graph_compute (ctx0, &gf); + ggml_build_forward_expand (&gf, logits); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); } // extract logits for all N tokens @@ -2358,7 +2356,7 @@ static std::string to_timestamp(int64_t t, bool comma = false) { static float sin_vals[SIN_COS_N_COUNT]; static float cos_vals[SIN_COS_N_COUNT]; -// In FFT, we frequently use sine and cosine operations with the same values. +// In FFT, we frequently use sine and cosine operations with the same values. // We can use precalculated values to speed up the process. static void fill_sin_cos_table() { static bool is_filled = false; @@ -5165,17 +5163,15 @@ WHISPER_API const char * whisper_bench_ggml_mul_mat_str(int n_threads) { struct ggml_cgraph gf = ggml_build_forward(c); - gf.n_threads = n_threads; - double tsum = 0.0; // heat-up - ggml_graph_compute(ctx0, &gf); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); for (int i = 0; i < n_max; ++i) { const int64_t t0 = ggml_time_us(); - ggml_graph_compute(ctx0, &gf); + ggml_graph_compute_with_ctx(ctx0, &gf, n_threads); const int64_t t1 = ggml_time_us();