-
Notifications
You must be signed in to change notification settings - Fork 2
/
src.bcbbd1bb.map
1 lines (1 loc) · 893 KB
/
src.bcbbd1bb.map
1
{"version":3,"sources":["../node_modules/jsqr/dist/jsQR.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/process/browser.js","../node_modules/debug/src/browser.js","../node_modules/get-browser-rtc/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/buffer/index.js","../node_modules/safe-buffer/index.js","../node_modules/randombytes/browser.js","../node_modules/process-nextick-args/index.js","../node_modules/events/events.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/core-util-is/lib/util.js","../node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/util-deprecate/browser.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/readable-browser.js","../node_modules/simple-peer/index.js","../node_modules/parseuri/index.js","../node_modules/socket.io-client/node_modules/ms/index.js","../node_modules/socket.io-client/node_modules/debug/src/debug.js","../node_modules/socket.io-client/node_modules/debug/src/browser.js","../node_modules/socket.io-client/lib/url.js","../node_modules/socket.io-parser/node_modules/ms/index.js","../node_modules/socket.io-parser/node_modules/debug/src/debug.js","../node_modules/socket.io-parser/node_modules/debug/src/browser.js","../node_modules/component-emitter/index.js","../node_modules/socket.io-parser/node_modules/isarray/index.js","../node_modules/socket.io-parser/is-buffer.js","../node_modules/socket.io-parser/binary.js","../node_modules/socket.io-parser/index.js","../node_modules/has-cors/index.js","../node_modules/engine.io-client/lib/xmlhttprequest.js","../node_modules/engine.io-parser/lib/keys.js","../node_modules/has-binary2/node_modules/isarray/index.js","../node_modules/has-binary2/index.js","../node_modules/arraybuffer.slice/index.js","../node_modules/after/index.js","../node_modules/engine.io-parser/lib/utf8.js","../node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../node_modules/blob/index.js","../node_modules/engine.io-parser/lib/browser.js","../node_modules/engine.io-client/lib/transport.js","../node_modules/parseqs/index.js","../node_modules/component-inherit/index.js","../node_modules/yeast/index.js","../node_modules/engine.io-client/node_modules/ms/index.js","../node_modules/engine.io-client/node_modules/debug/src/debug.js","../node_modules/engine.io-client/node_modules/debug/src/browser.js","../node_modules/engine.io-client/lib/transports/polling.js","../node_modules/engine.io-client/lib/transports/polling-xhr.js","../node_modules/engine.io-client/lib/transports/polling-jsonp.js","../node_modules/engine.io-client/lib/transports/websocket.js","../node_modules/engine.io-client/lib/transports/index.js","../node_modules/indexof/index.js","../node_modules/engine.io-client/lib/socket.js","../node_modules/engine.io-client/lib/index.js","../node_modules/to-array/index.js","../node_modules/socket.io-client/lib/on.js","../node_modules/component-bind/index.js","../node_modules/socket.io-client/lib/socket.js","../node_modules/backo2/index.js","../node_modules/socket.io-client/lib/manager.js","../node_modules/socket.io-client/lib/index.js","index.js"],"names":["cachedSetTimeout","cachedClearTimeout","process","module","exports","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","e","call","runClearTimeout","marker","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","Item","array","noop","nextTick","args","Array","arguments","i","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","useColors","window","type","__nwjs","navigator","userAgent","toLowerCase","match","document","documentElement","style","WebkitAppearance","console","firebug","exception","table","parseInt","RegExp","$1","formatArgs","namespace","humanize","diff","c","color","splice","index","lastC","replace","log","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","localstorage","localStorage","colors","require","formatters","j","v","JSON","stringify","message","EventEmitter","_events","_maxListeners","undefined","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","n","isNaN","TypeError","er","handler","err","context","slice","listener","m","newListener","warned","trace","fired","g","list","position","key","ret","listenerCount","evlistener","emitter","Function","debug","chrome","local","enable","chars","lookup","Uint8Array","charCodeAt","encode","arraybuffer","bytes","base64","substring","decode","bufferLength","encoded1","encoded2","encoded3","encoded4","p","ArrayBuffer","jsQR","Peer","io","state","isConnected","isCamera","peerId","show","qr","output","data","stream","video","socket","peer","peerConnected","searchText","controls","action","icon","app","Vue","el","mounted","initiator","trickle","signal","id","handleIncoming","toString","showError","methods","sendPeer","send","scanCode","$refs","mediaDevices","getUserMedia","facingMode","then","srcObject","setAttribute","play","requestAnimationFrame","tick","catch","connectRemote","searchNetflix","payload","text","videoAction","dataString","parse","Object","keys","includes","refreshWindow","location","reload","readyState","HAVE_ENOUGH_DATA","canvasElement","canvas","getContext","drawImage","width","height","imageData","getImageData","code","inversionAttempts","getTracks","forEach","track","stop"],"mappings":"AwDIA,AZJA,APAA,AJIA,IuBAA,AZJA,APAA,AJIA,EuBAA,AZJA,APAA,AJIA,GWJA,APAA,CmBKA,AvBAA,EuBAA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,CWJA,APAA,CmBIA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,CWLA,APAA,CmBKA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,EuBAA,AZNA,APAA,AJMA,MWNA,APAA,CmBMA,AvBAA,EuBsCA,AvBAA,MW5CA,APAA,GmB4CA,AvBAA,EuBAA,AvBAA,GuBEA,AvBAA,CW9CA,APAA,GOCA,APAA,EmB4CA,AvBAA,EuBAA,AvBAA,EW5CA,APAA,KmB4CA,AvBAA,IuBCA,AvBAA,OuBAA,AvBAA,EW7CA,APAA,EOAA,APAA,CmB6CA,AvBAA,CuBGA,AvBAA,GWhDA,APAA,CmBgDA,AvBAA,EuBAA,AvBAA,wHuBAA,AvBAA,KuBCA,AvBAA,GuBEA,AvBAA,GuBAA,AvBAA,EuBAA,AvBAA,CuBGA,AvBAA,IuBAA,AvBAA,EuBAA,AvBAA,WuBAA,AvBAA,EuBAA,AvBAA,IuBEA,AvBAA,QuBDA,AvBAA,EuBAA,AvBAA,IuBAA,AvBAA,MuBAA,AvBAA,euBEA,AvBAA,IuBAA,AvBAA,QuBCA,AvBAA,IuBAA,AvBAA,OuBCA,AvBAA,IuBAA,AvBAA,MuBCA,AvBAA,IuBAA,AvBAA,KuBCA,AvBAA,IuBAA,AvBAA,IuBCA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,EuBCA,AvBAA,IuBAA,AvBAA,OuBCA,AvBAA,IuBAA,AvBAA,MuBCA,AvBAA,IuBAA,AvBAA,IuBCA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,EuBCA,AvBAA,IuBAA,AvBAA,QuBCA,AvBAA,IuBAA,AvBAA,OuBCA,AvBAA,IuBAA,AvBAA,MuBCA,AvBAA,IuBAA,AvBAA,KuBCA,AvBAA,IuBAA,AvBAA,IuBCA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,EuBCA,AvBAA,IuBAA,AvBAA,UuBCA,AvBAA,IuBAA,AvBAA,SuBCA,AvBAA,IuBAA,AvBAA,OuBCA,AvBAA,IuBAA,AvBAA,MuBCA,AvBAA,IuBAA,AvBAA,IuBCA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,EuBCA,AvBAA,IuBAA,AvBAA,UuBCA,AvBAA,IuBAA,AvBAA,SuBCA,AvBAA,IuBAA,AvBAA,OuBCA,AvBAA,IuBAA,AvBAA,MuBCA,AvBAA,IuBAA,AvBAA,IuBCA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,EuBCA,AvBAA,IuBAA,AvBAA,euBCA,AvBAA,IuBAA,AvBAA,cuBCA,AvBAA,IuBAA,AvBAA,QuBCA,AvBAA,IuBAA,AvBAA,OuBCA,AvBAA,IuBAA,AvBAA,KuBCA,AvBAA,OuBAA,AvBAA,EuBCA,AvBAA,QuBCA,AvBAA,UuBYA,AvBAA,SuBAA,AvBAA,EuBAA,AvBAA,GuBCA,AvBAA,OuBAA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,KuBAA,AvBAA,MuBAA,AvBAA,EuBAA,AvBAA,GuBAA,AvBAA,IuBEA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,KuBAA,AvBAA,MuBAA,AvBAA,EuBAA,AvBAA,GuBAA,AvBAA,IuBEA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,KuBAA,AvBAA,MuBAA,AvBAA,EuBAA,AvBAA,GuBAA,AvBAA,IuBEA,AvBAA,GuBAA,AvBAA,EuBCA,AvBAA,KuBAA,AvBAA,MuBAA,AvBAA,EuBAA,AvBAA,GuBAA,AvBAA,IuBEA,AvBAA,EuBAA,AvBAA,KuBWA,AvBAA,SuBAA,AvBAA,EuBAA,AvBAA,GuBCA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,QuBCA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,SuBCA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,WuBCA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,WuBCA,AvBAA,EuBAA,AvBAA,MuBOA,AvBAA,SuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,EuBAA,AvBAA,GuBCA,AvBAA,KuBAA,AvBAA,EuBAA,AvBAA,GuBGA,AvBAA,OuBAA,AvBAA,EuBAA,AvBAA,IuBAA,AvBAA,EuBCA,AvBA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CA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,IACA,MAAA,MACA,MAAA,IACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,KACA,MAAA,MACA,MAAA,GACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,IACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,IACA,MAAA,IACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,IACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,MACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,MACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,IACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,IACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,IACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,IACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,IAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,KACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,MACA,MAAA,QAMA,SAAA,EAAA,EAAA,GAEA,aAEA,OAAA,eAAA,EAAA,aAAA,CAAA,OAAA,IACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,GAsHA,EAAA,OApCA,SAAA,EAAA,GACA,IAAA,EAAA,IAAA,kBAAA,EAAA,QACA,EAAA,IAAA,GAKA,IAJA,IAAA,EAAA,IAAA,EAAA,QAAA,IAAA,IAAA,GACA,EAAA,IAAA,EAAA,QAAA,EAAA,GACA,EAAA,IAAA,kBAAA,GACA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,gBACA,EAAA,EAAA,OAAA,EAAA,GAAA,EACA,IAAA,IACA,GAAA,GAGA,IAAA,EACA,OAAA,EAEA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,GACA,EAnGA,SAAA,EAAA,EAAA,EAAA,GAEA,EAAA,SAAA,EAAA,WACA,GAAA,EAAA,CAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAOA,IALA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,KACA,EAAA,EAAA,IAEA,EAAA,UAAA,EAAA,GAAA,CACA,IAAA,EAAA,EACA,EAAA,EAIA,GAFA,EAAA,GADA,EAAA,GAGA,SAEA,OAAA,KAEA,EAAA,EAIA,IAHA,IAAA,EAAA,EAAA,KACA,EAAA,EAAA,eAAA,EAAA,UACA,EAAA,EAAA,QAAA,GACA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CACA,IAAA,EAAA,EAAA,SAAA,EAAA,SACA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,UAAA,GACA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IACA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,IAGA,GADA,EAAA,EAAA,aAAA,GAAA,cAAA,GACA,EAAA,UAAA,EAAA,SACA,OAAA,KAGA,IAAA,EAAA,EAAA,eAAA,GACA,GAAA,IAAA,EACA,OAAA,KAEA,IAEA,EAFA,EAAA,EAAA,QAAA,GACA,MAAA,CAAA,EAAA,SAAA,GAAA,EAAA,SAAA,IA2DA,CAAA,EAAA,EAAA,cAAA,EAAA,GAAA,EAAA,GACA,GAAA,OAAA,EACA,OAAA,KAEA,IAAA,EA5DA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,SACA,GAAA,IAAA,EACA,MAAA,CAAA,EAAA,eAAA,IAIA,IAFA,IAAA,EAAA,IAAA,MAAA,GACA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,IACA,IAAA,EAAA,WAAA,KACA,EAAA,GAAA,EAAA,QAAA,GACA,KAGA,OAAA,IAAA,EACA,KAEA,EA2CA,CAAA,EAAA,EAAA,IACA,GAAA,MAAA,EACA,OAAA,KAGA,IADA,IAAA,EA7CA,SAAA,EAAA,EAAA,GAIA,IAFA,IAAA,EAAA,EAAA,OACA,EAAA,IAAA,MAAA,GACA,EAAA,EAAA,EAAA,EAAA,IAAA,CAGA,IAFA,IAAA,EAAA,EAAA,QAAA,EAAA,IACA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,IACA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,GAAA,MAGA,EAAA,GAAA,EAAA,SAAA,EAAA,WAAA,GAAA,EAAA,QAAA,IACA,IAAA,EAAA,gBACA,EAAA,GAAA,EAAA,SAAA,EAAA,GAAA,IAGA,OAAA,EA4BA,CAAA,EAAA,EAAA,GAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,IACA,GAAA,EAAA,EACA,OAAA,KAEA,EAAA,GAAA,EAAA,gBAAA,EAAA,GAAA,EAAA,IAEA,OAAA,IAOA,SAAA,EAAA,EAAA,GAEA,aAEA,OAAA,eAAA,EAAA,aAAA,CAAA,OAAA,IACA,EAAA,SAAA,CACA,CACA,SAAA,KACA,cAAA,EACA,wBAAA,GACA,sBAAA,CACA,CACA,oBAAA,EACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,OAIA,CACA,SAAA,KACA,cAAA,EACA,wBAAA,CAAA,EAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,QAIA,CACA,SAAA,KACA,cAAA,EACA,wBAAA,CAAA,EAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,QAIA,CACA,SAAA,KACA,cAAA,EACA,wBAAA,CAAA,EAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,OAIA,CACA,SAAA,KACA,cAAA,EACA,wBAAA,CAAA,EAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,OAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,KACA,cAAA,EACA,wBAAA,CAAA,EAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,QAIA,CACA,SAAA,MACA,cAAA,EACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,EACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,EACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,OAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,EAAA,sBAAA,OAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,GAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,GAAA,sBAAA,MAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,GAAA,sBAAA,QAIA,CACA,SAAA,MACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,GAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,GAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CAAA,CAAA,UAAA,GAAA,sBAAA,OAEA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,GAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,EAAA,sBAAA,KACA,CAAA,UAAA,GAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,EAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,QAKA,CACA,SAAA,OACA,cAAA,GACA,wBAAA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,sBAAA,CACA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,KACA,CAAA,UAAA,EAAA,sBAAA,OAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,MAGA,CACA,oBAAA,GACA,SAAA,CACA,CAAA,UAAA,GAAA,sBAAA,IACA,CAAA,UAAA,GAAA,sBAAA,UAUA,SAAA,EAAA,EAAA,GAEA,aAEA,OAAA,eAAA,EAAA,aAAA,CAAA,OAAA,IACA,IAAA,EAAA,EAAA,GACA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,GAAA,IAAA,GAAA,IAAA,EACA,MAAA,CACA,IAAA,EAAA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EACA,IAAA,EACA,IAAA,EAAA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EACA,IAAA,EACA,IAAA,EAAA,EACA,IAAA,EAAA,EACA,IAAA,GAIA,IAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,EAAA,GAAA,EACA,GAAA,EAAA,EAAA,EAAA,GAAA,EACA,MAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,IAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,IAAA,EACA,IAAA,EAAA,EACA,IAAA,EAAA,EACA,IAAA,GAyDA,EAAA,QAzBA,SAAA,EAAA,GAYA,IAXA,IAdA,EAAA,EAcA,EA7BA,SAAA,EAAA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,MAAA,CACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,KAiBA,CAAA,CAAA,EAAA,IAAA,EAAA,KAAA,CAAA,EAAA,EAAA,UAAA,IAAA,EAAA,KAAA,CAAA,EAAA,EAAA,UAAA,IAAA,EAAA,EAAA,UAAA,KAAA,CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,MACA,EAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,YACA,GAhBA,EAgBA,EAfA,CACA,KAFA,EAgBA,GAdA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAOA,EAAA,EAAA,UAAA,YAAA,EAAA,UAAA,EAAA,WACA,EAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IACA,MAAA,CACA,GAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EACA,GAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,KAAA,IAGA,EAAA,EAAA,EAAA,EAAA,UAAA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,UAAA,IAAA,CACA,IAEA,EAAA,EAFA,EAAA,GACA,EAAA,IAEA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,KAAA,MAAA,EAAA,GAAA,KAAA,MAAA,EAAA,KAGA,MAAA,CACA,OAAA,EACA,gBAAA,KAQA,SAAA,EAAA,EAAA,GAEA,aAEA,OAAA,eAAA,EAAA,aAAA,CAAA,OAAA,IACA,IAAA,EAAA,EACA,EAAA,GACA,EAAA,IACA,EAAA,SAAA,EAAA,GAAA,OAAA,KAAA,KAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA,KACA,SAAA,EAAA,GACA,OAAA,EAAA,OAAA,SAAA,EAAA,GAAA,OAAA,EAAA,IAuDA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAEA,EACA,EACA,EACA,EALA,EAAA,CAAA,CAAA,EAAA,KAAA,MAAA,EAAA,GAAA,EAAA,KAAA,MAAA,EAAA,KACA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,GAAA,KAAA,IAAA,EAAA,EAAA,EAAA,GAKA,GACA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,KAGA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,IASA,IAPA,IAAA,EAAA,KAAA,IAAA,EAAA,GACA,EAAA,KAAA,IAAA,EAAA,GACA,EAAA,KAAA,OAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,EAAA,GAAA,EACA,GAAA,EAEA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAIA,IAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,EAAA,KAAA,IACA,GAAA,EACA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IACA,EAAA,SAAA,EAAA,GACA,MAIA,IADA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,EACA,MAEA,GAAA,EACA,GAAA,GAIA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,IAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,GAAA,EAAA,EAAA,KAGA,EAAA,KAAA,GAGA,OAAA,EAKA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAMA,EANA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,QAAA,EAAA,QAAA,EACA,OAAA,EAAA,EAAA,OAAA,IAAA,OAAA,MAAA,EAAA,GAKA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,EAIA,OAHA,EAAA,QAAA,SAAA,EAAA,GACA,GAAA,KAAA,IAAA,EAAA,GAAA,EAAA,EAAA,KAEA,CAAA,YAAA,EAAA,MAAA,GAKA,SAAA,EAAA,EAAA,EAAA,GACA,IACA,IAAA,EAAA,EAAA,EAAA,CAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,QACA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,QAKA,EAAA,EAAA,EAJA,CACA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAEA,EAAA,EAAA,QAKA,EAAA,EAAA,EAJA,CACA,EAAA,KAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GAAA,GAEA,EAAA,EAAA,QACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,KAAA,EAAA,MAAA,EAAA,MACA,EAAA,MAAA,EAAA,MACA,EAAA,MAAA,EAAA,MACA,EAAA,MAAA,EAAA,OACA,GAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAKA,OAAA,GAJA,KAAA,IAAA,EAAA,YAAA,EAAA,GACA,KAAA,IAAA,EAAA,YAAA,EAAA,GACA,KAAA,IAAA,EAAA,YAAA,EAAA,GACA,KAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAGA,MAAA,GACA,OAAA,EAAA,GA6KA,EAAA,OA1KA,SAAA,GAkFA,IAjFA,IAAA,EAAA,GACA,EAAA,GACA,EAAA,GACA,EAAA,GACA,EAAA,SAAA,GAqEA,IApEA,IAAA,EAAA,EACA,GAAA,EACA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,SAAA,GACA,IAAA,EAAA,EAAA,IAAA,EAAA,GACA,GAAA,IAAA,EACA,QAEA,CACA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,EAAA,EACA,EAAA,EAEA,IAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,IAAA,EAAA,GAAA,GAAA,GACA,KAAA,IAAA,EAAA,GAAA,GAAA,GACA,KAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GACA,KAAA,IAAA,EAAA,GAAA,GAAA,GACA,KAAA,IAAA,EAAA,GAAA,GAAA,IACA,EAEA,EAAA,EAAA,EAAA,OAAA,IAAA,EACA,EAAA,KAAA,IAAA,EAAA,GAAA,GAAA,GACA,KAAA,IAAA,EAAA,GAAA,GAAA,GACA,KAAA,IAAA,EAAA,GAAA,GAAA,GACA,EACA,GAAA,EAAA,CAEA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,EAAA,IAGA,EAAA,EAAA,OAAA,SAAA,GACA,OAAA,GAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,MACA,GAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,MACA,GAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,MAAA,EAAA,IAAA,EAAA,OAAA,KAAA,EAAA,OAAA,QAAA,GACA,EAAA,IAAA,EAAA,OAAA,KAAA,EAAA,OAAA,QAAA,KAEA,OAAA,EACA,EAAA,GAAA,OAAA,EAGA,EAAA,KAAA,CAAA,IAAA,EAAA,OAAA,IAGA,GAAA,EAAA,CAEA,IAKA,EALA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,IAGA,EAAA,EAAA,OAAA,SAAA,GACA,OAAA,GAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,MACA,GAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,MACA,GAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,MAAA,EAAA,IAAA,EAAA,OAAA,KAAA,EAAA,OAAA,QAAA,GACA,EAAA,IAAA,EAAA,OAAA,KAAA,EAAA,OAAA,QAAA,KAEA,OAAA,EACA,EAAA,GAAA,OAAA,EAGA,EAAA,KAAA,CAAA,IAAA,EAAA,OAAA,OAKA,GAAA,EAAA,GAAA,EAAA,MAAA,IACA,EAAA,GAEA,EAAA,KAAA,MAAA,EAAA,EAAA,OAAA,SAAA,GAAA,OAAA,EAAA,OAAA,IAAA,GAAA,EAAA,OAAA,EAAA,EAAA,IAAA,GAAA,KACA,EAAA,EAAA,OAAA,SAAA,GAAA,OAAA,EAAA,OAAA,IAAA,IACA,EAAA,KAAA,MAAA,EAAA,EAAA,OAAA,SAAA,GAAA,OAAA,EAAA,OAAA,IAAA,KACA,EAAA,EAAA,OAAA,SAAA,GAAA,OAAA,EAAA,OAAA,IAAA,KAEA,EAAA,EAAA,GAAA,EAAA,OAAA,IACA,EAAA,GAEA,EAAA,KAAA,MAAA,EAAA,EAAA,OAAA,SAAA,GAAA,OAAA,EAAA,OAAA,EAAA,EAAA,IAAA,GAAA,KACA,EAAA,KAAA,MAAA,EAAA,GACA,IAAA,EAAA,EACA,OAAA,SAAA,GAAA,OAAA,EAAA,OAAA,EAAA,EAAA,IAAA,GAAA,IACA,IAAA,SAAA,GACA,IAAA,GAAA,EAAA,IAAA,OAAA,EAAA,IAAA,KAAA,EAAA,OAAA,OAAA,EAAA,OAAA,MAAA,EACA,GAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EACA,GAAA,EAAA,IAAA,KAAA,MAAA,GAAA,KAAA,MAAA,IAAA,CAGA,IAAA,EAAA,CAAA,EAAA,IAAA,KAAA,EAAA,IAAA,OAAA,EAAA,OAAA,KAAA,EAAA,OAAA,OAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,GACA,EAAA,EAAA,GAAA,EAAA,OAEA,MAAA,CAAA,MADA,EAAA,CAAA,EAAA,KAAA,MAAA,GAAA,EAAA,KAAA,MAAA,IAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,EAAA,EAAA,EAAA,KAAA,MAEA,OAAA,SAAA,GAAA,QAAA,IACA,KAAA,SAAA,EAAA,GAAA,OAAA,EAAA,MAAA,EAAA,QACA,IAAA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,EACA,OAAA,KAEA,IAAA,EAAA,EACA,OAAA,SAAA,EAAA,GAAA,OAAA,IAAA,IACA,IAAA,SAAA,GAAA,MAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,MAAA,EAAA,MAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,GAAA,EAAA,KAAA,KAAA,EAAA,QACA,KAAA,SAAA,EAAA,GAAA,OAAA,EAAA,MAAA,EAAA,QACA,GAAA,EAAA,OAAA,EACA,OAAA,KAEA,IAAA,EAAA,EAAA,MAAA,EAAA,GAAA,MAAA,EAAA,GAAA,MACA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAA,EAAA,MAAA,EAAA,IAAA,MAAA,KAEA,OAAA,SAAA,GAAA,QAAA,IACA,KAAA,SAAA,EAAA,GAAA,OAAA,EAAA,MAAA,EAAA,QACA,GAAA,IAAA,EAAA,OACA,OAAA,KAEA,IAGA,EACA,EAJA,EAlSA,SAAA,EAAA,EAAA,GAEA,IAGA,EACA,EACA,EAkBA,EAAA,EAAA,EAAA,EAvBA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAoBA,OAfA,GAAA,GAAA,GAAA,GACA,GAAA,EAAA,CAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAEA,GAAA,GAAA,GAAA,GACA,GAAA,EAAA,CAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,KAGA,GAAA,EAAA,CAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,KAKA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,IACA,GAAA,EAAA,CAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAEA,CAAA,WAAA,EAAA,QAAA,EAAA,SAAA,GA0QA,CAAA,EAAA,GAAA,OAAA,GAAA,EAAA,GAAA,OAAA,GAAA,EAAA,GAAA,OAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,WAKA,IACA,EA5QA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EACA,MAAA,IAAA,MAAA,uBAEA,IAAA,EAAA,KAAA,MAAA,EAAA,EAAA,GAAA,GACA,EAAA,KAAA,MAAA,EAAA,EAAA,GAAA,GACA,EAAA,KAAA,OAAA,EAAA,GAAA,GAAA,EACA,OAAA,EAAA,GACA,KAAA,EACA,IACA,MACA,KAAA,EACA,IAGA,MAAA,CAAA,UAAA,EAAA,WAAA,GAyPA,CAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAEA,MAAA,GACA,OAAA,KAGA,IAmCA,EAnCA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EADA,EAEA,EAAA,EAAA,EAAA,EAAA,EAAA,EAEA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,CACA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAEA,EAAA,EACA,IAAA,SAAA,GACA,IAAA,GAAA,EAAA,IAAA,OAAA,EAAA,IAAA,KAAA,EAAA,OAAA,OAAA,EAAA,OAAA,MAAA,EACA,GAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EACA,GAAA,EAAA,IAAA,KAAA,MAAA,GAAA,KAAA,MAAA,IAAA,CAGA,IAAA,EAAA,CAAA,EAAA,IAAA,KAAA,EAAA,IAAA,OAAA,EAAA,OAAA,KAAA,EAAA,OAAA,OAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,GAIA,OAHA,EAAA,GAGA,CAAA,EAAA,EAAA,EAAA,EAAA,MAFA,EAAA,CAAA,EAAA,KAAA,MAAA,GAAA,EAAA,KAAA,MAAA,IAAA,CAAA,EAAA,EAAA,GAAA,GACA,EAAA,CAAA,EAAA,EAAA,EAAA,GAAA,OAGA,OAAA,SAAA,GAAA,QAAA,IACA,KAAA,SAAA,EAAA,GAAA,OAAA,EAAA,MAAA,EAAA,QAGA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,GAAA,EACA,MAAA,CACA,iBAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,UAAA,EACA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,SAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAQA;;ACjyTA,IAAA,EAAA,IACA,EAAA,GAAA,EACA,EAAA,GAAA,EACA,EAAA,GAAA,EACA,EAAA,EAAA,EACA,EAAA,OAAA,EAsCA,SAAA,EAAA,GAEA,MADA,EAAA,OAAA,IACA,OAAA,KAAA,CAGA,IAAA,EAAA,uIAAA,KACA,GAEA,GAAA,EAAA,CAGA,IAAA,EAAA,WAAA,EAAA,IAEA,QADA,EAAA,IAAA,MAAA,eAEA,IAAA,QACA,IAAA,OACA,IAAA,MACA,IAAA,KACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,QACA,IAAA,OACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,OACA,IAAA,MACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,QACA,IAAA,OACA,IAAA,MACA,IAAA,KACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,UACA,IAAA,SACA,IAAA,OACA,IAAA,MACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,UACA,IAAA,SACA,IAAA,OACA,IAAA,MACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,eACA,IAAA,cACA,IAAA,QACA,IAAA,OACA,IAAA,KACA,OAAA,EACA,QACA,UAYA,SAAA,EAAA,GACA,IAAA,EAAA,KAAA,IAAA,GACA,OAAA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,EAAA,KAWA,SAAA,EAAA,GACA,IAAA,EAAA,KAAA,IAAA,GACA,OAAA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAEA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,QAEA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,UAEA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,UAEA,EAAA,MAOA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,GAAA,IAAA,EACA,OAAA,KAAA,MAAA,EAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAvIA,OAAA,QAAA,SAAA,EAAA,GACA,EAAA,GAAA,GACA,IAAA,SAAA,EACA,GAAA,WAAA,GAAA,EAAA,OAAA,EACA,OAAA,EAAA,GACA,GAAA,WAAA,IAAA,IAAA,MAAA,GACA,OAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAEA,MAAA,IAAA,MACA,wDACA,KAAA,UAAA;;AC7BA,SAAA,EAAA,GAsCA,SAAA,EAAA,GACA,IAAA,EAAA,EAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,GAAA,GAAA,EAAA,EAAA,WAAA,GACA,GAAA,EAGA,OAAA,EAAA,OAAA,KAAA,IAAA,GAAA,EAAA,OAAA,QAWA,SAAA,EAAA,GACA,IAAA,EAEA,SAAA,KAAA,GAEA,IAAA,EAAA,QACA,OAGA,MAAA,EAAA,EAGA,EAAA,OAAA,IAAA,MACA,EAAA,GAAA,GAAA,GACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,EAEA,EAAA,GAAA,EAAA,OAAA,EAAA,IAEA,iBAAA,EAAA,IAEA,EAAA,QAAA,MAIA,IAAA,EAAA,EACA,EAAA,GAAA,EAAA,GAAA,QAAA,gBAAA,CAAA,EAAA,KAEA,GAAA,OAAA,EACA,OAAA,EAEA,IACA,MAAA,EAAA,EAAA,WAAA,GACA,GAAA,mBAAA,EAAA,CACA,MAAA,EAAA,EAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAGA,EAAA,OAAA,EAAA,GACA,IAEA,OAAA,IAIA,EAAA,WAAA,KAAA,EAAA,IAEA,EAAA,KAAA,EAAA,KACA,MAAA,EAAA,GAmBA,OAhBA,EAAA,UAAA,EACA,EAAA,QAAA,EAAA,QAAA,GACA,EAAA,UAAA,EAAA,YACA,EAAA,MAAA,EAAA,GACA,EAAA,QAAA,EACA,EAAA,OAAA,EAKA,mBAAA,EAAA,MACA,EAAA,KAAA,GAGA,EAAA,UAAA,KAAA,GAEA,EAGA,SAAA,IACA,MAAA,EAAA,EAAA,UAAA,QAAA,MACA,OAAA,IAAA,IACA,EAAA,UAAA,OAAA,EAAA,IACA,GAKA,SAAA,EAAA,EAAA,GACA,MAAA,EAAA,EAAA,KAAA,gBAAA,IAAA,EAAA,IAAA,GAAA,GAEA,OADA,EAAA,IAAA,KAAA,IACA,EA6FA,SAAA,EAAA,GACA,OAAA,EAAA,WACA,UAAA,EAAA,EAAA,WAAA,OAAA,GACA,QAAA,UAAA,KAmBA,OA/PA,EAAA,MAAA,EACA,EAAA,QAAA,EACA,EAAA,OAoPA,SAAA,GACA,GAAA,aAAA,MACA,OAAA,EAAA,OAAA,EAAA,QAEA,OAAA,GAvPA,EAAA,QAwLA,WACA,MAAA,EAAA,IACA,EAAA,MAAA,IAAA,MACA,EAAA,MAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IACA,KAAA,KAEA,OADA,EAAA,OAAA,IACA,GA7LA,EAAA,OAkJA,SAAA,GAMA,IAAA,EALA,EAAA,KAAA,GAEA,EAAA,MAAA,GACA,EAAA,MAAA,GAGA,MAAA,GAAA,iBAAA,EAAA,EAAA,IAAA,MAAA,UACA,EAAA,EAAA,OAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,KAOA,OAFA,EAAA,EAAA,GAAA,QAAA,MAAA,QAEA,GACA,EAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAAA,GAAA,MAEA,EAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAIA,IAAA,EAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,CACA,MAAA,EAAA,EAAA,UAAA,GACA,EAAA,QAAA,EAAA,QAAA,EAAA,aA5KA,EAAA,QAsMA,SAAA,GACA,GAAA,MAAA,EAAA,EAAA,OAAA,GACA,OAAA,EAGA,IAAA,EACA,EAEA,IAAA,EAAA,EAAA,EAAA,EAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,EAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAIA,IAAA,EAAA,EAAA,EAAA,EAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,EAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAIA,OAAA,GAzNA,EAAA,SAAA,QAAA,MAEA,OAAA,KAAA,GAAA,QAAA,IACA,EAAA,GAAA,EAAA,KAMA,EAAA,UAAA,GAMA,EAAA,MAAA,GACA,EAAA,MAAA,GAOA,EAAA,WAAA,GAkBA,EAAA,YAAA,EA8MA,EAAA,OAAA,EAAA,QAEA,EAGA,OAAA,QAAA;;;ACxQA,IAOIA,EACAC,EARAC,EAAUC,OAAOC,QAAU,GAU/B,SAASC,IACC,MAAA,IAAIC,MAAM,mCAEpB,SAASC,IACC,MAAA,IAAID,MAAM,qCAsBpB,SAASE,EAAWC,GACZT,GAAAA,IAAqBU,WAEdA,OAAAA,WAAWD,EAAK,GAGvB,IAACT,IAAqBK,IAAqBL,IAAqBU,WAEzDA,OADPV,EAAmBU,WACZA,WAAWD,EAAK,GAEvB,IAEOT,OAAAA,EAAiBS,EAAK,GAC/B,MAAME,GACA,IAEOX,OAAAA,EAAiBY,KAAK,KAAMH,EAAK,GAC1C,MAAME,GAEGX,OAAAA,EAAiBY,KAAK,KAAMH,EAAK,KAMpD,SAASI,EAAgBC,GACjBb,GAAAA,IAAuBc,aAEhBA,OAAAA,aAAaD,GAGpB,IAACb,IAAuBM,IAAwBN,IAAuBc,aAEhEA,OADPd,EAAqBc,aACdA,aAAaD,GAEpB,IAEOb,OAAAA,EAAmBa,GAC5B,MAAOH,GACD,IAEOV,OAAAA,EAAmBW,KAAK,KAAME,GACvC,MAAOH,GAGEV,OAAAA,EAAmBW,KAAK,KAAME,MAjEhD,WACO,IAEId,EADsB,mBAAfU,WACYA,WAEAL,EAEzB,MAAOM,GACLX,EAAmBK,EAEnB,IAEIJ,EADwB,mBAAjBc,aACcA,aAEAR,EAE3B,MAAOI,GACLV,EAAqBM,GAjB5B,GAwED,IAEIS,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAaK,OACbJ,EAAQD,EAAaM,OAAOL,GAE5BE,GAAc,EAEdF,EAAMI,QACNE,KAIR,SAASA,IACDL,IAAAA,EAAAA,CAGAM,IAAAA,EAAUhB,EAAWY,GACzBF,GAAW,EAGLO,IADFA,IAAAA,EAAMR,EAAMI,OACVI,GAAK,CAGA,IAFPT,EAAeC,EACfA,EAAQ,KACCE,EAAaM,GACdT,GACAA,EAAaG,GAAYO,MAGjCP,GAAc,EACdM,EAAMR,EAAMI,OAEhBL,EAAe,KACfE,GAAW,EACXL,EAAgBW,IAiBpB,SAASG,EAAKlB,EAAKmB,GACVnB,KAAAA,IAAMA,EACNmB,KAAAA,MAAQA,EAYjB,SAASC,KA5BT3B,EAAQ4B,SAAW,SAAUrB,GACrBsB,IAAAA,EAAO,IAAIC,MAAMC,UAAUZ,OAAS,GACpCY,GAAAA,UAAUZ,OAAS,EACd,IAAA,IAAIa,EAAI,EAAGA,EAAID,UAAUZ,OAAQa,IAClCH,EAAKG,EAAI,GAAKD,UAAUC,GAGhCjB,EAAMkB,KAAK,IAAIR,EAAKlB,EAAKsB,IACJ,IAAjBd,EAAMI,QAAiBH,GACvBV,EAAWe,IASnBI,EAAKS,UAAUV,IAAM,WACZjB,KAAAA,IAAI4B,MAAM,KAAM,KAAKT,QAE9B1B,EAAQoC,MAAQ,UAChBpC,EAAQqC,SAAU,EAClBrC,EAAQsC,IAAM,GACdtC,EAAQuC,KAAO,GACfvC,EAAQwC,QAAU,GAClBxC,EAAQyC,SAAW,GAInBzC,EAAQ0C,GAAKf,EACb3B,EAAQ2C,YAAchB,EACtB3B,EAAQ4C,KAAOjB,EACf3B,EAAQ6C,IAAMlB,EACd3B,EAAQ8C,eAAiBnB,EACzB3B,EAAQ+C,mBAAqBpB,EAC7B3B,EAAQgD,KAAOrB,EACf3B,EAAQiD,gBAAkBtB,EAC1B3B,EAAQkD,oBAAsBvB,EAE9B3B,EAAQmD,UAAY,SAAUC,GAAe,MAAA,IAE7CpD,EAAQqD,QAAU,SAAUD,GAClB,MAAA,IAAIhD,MAAM,qCAGpBJ,EAAQsD,IAAM,WAAqB,MAAA,KACnCtD,EAAQuD,MAAQ,SAAUC,GAChB,MAAA,IAAIpD,MAAM,mCAEpBJ,EAAQyD,MAAQ,WAAoB,OAAA;;;AC0EpC,IAAA,EAAA,QAAA,WAxJA,SAASC,IAIJ,QAAkB,oBAAXC,SAA0BA,OAAO3D,SAAoC,aAAxB2D,OAAO3D,QAAQ4D,OAAuBD,OAAO3D,QAAQ6D,UAKpF,oBAAdC,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUC,cAAcC,MAAM,4BAM3E,oBAAbC,UAA4BA,SAASC,iBAAmBD,SAASC,gBAAgBC,OAASF,SAASC,gBAAgBC,MAAMC,kBAEpH,oBAAXV,QAA0BA,OAAOW,UAAYX,OAAOW,QAAQC,SAAYZ,OAAOW,QAAQE,WAAab,OAAOW,QAAQG,QAGrG,oBAAdX,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,mBAAqBS,SAASC,OAAOC,GAAI,KAAO,IAE9H,oBAAdd,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,uBAStG,SAASY,EAAWhD,GAQf,GAPJA,EAAK,IAAM,KAAK6B,UAAY,KAAO,IAClC,KAAKoB,WACJ,KAAKpB,UAAY,MAAQ,KAC1B7B,EAAK,IACJ,KAAK6B,UAAY,MAAQ,KAC1B,IAAMzD,OAAOC,QAAQ6E,SAAS,KAAKC,OAE/B,KAAKtB,UACT,OAGKuB,MAAAA,EAAI,UAAY,KAAKC,MAC3BrD,EAAKsD,OAAO,EAAG,EAAGF,EAAG,kBAKjBG,IAAAA,EAAQ,EACRC,EAAQ,EACZxD,EAAK,GAAGyD,QAAQ,cAAerB,IAChB,OAAVA,IAGJmB,IACc,OAAVnB,IAGHoB,EAAQD,MAIVvD,EAAKsD,OAAOE,EAAO,EAAGJ,GASvB,SAASM,KAAO1D,GAGR,MAAmB,iBAAZyC,SACbA,QAAQiB,KACRjB,QAAQiB,OAAO1D,GASjB,SAAS2D,EAAKC,GACT,IACCA,EACHvF,QAAQwF,QAAQC,QAAQ,QAASF,GAEjCvF,QAAQwF,QAAQE,WAAW,SAE3B,MAAOC,KAYV,SAASC,IACJC,IAAAA,EACA,IACHA,EAAI7F,QAAQwF,QAAQM,QAAQ,SAC3B,MAAOH,IAUFE,OAJFA,QAAwB,IAAZ/F,GAA2B,QAASA,IACpD+F,OAAA,GAGMA,EAcR,SAASE,IACJ,IAGIC,OAAAA,aACN,MAAOL,KA7OV3F,QAAQqF,IAAMA,EACdrF,QAAQ2E,WAAaA,EACrB3E,QAAQsF,KAAOA,EACftF,QAAQ4F,KAAOA,EACf5F,QAAQwD,UAAYA,EACpBxD,QAAQwF,QAAUO,IAMlB/F,QAAQiG,OAAS,CAChB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WA4JDlG,OAAOC,QAAUkG,QAAQ,WAARA,CAAoBlG,SAErC,MAAM,WAACmG,GAAcpG,OAAOC,QAM5BmG,EAAWC,EAAI,SAAUC,GACpB,IACIC,OAAAA,KAAKC,UAAUF,GACrB,MAAOV,GACD,MAAA,+BAAiCA,EAAMa;;ACnQhD,OAAA,QAAA,WACA,GAAA,oBAAA,OAAA,OAAA,KACA,IAAA,EAAA,CACA,kBAAA,OAAA,mBAAA,OAAA,sBACA,OAAA,wBACA,sBAAA,OAAA,uBACA,OAAA,0BAAA,OAAA,4BACA,gBAAA,OAAA,iBAAA,OAAA,oBACA,OAAA,uBAEA,OAAA,EAAA,kBACA,EADA;;ACZA,mBAAA,OAAA,OAEA,OAAA,QAAA,SAAA,EAAA,GACA,EAAA,OAAA,EACA,EAAA,UAAA,OAAA,OAAA,EAAA,UAAA,CACA,YAAA,CACA,MAAA,EACA,YAAA,EACA,UAAA,EACA,cAAA,MAMA,OAAA,QAAA,SAAA,EAAA,GACA,EAAA,OAAA,EACA,IAAA,EAAA,aACA,EAAA,UAAA,EAAA,UACA,EAAA,UAAA,IAAA,EACA,EAAA,UAAA,YAAA;;ACpBA,aAEA,QAAA,WAAA,EACA,QAAA,YAAA,EACA,QAAA,cAAA,EAOA,IALA,IAAA,EAAA,GACA,EAAA,GACA,EAAA,oBAAA,WAAA,WAAA,MAEA,EAAA,mEACA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,IAAA,EACA,EAAA,GAAA,EAAA,GACA,EAAA,EAAA,WAAA,IAAA,EAQA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,OAEA,GAAA,EAAA,EAAA,EACA,MAAA,IAAA,MAAA,kDAKA,IAAA,EAAA,EAAA,QAAA,KAOA,OANA,IAAA,IAAA,EAAA,GAMA,CAAA,EAJA,IAAA,EACA,EACA,EAAA,EAAA,GAMA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,OAAA,GAAA,EAAA,GAAA,EAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,GAAA,EAAA,GAAA,EAAA,EAGA,SAAA,EAAA,GAeA,IAdA,IAAA,EACA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,EAAA,EAAA,GAEA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAEA,EAAA,EAGA,EAAA,EAAA,EACA,EAAA,EACA,EAEA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EACA,EAAA,EAAA,WAAA,KAAA,GACA,EAAA,EAAA,WAAA,EAAA,KAAA,GACA,EAAA,EAAA,WAAA,EAAA,KAAA,EACA,EAAA,EAAA,WAAA,EAAA,IACA,EAAA,KAAA,GAAA,GAAA,IACA,EAAA,KAAA,GAAA,EAAA,IACA,EAAA,KAAA,IAAA,EAmBA,OAhBA,IAAA,IACA,EACA,EAAA,EAAA,WAAA,KAAA,EACA,EAAA,EAAA,WAAA,EAAA,KAAA,EACA,EAAA,KAAA,IAAA,GAGA,IAAA,IACA,EACA,EAAA,EAAA,WAAA,KAAA,GACA,EAAA,EAAA,WAAA,EAAA,KAAA,EACA,EAAA,EAAA,WAAA,EAAA,KAAA,EACA,EAAA,KAAA,GAAA,EAAA,IACA,EAAA,KAAA,IAAA,GAGA,EAGA,SAAA,EAAA,GACA,OAAA,EAAA,GAAA,GAAA,IACA,EAAA,GAAA,GAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,GAGA,SAAA,EAAA,EAAA,EAAA,GAGA,IAFA,IAAA,EACA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,GACA,EAAA,IAAA,GAAA,WACA,EAAA,EAAA,IAAA,EAAA,QACA,IAAA,EAAA,EAAA,IACA,EAAA,KAAA,EAAA,IAEA,OAAA,EAAA,KAAA,IAGA,SAAA,EAAA,GAQA,IAPA,IAAA,EACA,EAAA,EAAA,OACA,EAAA,EAAA,EACA,EAAA,GAIA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAHA,MAIA,EAAA,KAAA,EACA,EAAA,EAAA,EALA,MAKA,EAAA,EAAA,EALA,QA2BA,OAjBA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KACA,EAAA,GAAA,GACA,EAAA,GAAA,EAAA,IACA,OAEA,IAAA,IACA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GACA,EAAA,KACA,EAAA,GAAA,IACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,IACA,MAIA,EAAA,KAAA,IAnIA,EAAA,IAAA,WAAA,IAAA,GACA,EAAA,IAAA,WAAA,IAAA;;ACnBA,QAAA,KAAA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,EAAA,GAOA,IALA,GAAA,EAEA,EAAA,GAAA,IAAA,GAAA,EACA,KAAA,EACA,GAAA,EACA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAKA,IAHA,EAAA,GAAA,IAAA,GAAA,EACA,KAAA,EACA,GAAA,EACA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAEA,GAAA,IAAA,EACA,EAAA,EAAA,MACA,CAAA,GAAA,IAAA,EACA,OAAA,EAAA,IAAA,EAAA,GAAA,GAAA,EAAA,GAEA,GAAA,KAAA,IAAA,EAAA,GACA,GAAA,EAEA,OAAA,GAAA,EAAA,GAAA,EAAA,KAAA,IAAA,EAAA,EAAA,IAGA,QAAA,MAAA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,EACA,EAAA,KAAA,EAAA,KAAA,IAAA,GAAA,IAAA,KAAA,IAAA,GAAA,IAAA,EACA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAAA,IAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAmCA,IAjCA,EAAA,KAAA,IAAA,GAEA,MAAA,IAAA,IAAA,EAAA,GACA,EAAA,MAAA,GAAA,EAAA,EACA,EAAA,IAEA,EAAA,KAAA,MAAA,KAAA,IAAA,GAAA,KAAA,KACA,GAAA,EAAA,KAAA,IAAA,GAAA,IAAA,IACA,IACA,GAAA,IAGA,GADA,EAAA,GAAA,EACA,EAAA,EAEA,EAAA,KAAA,IAAA,EAAA,EAAA,IAEA,GAAA,IACA,IACA,GAAA,GAGA,EAAA,GAAA,GACA,EAAA,EACA,EAAA,GACA,EAAA,GAAA,GACA,GAAA,EAAA,EAAA,GAAA,KAAA,IAAA,EAAA,GACA,GAAA,IAEA,EAAA,EAAA,KAAA,IAAA,EAAA,EAAA,GAAA,KAAA,IAAA,EAAA,GACA,EAAA,IAIA,GAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,GAIA,IAFA,EAAA,GAAA,EAAA,EACA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,GAEA,EAAA,EAAA,EAAA,IAAA,IAAA;;AClFA,IAAA,EAAA,GAAA,SAEA,OAAA,QAAA,MAAA,SAAA,SAAA,GACA,MAAA,kBAAA,EAAA,KAAA;;;;AC0vDA,IAAA,EAAA,UAAA,GAnvDA,EAAA,QAAA,aACA,EAAA,QAAA,WACA,EAAA,QAAA,WAuCA,SAAA,IACA,IACA,IAAA,EAAA,IAAA,WAAA,GAEA,OADA,EAAA,UAAA,CAAA,UAAA,WAAA,UAAA,IAAA,WAAA,OAAA,KACA,KAAA,EAAA,OACA,mBAAA,EAAA,UACA,IAAA,EAAA,SAAA,EAAA,GAAA,WACA,MAAA,GACA,OAAA,GAIA,SAAA,IACA,OAAA,EAAA,oBACA,WACA,WAGA,SAAA,EAAA,EAAA,GACA,GAAA,IAAA,EACA,MAAA,IAAA,WAAA,8BAcA,OAZA,EAAA,qBAEA,EAAA,IAAA,WAAA,IACA,UAAA,EAAA,WAGA,OAAA,IACA,EAAA,IAAA,EAAA,IAEA,EAAA,OAAA,GAGA,EAaA,SAAA,EAAA,EAAA,EAAA,GACA,KAAA,EAAA,qBAAA,gBAAA,GACA,OAAA,IAAA,EAAA,EAAA,EAAA,GAIA,GAAA,iBAAA,EAAA,CACA,GAAA,iBAAA,EACA,MAAA,IAAA,MACA,qEAGA,OAAA,EAAA,KAAA,GAEA,OAAA,EAAA,KAAA,EAAA,EAAA,GAWA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,yCAGA,MAAA,oBAAA,aAAA,aAAA,YACA,EAAA,EAAA,EAAA,EAAA,GAGA,iBAAA,EACA,EAAA,EAAA,EAAA,GAGA,EAAA,EAAA,GA4BA,SAAA,EAAA,GACA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,oCACA,GAAA,EAAA,EACA,MAAA,IAAA,WAAA,wCAIA,SAAA,EAAA,EAAA,EAAA,EAAA,GAEA,OADA,EAAA,GACA,GAAA,EACA,EAAA,EAAA,QAEA,IAAA,EAIA,iBAAA,EACA,EAAA,EAAA,GAAA,KAAA,EAAA,GACA,EAAA,EAAA,GAAA,KAAA,GAEA,EAAA,EAAA,GAWA,SAAA,EAAA,EAAA,GAGA,GAFA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KACA,EAAA,oBACA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,GAAA,EAGA,OAAA,EAgBA,SAAA,EAAA,EAAA,EAAA,GAKA,GAJA,iBAAA,GAAA,KAAA,IACA,EAAA,SAGA,EAAA,WAAA,GACA,MAAA,IAAA,UAAA,8CAGA,IAAA,EAAA,EAAA,EAAA,EAAA,GAGA,GAFA,EAAA,EAAA,EAAA,IAEA,MAAA,EAAA,GASA,OAPA,IAAA,IAIA,EAAA,EAAA,MAAA,EAAA,IAGA,EAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QACA,EAAA,EAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAEA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GAGA,GAFA,EAAA,WAEA,EAAA,GAAA,EAAA,WAAA,EACA,MAAA,IAAA,WAAA,6BAGA,GAAA,EAAA,WAAA,GAAA,GAAA,GACA,MAAA,IAAA,WAAA,6BAmBA,OAfA,OADA,IAAA,QAAA,IAAA,EACA,IAAA,WAAA,QACA,IAAA,EACA,IAAA,WAAA,EAAA,GAEA,IAAA,WAAA,EAAA,EAAA,GAGA,EAAA,qBAEA,EAAA,GACA,UAAA,EAAA,UAGA,EAAA,EAAA,EAAA,GAEA,EAGA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,SAAA,GAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,QAGA,OAAA,KAFA,EAAA,EAAA,EAAA,IAEA,OACA,GAGA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,GAGA,GAAA,EAAA,CACA,GAAA,oBAAA,aACA,EAAA,kBAAA,aAAA,WAAA,EACA,MAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,QACA,EAAA,EAAA,GAEA,EAAA,EAAA,GAGA,GAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MACA,OAAA,EAAA,EAAA,EAAA,MAIA,MAAA,IAAA,UAAA,sFAGA,SAAA,EAAA,GAGA,GAAA,GAAA,IACA,MAAA,IAAA,WAAA,0DACA,IAAA,SAAA,IAAA,UAEA,OAAA,EAAA,EAGA,SAAA,EAAA,GAIA,OAHA,GAAA,IACA,EAAA,GAEA,EAAA,OAAA,GA+EA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,SAAA,GACA,OAAA,EAAA,OAEA,GAAA,oBAAA,aAAA,mBAAA,YAAA,SACA,YAAA,OAAA,IAAA,aAAA,aACA,OAAA,EAAA,WAEA,iBAAA,IACA,EAAA,GAAA,GAGA,IAAA,EAAA,EAAA,OACA,GAAA,IAAA,EAAA,OAAA,EAIA,IADA,IAAA,GAAA,IAEA,OAAA,GACA,IAAA,QACA,IAAA,SACA,IAAA,SACA,OAAA,EACA,IAAA,OACA,IAAA,QACA,UAAA,EACA,OAAA,EAAA,GAAA,OACA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,OAAA,EAAA,EACA,IAAA,MACA,OAAA,IAAA,EACA,IAAA,SACA,OAAA,EAAA,GAAA,OACA,QACA,GAAA,EAAA,OAAA,EAAA,GAAA,OACA,GAAA,GAAA,GAAA,cACA,GAAA,GAMA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,GAAA,EAcA,SALA,IAAA,GAAA,EAAA,KACA,EAAA,GAIA,EAAA,KAAA,OACA,MAAA,GAOA,SAJA,IAAA,GAAA,EAAA,KAAA,UACA,EAAA,KAAA,QAGA,GAAA,EACA,MAAA,GAOA,IAHA,KAAA,KACA,KAAA,GAGA,MAAA,GAKA,IAFA,IAAA,EAAA,UAGA,OAAA,GACA,IAAA,MACA,OAAA,EAAA,KAAA,EAAA,GAEA,IAAA,OACA,IAAA,QACA,OAAA,EAAA,KAAA,EAAA,GAEA,IAAA,QACA,OAAA,EAAA,KAAA,EAAA,GAEA,IAAA,SACA,IAAA,SACA,OAAA,EAAA,KAAA,EAAA,GAEA,IAAA,SACA,OAAA,EAAA,KAAA,EAAA,GAEA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,OAAA,EAAA,KAAA,EAAA,GAEA,QACA,GAAA,EAAA,MAAA,IAAA,UAAA,qBAAA,GACA,GAAA,EAAA,IAAA,cACA,GAAA,GASA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GACA,EAAA,GAAA,EAAA,GACA,EAAA,GAAA,EAmIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,GAAA,IAAA,EAAA,OAAA,OAAA,EAmBA,GAhBA,iBAAA,GACA,EAAA,EACA,EAAA,GACA,EAAA,WACA,EAAA,WACA,GAAA,aACA,GAAA,YAEA,GAAA,EACA,MAAA,KAEA,EAAA,EAAA,EAAA,EAAA,OAAA,GAIA,EAAA,IAAA,EAAA,EAAA,OAAA,GACA,GAAA,EAAA,OAAA,CACA,GAAA,EAAA,OAAA,EACA,EAAA,EAAA,OAAA,OACA,GAAA,EAAA,EAAA,CACA,IAAA,EACA,OAAA,EADA,EAAA,EAUA,GALA,iBAAA,IACA,EAAA,EAAA,KAAA,EAAA,IAIA,EAAA,SAAA,GAEA,OAAA,IAAA,EAAA,QACA,EAEA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,iBAAA,EAEA,OADA,GAAA,IACA,EAAA,qBACA,mBAAA,WAAA,UAAA,QACA,EACA,WAAA,UAAA,QAAA,KAAA,EAAA,EAAA,GAEA,WAAA,UAAA,YAAA,KAAA,EAAA,EAAA,GAGA,EAAA,EAAA,CAAA,GAAA,EAAA,EAAA,GAGA,MAAA,IAAA,UAAA,wCAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IA0BA,EA1BA,EAAA,EACA,EAAA,EAAA,OACA,EAAA,EAAA,OAEA,QAAA,IAAA,IAEA,UADA,EAAA,OAAA,GAAA,gBACA,UAAA,GACA,YAAA,GAAA,aAAA,GAAA,CACA,GAAA,EAAA,OAAA,GAAA,EAAA,OAAA,EACA,OAAA,EAEA,EAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EAIA,SAAA,EAAA,EAAA,GACA,OAAA,IAAA,EACA,EAAA,GAEA,EAAA,aAAA,EAAA,GAKA,GAAA,EAAA,CACA,IAAA,GAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,GAAA,EAAA,EAAA,KAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IAEA,IADA,IAAA,IAAA,EAAA,GACA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,OAEA,IAAA,IAAA,GAAA,EAAA,GACA,GAAA,OAKA,IADA,EAAA,EAAA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,GAAA,EAAA,IAAA,CAEA,IADA,IAAA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,IACA,GAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,GAAA,CACA,GAAA,EACA,MAGA,GAAA,EAAA,OAAA,EAIA,OAAA,EAeA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,OAAA,IAAA,EACA,IAAA,EAAA,EAAA,OAAA,EACA,GAGA,EAAA,OAAA,IACA,IACA,EAAA,GAJA,EAAA,EASA,IAAA,EAAA,EAAA,OACA,GAAA,EAAA,GAAA,EAAA,MAAA,IAAA,UAAA,sBAEA,EAAA,EAAA,IACA,EAAA,EAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CACA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,EAAA,GAAA,IACA,GAAA,MAAA,GAAA,OAAA,EACA,EAAA,EAAA,GAAA,EAEA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EAAA,EAAA,GAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,EAAA,GAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EAAA,EAAA,GAkFA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,IAAA,GAAA,IAAA,EAAA,OACA,EAAA,cAAA,GAEA,EAAA,cAAA,EAAA,MAAA,EAAA,IAIA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,IAAA,EAAA,OAAA,GAIA,IAHA,IAAA,EAAA,GAEA,EAAA,EACA,EAAA,GAAA,CACA,IAQA,EAAA,EAAA,EAAA,EARA,EAAA,EAAA,GACA,EAAA,KACA,EAAA,EAAA,IAAA,EACA,EAAA,IAAA,EACA,EAAA,IAAA,EACA,EAEA,GAAA,EAAA,GAAA,EAGA,OAAA,GACA,KAAA,EACA,EAAA,MACA,EAAA,GAEA,MACA,KAAA,EAEA,MAAA,KADA,EAAA,EAAA,EAAA,OAEA,GAAA,GAAA,IAAA,EAAA,GAAA,GACA,MACA,EAAA,GAGA,MACA,KAAA,EACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,MAAA,IAAA,IAAA,MAAA,IAAA,KACA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GACA,OAAA,EAAA,OAAA,EAAA,SACA,EAAA,GAGA,MACA,KAAA,EACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,MAAA,IAAA,IAAA,MAAA,IAAA,IAAA,MAAA,IAAA,KACA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GACA,OAAA,EAAA,UACA,EAAA,GAMA,OAAA,GAGA,EAAA,MACA,EAAA,GACA,EAAA,QAEA,GAAA,MACA,EAAA,KAAA,IAAA,GAAA,KAAA,OACA,EAAA,MAAA,KAAA,GAGA,EAAA,KAAA,GACA,GAAA,EAGA,OAAA,EAAA,GA98BA,QAAA,OAAA,EACA,QAAA,WAAA,EACA,QAAA,kBAAA,GA0BA,EAAA,yBAAA,IAAA,EAAA,oBACA,EAAA,oBACA,IAKA,QAAA,WAAA,IAkEA,EAAA,SAAA,KAGA,EAAA,SAAA,SAAA,GAEA,OADA,EAAA,UAAA,EAAA,UACA,GA2BA,EAAA,KAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,EAAA,IAGA,EAAA,sBACA,EAAA,UAAA,UAAA,WAAA,UACA,EAAA,UAAA,WACA,oBAAA,QAAA,OAAA,SACA,EAAA,OAAA,WAAA,GAEA,OAAA,eAAA,EAAA,OAAA,QAAA,CACA,MAAA,KACA,cAAA,KAiCA,EAAA,MAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,EAAA,IAiBA,EAAA,YAAA,SAAA,GACA,OAAA,EAAA,KAAA,IAKA,EAAA,gBAAA,SAAA,GACA,OAAA,EAAA,KAAA,IAiHA,EAAA,SAAA,SAAA,GACA,QAAA,MAAA,IAAA,EAAA,YAGA,EAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,SAAA,KAAA,EAAA,SAAA,GACA,MAAA,IAAA,UAAA,6BAGA,GAAA,IAAA,EAAA,OAAA,EAKA,IAHA,IAAA,EAAA,EAAA,OACA,EAAA,EAAA,OAEA,EAAA,EAAA,EAAA,KAAA,IAAA,EAAA,GAAA,EAAA,IAAA,EACA,GAAA,EAAA,KAAA,EAAA,GAAA,CACA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,MAIA,OAAA,EAAA,GAAA,EACA,EAAA,EAAA,EACA,GAGA,EAAA,WAAA,SAAA,GACA,OAAA,OAAA,GAAA,eACA,IAAA,MACA,IAAA,OACA,IAAA,QACA,IAAA,QACA,IAAA,SACA,IAAA,SACA,IAAA,SACA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,OAAA,EACA,QACA,OAAA,IAIA,EAAA,OAAA,SAAA,EAAA,GACA,IAAA,EAAA,GACA,MAAA,IAAA,UAAA,+CAGA,GAAA,IAAA,EAAA,OACA,OAAA,EAAA,MAAA,GAGA,IAAA,EACA,QAAA,IAAA,EAEA,IADA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,SAAA,EACA,GAAA,EAAA,GAAA,OAIA,IAAA,EAAA,EAAA,YAAA,GACA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CACA,IAAA,EAAA,EAAA,GACA,IAAA,EAAA,SAAA,GACA,MAAA,IAAA,UAAA,+CAEA,EAAA,KAAA,EAAA,GACA,GAAA,EAAA,OAEA,OAAA,GA8CA,EAAA,WAAA,EA0EA,EAAA,UAAA,WAAA,EAQA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,OACA,GAAA,EAAA,GAAA,EACA,MAAA,IAAA,WAAA,6CAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,EAAA,EAAA,GAEA,OAAA,MAGA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,OACA,GAAA,EAAA,GAAA,EACA,MAAA,IAAA,WAAA,6CAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GAEA,OAAA,MAGA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,OACA,GAAA,EAAA,GAAA,EACA,MAAA,IAAA,WAAA,6CAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GAEA,OAAA,MAGA,EAAA,UAAA,SAAA,WACA,IAAA,EAAA,EAAA,KAAA,OACA,OAAA,IAAA,EAAA,GACA,IAAA,UAAA,OAAA,EAAA,KAAA,EAAA,GACA,EAAA,MAAA,KAAA,YAGA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,SAAA,GAAA,MAAA,IAAA,UAAA,6BACA,OAAA,OAAA,GACA,IAAA,EAAA,QAAA,KAAA,IAGA,EAAA,UAAA,QAAA,WACA,IAAA,EAAA,GACA,EAAA,QAAA,kBAKA,OAJA,KAAA,OAAA,IACA,EAAA,KAAA,SAAA,MAAA,EAAA,GAAA,MAAA,SAAA,KAAA,KACA,KAAA,OAAA,IAAA,GAAA,UAEA,WAAA,EAAA,KAGA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,SAAA,GACA,MAAA,IAAA,UAAA,6BAgBA,QAbA,IAAA,IACA,EAAA,QAEA,IAAA,IACA,EAAA,EAAA,EAAA,OAAA,QAEA,IAAA,IACA,EAAA,QAEA,IAAA,IACA,EAAA,KAAA,QAGA,EAAA,GAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,KAAA,OACA,MAAA,IAAA,WAAA,sBAGA,GAAA,GAAA,GAAA,GAAA,EACA,OAAA,EAEA,GAAA,GAAA,EACA,OAAA,EAEA,GAAA,GAAA,EACA,OAAA,EAQA,GAAA,OAAA,EAAA,OAAA,EASA,IAPA,IAAA,GAJA,KAAA,IADA,KAAA,GAMA,GAPA,KAAA,IADA,KAAA,GASA,EAAA,KAAA,IAAA,EAAA,GAEA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,EAAA,MAAA,EAAA,GAEA,EAAA,EAAA,EAAA,IAAA,EACA,GAAA,EAAA,KAAA,EAAA,GAAA,CACA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,MAIA,OAAA,EAAA,GAAA,EACA,EAAA,EAAA,EACA,GA6HA,EAAA,UAAA,SAAA,SAAA,EAAA,EAAA,GACA,OAAA,IAAA,KAAA,QAAA,EAAA,EAAA,IAGA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAAA,IAGA,EAAA,UAAA,YAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAAA,IAkDA,EAAA,UAAA,MAAA,SAAA,EAAA,EAAA,EAAA,GAEA,QAAA,IAAA,EACA,EAAA,OACA,EAAA,KAAA,OACA,EAAA,OAEA,QAAA,IAAA,GAAA,iBAAA,EACA,EAAA,EACA,EAAA,KAAA,OACA,EAAA,MAEA,CAAA,IAAA,SAAA,GAWA,MAAA,IAAA,MACA,2EAXA,GAAA,EACA,SAAA,IACA,GAAA,OACA,IAAA,IAAA,EAAA,UAEA,EAAA,EACA,OAAA,GASA,IAAA,EAAA,KAAA,OAAA,EAGA,SAFA,IAAA,GAAA,EAAA,KAAA,EAAA,GAEA,EAAA,OAAA,IAAA,EAAA,GAAA,EAAA,IAAA,EAAA,KAAA,OACA,MAAA,IAAA,WAAA,0CAGA,IAAA,EAAA,QAGA,IADA,IAAA,GAAA,IAEA,OAAA,GACA,IAAA,MACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAEA,IAAA,OACA,IAAA,QACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAEA,IAAA,QACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAEA,IAAA,SACA,IAAA,SACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAEA,IAAA,SAEA,OAAA,EAAA,KAAA,EAAA,EAAA,GAEA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,OAAA,EAAA,KAAA,EAAA,EAAA,GAEA,QACA,GAAA,EAAA,MAAA,IAAA,UAAA,qBAAA,GACA,GAAA,GAAA,GAAA,cACA,GAAA,IAKA,EAAA,UAAA,OAAA,WACA,MAAA,CACA,KAAA,SACA,KAAA,MAAA,UAAA,MAAA,KAAA,KAAA,MAAA,KAAA,KAwFA,IAAA,EAAA,KAEA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,OACA,GAAA,GAAA,EACA,OAAA,OAAA,aAAA,MAAA,OAAA,GAMA,IAFA,IAAA,EAAA,GACA,EAAA,EACA,EAAA,GACA,GAAA,OAAA,aAAA,MACA,OACA,EAAA,MAAA,EAAA,GAAA,IAGA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,GACA,EAAA,KAAA,IAAA,EAAA,OAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EACA,GAAA,OAAA,aAAA,IAAA,EAAA,IAEA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,GACA,EAAA,KAAA,IAAA,EAAA,OAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EACA,GAAA,OAAA,aAAA,EAAA,IAEA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,SAEA,GAAA,EAAA,KAAA,EAAA,KACA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAGA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,IAAA,EACA,GAAA,EAAA,EAAA,IAEA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GAGA,IAFA,IAAA,EAAA,EAAA,MAAA,EAAA,GACA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EACA,GAAA,OAAA,aAAA,EAAA,GAAA,IAAA,EAAA,EAAA,IAEA,OAAA,EA0CA,SAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,MAAA,IAAA,WAAA,sBACA,GAAA,EAAA,EAAA,EAAA,MAAA,IAAA,WAAA,yCA+JA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,SAAA,GAAA,MAAA,IAAA,UAAA,+CACA,GAAA,EAAA,GAAA,EAAA,EAAA,MAAA,IAAA,WAAA,qCACA,GAAA,EAAA,EAAA,EAAA,OAAA,MAAA,IAAA,WAAA,sBAkDA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,IAAA,EAAA,MAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,IAAA,EAAA,OAAA,EAAA,GAAA,EAAA,IAAA,EACA,EAAA,EAAA,IAAA,EAAA,KAAA,GAAA,EAAA,EAAA,EAAA,MACA,GAAA,EAAA,EAAA,EAAA,GA8BA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,IAAA,EAAA,WAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,IAAA,EAAA,OAAA,EAAA,GAAA,EAAA,IAAA,EACA,EAAA,EAAA,GAAA,IAAA,GAAA,EAAA,EAAA,EAAA,GAAA,IAmJA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAAA,EAAA,EAAA,OAAA,MAAA,IAAA,WAAA,sBACA,GAAA,EAAA,EAAA,MAAA,IAAA,WAAA,sBAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAKA,OAJA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,uBAAA,uBAEA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,EAWA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAKA,OAJA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,wBAAA,wBAEA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,EA/cA,EAAA,UAAA,MAAA,SAAA,EAAA,GACA,IAoBA,EApBA,EAAA,KAAA,OAqBA,IApBA,IAAA,GAGA,GACA,GAAA,GACA,IAAA,EAAA,GACA,EAAA,IACA,EAAA,IANA,OAAA,IAAA,EAAA,IAAA,GASA,GACA,GAAA,GACA,IAAA,EAAA,GACA,EAAA,IACA,EAAA,GAGA,EAAA,IAAA,EAAA,GAGA,EAAA,qBACA,EAAA,KAAA,SAAA,EAAA,IACA,UAAA,EAAA,cACA,CACA,IAAA,EAAA,EAAA,EACA,EAAA,IAAA,EAAA,OAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,GAAA,KAAA,EAAA,GAIA,OAAA,GAWA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,EAAA,KAAA,QAKA,IAHA,IAAA,EAAA,KAAA,GACA,EAAA,EACA,EAAA,IACA,EAAA,IAAA,GAAA,MACA,GAAA,KAAA,EAAA,GAAA,EAGA,OAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,GACA,EAAA,EAAA,EAAA,KAAA,QAKA,IAFA,IAAA,EAAA,KAAA,IAAA,GACA,EAAA,EACA,EAAA,IAAA,GAAA,MACA,GAAA,KAAA,IAAA,GAAA,EAGA,OAAA,GAGA,EAAA,UAAA,UAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,KAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,KAAA,GAAA,KAAA,EAAA,IAAA,GAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,KAAA,IAAA,EAAA,KAAA,EAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAGA,OAFA,GAAA,EAAA,EAAA,EAAA,KAAA,SAEA,KAAA,GACA,KAAA,EAAA,IAAA,EACA,KAAA,EAAA,IAAA,IACA,SAAA,KAAA,EAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAGA,OAFA,GAAA,EAAA,EAAA,EAAA,KAAA,QAEA,SAAA,KAAA,IACA,KAAA,EAAA,IAAA,GACA,KAAA,EAAA,IAAA,EACA,KAAA,EAAA,KAGA,EAAA,UAAA,UAAA,SAAA,EAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,EAAA,KAAA,QAKA,IAHA,IAAA,EAAA,KAAA,GACA,EAAA,EACA,EAAA,IACA,EAAA,IAAA,GAAA,MACA,GAAA,KAAA,EAAA,GAAA,EAMA,OAFA,IAFA,GAAA,OAEA,GAAA,KAAA,IAAA,EAAA,EAAA,IAEA,GAGA,EAAA,UAAA,UAAA,SAAA,EAAA,EAAA,GACA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,EAAA,KAAA,QAKA,IAHA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,KAAA,IAAA,GACA,EAAA,IAAA,GAAA,MACA,GAAA,KAAA,IAAA,GAAA,EAMA,OAFA,IAFA,GAAA,OAEA,GAAA,KAAA,IAAA,EAAA,EAAA,IAEA,GAGA,EAAA,UAAA,SAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,IAAA,KAAA,IACA,GAAA,IAAA,KAAA,GAAA,GADA,KAAA,IAIA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,IAAA,EAAA,KAAA,GAAA,KAAA,EAAA,IAAA,EACA,OAAA,MAAA,EAAA,WAAA,EAAA,GAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,IAAA,EAAA,KAAA,EAAA,GAAA,KAAA,IAAA,EACA,OAAA,MAAA,EAAA,WAAA,EAAA,GAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GAGA,OAFA,GAAA,EAAA,EAAA,EAAA,KAAA,QAEA,KAAA,GACA,KAAA,EAAA,IAAA,EACA,KAAA,EAAA,IAAA,GACA,KAAA,EAAA,IAAA,IAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GAGA,OAFA,GAAA,EAAA,EAAA,EAAA,KAAA,QAEA,KAAA,IAAA,GACA,KAAA,EAAA,IAAA,GACA,KAAA,EAAA,IAAA,EACA,KAAA,EAAA,IAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,EAAA,KAAA,KAAA,GAAA,EAAA,GAAA,IAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,EAAA,KAAA,KAAA,GAAA,EAAA,GAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,EAAA,KAAA,KAAA,GAAA,EAAA,GAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAEA,OADA,GAAA,EAAA,EAAA,EAAA,KAAA,QACA,EAAA,KAAA,KAAA,GAAA,EAAA,GAAA,IASA,EAAA,UAAA,YAAA,SAAA,EAAA,EAAA,EAAA,IACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,IAEA,EAAA,KAAA,EAAA,EAAA,EADA,KAAA,IAAA,EAAA,EAAA,GAAA,EACA,GAGA,IAAA,EAAA,EACA,EAAA,EAEA,IADA,KAAA,GAAA,IAAA,IACA,EAAA,IAAA,GAAA,MACA,KAAA,EAAA,GAAA,EAAA,EAAA,IAGA,OAAA,EAAA,GAGA,EAAA,UAAA,YAAA,SAAA,EAAA,EAAA,EAAA,IACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,IAEA,EAAA,KAAA,EAAA,EAAA,EADA,KAAA,IAAA,EAAA,EAAA,GAAA,EACA,GAGA,IAAA,EAAA,EAAA,EACA,EAAA,EAEA,IADA,KAAA,EAAA,GAAA,IAAA,IACA,GAAA,IAAA,GAAA,MACA,KAAA,EAAA,GAAA,EAAA,EAAA,IAGA,OAAA,EAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GAMA,OALA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,GACA,EAAA,sBAAA,EAAA,KAAA,MAAA,IACA,KAAA,GAAA,IAAA,EACA,EAAA,GAWA,EAAA,UAAA,cAAA,SAAA,EAAA,EAAA,GAUA,OATA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,MAAA,GACA,EAAA,qBACA,KAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAGA,EAAA,UAAA,cAAA,SAAA,EAAA,EAAA,GAUA,OATA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,MAAA,GACA,EAAA,qBACA,KAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAUA,EAAA,UAAA,cAAA,SAAA,EAAA,EAAA,GAYA,OAXA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,WAAA,GACA,EAAA,qBACA,KAAA,EAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,EACA,KAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAGA,EAAA,UAAA,cAAA,SAAA,EAAA,EAAA,GAYA,OAXA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,WAAA,GACA,EAAA,qBACA,KAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,EAAA,GAGA,GAFA,GAAA,EACA,GAAA,GACA,EAAA,CACA,IAAA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,GAEA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAGA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,EAEA,IADA,KAAA,GAAA,IAAA,IACA,EAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,IAAA,KAAA,EAAA,EAAA,KACA,EAAA,GAEA,KAAA,EAAA,IAAA,EAAA,GAAA,GAAA,EAAA,IAGA,OAAA,EAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,EAAA,GAGA,GAFA,GAAA,EACA,GAAA,GACA,EAAA,CACA,IAAA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,GAEA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAGA,IAAA,EAAA,EAAA,EACA,EAAA,EACA,EAAA,EAEA,IADA,KAAA,EAAA,GAAA,IAAA,IACA,GAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,IAAA,KAAA,EAAA,EAAA,KACA,EAAA,GAEA,KAAA,EAAA,IAAA,EAAA,GAAA,GAAA,EAAA,IAGA,OAAA,EAAA,GAGA,EAAA,UAAA,UAAA,SAAA,EAAA,EAAA,GAOA,OANA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,KAAA,KACA,EAAA,sBAAA,EAAA,KAAA,MAAA,IACA,EAAA,IAAA,EAAA,IAAA,EAAA,GACA,KAAA,GAAA,IAAA,EACA,EAAA,GAGA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GAUA,OATA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,OAAA,OACA,EAAA,qBACA,KAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAGA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GAUA,OATA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,OAAA,OACA,EAAA,qBACA,KAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAGA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GAYA,OAXA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,YAAA,YACA,EAAA,qBACA,KAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,IAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAGA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GAaA,OAZA,GAAA,EACA,GAAA,EACA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,YAAA,YACA,EAAA,IAAA,EAAA,WAAA,EAAA,GACA,EAAA,qBACA,KAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,GACA,KAAA,EAAA,GAAA,IAAA,EACA,KAAA,EAAA,GAAA,IAAA,GAEA,EAAA,KAAA,EAAA,GAAA,GAEA,EAAA,GAgBA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAWA,EAAA,UAAA,cAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAGA,EAAA,UAAA,cAAA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAIA,EAAA,UAAA,KAAA,SAAA,EAAA,EAAA,EAAA,GAQA,GAPA,IAAA,EAAA,GACA,GAAA,IAAA,IAAA,EAAA,KAAA,QACA,GAAA,EAAA,SAAA,EAAA,EAAA,QACA,IAAA,EAAA,GACA,EAAA,GAAA,EAAA,IAAA,EAAA,GAGA,IAAA,EAAA,OAAA,EACA,GAAA,IAAA,EAAA,QAAA,IAAA,KAAA,OAAA,OAAA,EAGA,GAAA,EAAA,EACA,MAAA,IAAA,WAAA,6BAEA,GAAA,EAAA,GAAA,GAAA,KAAA,OAAA,MAAA,IAAA,WAAA,6BACA,GAAA,EAAA,EAAA,MAAA,IAAA,WAAA,2BAGA,EAAA,KAAA,SAAA,EAAA,KAAA,QACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,EAAA,OAAA,EAAA,GAGA,IACA,EADA,EAAA,EAAA,EAGA,GAAA,OAAA,GAAA,EAAA,GAAA,EAAA,EAEA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EACA,EAAA,EAAA,GAAA,KAAA,EAAA,QAEA,GAAA,EAAA,MAAA,EAAA,oBAEA,IAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,EAAA,GAAA,KAAA,EAAA,QAGA,WAAA,UAAA,IAAA,KACA,EACA,KAAA,SAAA,EAAA,EAAA,GACA,GAIA,OAAA,GAOA,EAAA,UAAA,KAAA,SAAA,EAAA,EAAA,EAAA,GAEA,GAAA,iBAAA,EAAA,CASA,GARA,iBAAA,GACA,EAAA,EACA,EAAA,EACA,EAAA,KAAA,QACA,iBAAA,IACA,EAAA,EACA,EAAA,KAAA,QAEA,IAAA,EAAA,OAAA,CACA,IAAA,EAAA,EAAA,WAAA,GACA,EAAA,MACA,EAAA,GAGA,QAAA,IAAA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,6BAEA,GAAA,iBAAA,IAAA,EAAA,WAAA,GACA,MAAA,IAAA,UAAA,qBAAA,OAEA,iBAAA,IACA,GAAA,KAIA,GAAA,EAAA,GAAA,KAAA,OAAA,GAAA,KAAA,OAAA,EACA,MAAA,IAAA,WAAA,sBAGA,GAAA,GAAA,EACA,OAAA,KAQA,IAAA,EACA,GANA,KAAA,EACA,OAAA,IAAA,EAAA,KAAA,OAAA,IAAA,EAEA,IAAA,EAAA,GAGA,iBAAA,EACA,IAAA,EAAA,EAAA,EAAA,IAAA,EACA,KAAA,GAAA,MAEA,CACA,IAAA,EAAA,EAAA,SAAA,GACA,EACA,EAAA,IAAA,EAAA,EAAA,GAAA,YACA,EAAA,EAAA,OACA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EACA,KAAA,EAAA,GAAA,EAAA,EAAA,GAIA,OAAA,MAMA,IAAA,EAAA,qBAEA,SAAA,EAAA,GAIA,IAFA,EAAA,EAAA,GAAA,QAAA,EAAA,KAEA,OAAA,EAAA,MAAA,GAEA,KAAA,EAAA,OAAA,GAAA,GACA,GAAA,IAEA,OAAA,EAGA,SAAA,EAAA,GACA,OAAA,EAAA,KAAA,EAAA,OACA,EAAA,QAAA,aAAA,IAGA,SAAA,EAAA,GACA,OAAA,EAAA,GAAA,IAAA,EAAA,SAAA,IACA,EAAA,SAAA,IAGA,SAAA,EAAA,EAAA,GAEA,IAAA,EADA,EAAA,GAAA,EAAA,EAMA,IAJA,IAAA,EAAA,EAAA,OACA,EAAA,KACA,EAAA,GAEA,EAAA,EAAA,EAAA,IAAA,EAAA,CAIA,IAHA,EAAA,EAAA,WAAA,IAGA,OAAA,EAAA,MAAA,CAEA,IAAA,EAAA,CAEA,GAAA,EAAA,MAAA,EAEA,GAAA,IAAA,GAAA,EAAA,KAAA,IAAA,IAAA,KACA,SACA,GAAA,EAAA,IAAA,EAAA,EAEA,GAAA,IAAA,GAAA,EAAA,KAAA,IAAA,IAAA,KACA,SAIA,EAAA,EAEA,SAIA,GAAA,EAAA,MAAA,EACA,GAAA,IAAA,GAAA,EAAA,KAAA,IAAA,IAAA,KACA,EAAA,EACA,SAIA,EAAA,OAAA,EAAA,OAAA,GAAA,EAAA,YACA,IAEA,GAAA,IAAA,GAAA,EAAA,KAAA,IAAA,IAAA,KAMA,GAHA,EAAA,KAGA,EAAA,IAAA,CACA,IAAA,GAAA,GAAA,EAAA,MACA,EAAA,KAAA,QACA,GAAA,EAAA,KAAA,CACA,IAAA,GAAA,GAAA,EAAA,MACA,EAAA,KACA,GAAA,EAAA,IACA,GAAA,EAAA,UAEA,GAAA,EAAA,MAAA,CACA,IAAA,GAAA,GAAA,EAAA,MACA,EAAA,KACA,GAAA,GAAA,IACA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,SAEA,CAAA,KAAA,EAAA,SASA,MAAA,IAAA,MAAA,sBARA,IAAA,GAAA,GAAA,EAAA,MACA,EAAA,KACA,GAAA,GAAA,IACA,GAAA,GAAA,GAAA,IACA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,MAOA,OAAA,EAGA,SAAA,EAAA,GAEA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,SAAA,EAEA,EAAA,KAAA,IAAA,EAAA,WAAA,IAEA,OAAA,EAGA,SAAA,EAAA,EAAA,GAGA,IAFA,IAAA,EAAA,EAAA,EACA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,WACA,GAAA,GAAA,KADA,EAIA,GADA,EAAA,EAAA,WAAA,KACA,EACA,EAAA,EAAA,IACA,EAAA,KAAA,GACA,EAAA,KAAA,GAGA,OAAA,EAGA,SAAA,EAAA,GACA,OAAA,EAAA,YAAA,EAAA,IAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,KACA,EAAA,GAAA,EAAA,QAAA,GAAA,EAAA,UADA,EAEA,EAAA,EAAA,GAAA,EAAA,GAEA,OAAA,EAGA,SAAA,EAAA,GACA,OAAA,GAAA;;;AC1vDA,IAAA,EAAA,QAAA,UACA,EAAA,EAAA,OAGA,SAAA,EAAA,EAAA,GACA,IAAA,IAAA,KAAA,EACA,EAAA,GAAA,EAAA,GAWA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,GATA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,gBACA,OAAA,QAAA,GAGA,EAAA,EAAA,SACA,QAAA,OAAA,GAQA,EAAA,EAAA,GAEA,EAAA,KAAA,SAAA,EAAA,EAAA,GACA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,iCAEA,OAAA,EAAA,EAAA,EAAA,IAGA,EAAA,MAAA,SAAA,EAAA,EAAA,GACA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,6BAEA,IAAA,EAAA,EAAA,GAUA,YATA,IAAA,EACA,iBAAA,EACA,EAAA,KAAA,EAAA,GAEA,EAAA,KAAA,GAGA,EAAA,KAAA,GAEA,GAGA,EAAA,YAAA,SAAA,GACA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,6BAEA,OAAA,EAAA,IAGA,EAAA,gBAAA,SAAA,GACA,GAAA,iBAAA,EACA,MAAA,IAAA,UAAA,6BAEA,OAAA,EAAA,WAAA;;;;;ACtBA,IAAA,EAAA,UAAA,GAAA,EAAA,QAAA,WApCA,SAAA,IACA,MAAA,IAAA,MAAA,kHAGA,IAAA,EAAA,QAAA,eAAA,OACA,EAAA,EAAA,QAAA,EAAA,SAQA,SAAA,EAAA,EAAA,GAEA,GAAA,EAAA,MAAA,MAAA,IAAA,MAAA,mCAEA,IAAA,EAAA,IAAA,EAAA,WAAA,GAIA,EAAA,GACA,EAAA,gBAAA,GAIA,IAAA,EAAA,EAAA,KAAA,EAAA,QAEA,MAAA,mBAAA,EACA,EAAA,SAAA,WACA,EAAA,KAAA,KAIA,EA3BA,GAAA,EAAA,gBACA,OAAA,QAAA,EAEA,OAAA,QAAA;;;ACgCA,IAAA,EAAA,QAAA,WAlCA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,mBAAA,EACA,MAAA,IAAA,UAAA,0CAEA,IACA,EAAA,EADA,EAAA,UAAA,OAEA,OAAA,GACA,KAAA,EACA,KAAA,EACA,OAAA,EAAA,SAAA,GACA,KAAA,EACA,OAAA,EAAA,SAAA,WACA,EAAA,KAAA,KAAA,KAEA,KAAA,EACA,OAAA,EAAA,SAAA,WACA,EAAA,KAAA,KAAA,EAAA,KAEA,KAAA,EACA,OAAA,EAAA,SAAA,WACA,EAAA,KAAA,KAAA,EAAA,EAAA,KAEA,QAGA,IAFA,EAAA,IAAA,MAAA,EAAA,GACA,EAAA,EACA,EAAA,EAAA,QACA,EAAA,KAAA,UAAA,GAEA,OAAA,EAAA,SAAA,WACA,EAAA,MAAA,KAAA,OArCA,EAAA,SACA,IAAA,EAAA,QAAA,QAAA,QACA,IAAA,EAAA,QAAA,QAAA,QAAA,IAAA,EAAA,QAAA,QAAA,SACA,OAAA,QAAA,CAAA,SAAA,GAEA,OAAA,QAAA;;ACcA,SAASC,IACFC,KAAAA,QAAU,KAAKA,SAAW,GAC1BC,KAAAA,cAAgB,KAAKA,oBAAiBC,EAwQ7C,SAASC,EAAWC,GACX,MAAe,mBAARA,EAGhB,SAASC,EAASD,GACT,MAAe,iBAARA,EAGhB,SAASE,EAASF,GACT,MAAe,iBAARA,GAA4B,OAARA,EAGpC,SAASG,EAAYH,GACZA,YAAQ,IAARA,EAnRT/G,OAAOC,QAAUyG,EAGjBA,EAAaA,aAAeA,EAE5BA,EAAazE,UAAU0E,aAAUE,EACjCH,EAAazE,UAAU2E,mBAAgBC,EAIvCH,EAAaS,oBAAsB,GAInCT,EAAazE,UAAUmF,gBAAkB,SAASC,GAC5C,IAACL,EAASK,IAAMA,EAAI,GAAKC,MAAMD,GACjC,MAAME,UAAU,+BAEX,OADFX,KAAAA,cAAgBS,EACd,MAGTX,EAAazE,UAAUc,KAAO,SAASY,GACjC6D,IAAAA,EAAIC,EAASnG,EAAKM,EAAMG,EAAGmB,EAM3BS,GAJC,KAAKgD,UACR,KAAKA,QAAU,IAGJ,UAAThD,KACG,KAAKgD,QAAQf,OACbqB,EAAS,KAAKN,QAAQf,SAAW,KAAKe,QAAQf,MAAM1E,QAAS,CAE5DsG,IADJA,EAAK1F,UAAU,cACG3B,MACVqH,MAAAA,EAGFE,IAAAA,EAAM,IAAIvH,MAAM,yCAA2CqH,EAAK,KAE9DE,MADNA,EAAIC,QAAUH,EACRE,EAORR,GAAAA,EAFJO,EAAU,KAAKd,QAAQhD,IAGrB,OAAO,EAELmD,GAAAA,EAAWW,GACL3F,OAAAA,UAAUZ,QAEX,KAAA,EACHuG,EAAQhH,KAAK,MACb,MACG,KAAA,EACHgH,EAAQhH,KAAK,KAAMqB,UAAU,IAC7B,MACG,KAAA,EACH2F,EAAQhH,KAAK,KAAMqB,UAAU,GAAIA,UAAU,IAC3C,MAEF,QACEF,EAAOC,MAAMI,UAAU2F,MAAMnH,KAAKqB,UAAW,GAC7C2F,EAAQvF,MAAM,KAAMN,QAEnB,GAAIqF,EAASQ,GAIb1F,IAHLH,EAAOC,MAAMI,UAAU2F,MAAMnH,KAAKqB,UAAW,GAE7CR,GADA4B,EAAYuE,EAAQG,SACJ1G,OACXa,EAAI,EAAGA,EAAIT,EAAKS,IACnBmB,EAAUnB,GAAGG,MAAM,KAAMN,GAGtB,OAAA,GAGT8E,EAAazE,UAAUS,YAAc,SAASiB,EAAMkE,GAC9CC,IAAAA,EAEA,IAAChB,EAAWe,GACd,MAAMN,UAAU,+BA2CX,OAzCF,KAAKZ,UACR,KAAKA,QAAU,IAIb,KAAKA,QAAQoB,aACf,KAAKhF,KAAK,cAAeY,EACfmD,EAAWe,EAASA,UACpBA,EAASA,SAAWA,GAE3B,KAAKlB,QAAQhD,GAGTsD,EAAS,KAAKN,QAAQhD,IAExBgD,KAAAA,QAAQhD,GAAM3B,KAAK6F,GAGnBlB,KAAAA,QAAQhD,GAAQ,CAAC,KAAKgD,QAAQhD,GAAOkE,GANrClB,KAAAA,QAAQhD,GAAQkE,EASnBZ,EAAS,KAAKN,QAAQhD,MAAW,KAAKgD,QAAQhD,GAAMqE,SAIpDF,EAHGZ,EAAY,KAAKN,eAGhBF,EAAaS,oBAFb,KAAKP,gBAKFkB,EAAI,GAAK,KAAKnB,QAAQhD,GAAMzC,OAAS4G,IACvCnB,KAAAA,QAAQhD,GAAMqE,QAAS,EAC5B3D,QAAQuB,MAAM,mIAGA,KAAKe,QAAQhD,GAAMzC,QACJ,mBAAlBmD,QAAQ4D,OAEjB5D,QAAQ4D,SAKP,MAGTvB,EAAazE,UAAUQ,GAAKiE,EAAazE,UAAUS,YAEnDgE,EAAazE,UAAUU,KAAO,SAASgB,EAAMkE,GACvC,IAACf,EAAWe,GACd,MAAMN,UAAU,+BAEdW,IAAAA,GAAQ,EAEHC,SAAAA,IACFtF,KAAAA,eAAec,EAAMwE,GAErBD,IACHA,GAAQ,EACRL,EAAS3F,MAAM,KAAMJ,YAOlB,OAHPqG,EAAEN,SAAWA,EACRpF,KAAAA,GAAGkB,EAAMwE,GAEP,MAITzB,EAAazE,UAAUY,eAAiB,SAASc,EAAMkE,GACjDO,IAAAA,EAAMC,EAAUnH,EAAQa,EAExB,IAAC+E,EAAWe,GACd,MAAMN,UAAU,+BAEd,IAAC,KAAKZ,UAAY,KAAKA,QAAQhD,GACjC,OAAO,KAMLyE,GAHJlH,GADAkH,EAAO,KAAKzB,QAAQhD,IACNzC,OACdmH,GAAY,EAERD,IAASP,GACRf,EAAWsB,EAAKP,WAAaO,EAAKP,WAAaA,SAC3C,KAAKlB,QAAQhD,GAChB,KAAKgD,QAAQ9D,gBACf,KAAKE,KAAK,iBAAkBY,EAAMkE,QAE/B,GAAIZ,EAASmB,GAAO,CACpBrG,IAAAA,EAAIb,EAAQa,KAAM,GACjBqG,GAAAA,EAAKrG,KAAO8F,GACXO,EAAKrG,GAAG8F,UAAYO,EAAKrG,GAAG8F,WAAaA,EAAW,CACvDQ,EAAWtG,EACX,MAIAsG,GAAAA,EAAW,EACb,OAAO,KAEW,IAAhBD,EAAKlH,QACPkH,EAAKlH,OAAS,SACP,KAAKyF,QAAQhD,IAEpByE,EAAKlD,OAAOmD,EAAU,GAGpB,KAAK1B,QAAQ9D,gBACf,KAAKE,KAAK,iBAAkBY,EAAMkE,GAG/B,OAAA,MAGTnB,EAAazE,UAAUa,mBAAqB,SAASa,GAC/C2E,IAAAA,EAAKpF,EAEL,IAAC,KAAKyD,QACR,OAAO,KAGL,IAAC,KAAKA,QAAQ9D,eAKT,OAJkB,IAArBf,UAAUZ,OACZ,KAAKyF,QAAU,GACR,KAAKA,QAAQhD,WACb,KAAKgD,QAAQhD,GACf,KAIL7B,GAAqB,IAArBA,UAAUZ,OAAc,CACrBoH,IAAAA,KAAO,KAAK3B,QACH,mBAAR2B,GACCxF,KAAAA,mBAAmBwF,GAInB,OAFFxF,KAAAA,mBAAmB,kBACnB6D,KAAAA,QAAU,GACR,KAKLG,GAAAA,EAFJ5D,EAAY,KAAKyD,QAAQhD,IAGlBd,KAAAA,eAAec,EAAMT,QACrB,GAAIA,EAEFA,KAAAA,EAAUhC,QACf,KAAK2B,eAAec,EAAMT,EAAUA,EAAUhC,OAAS,IAIpD,cAFA,KAAKyF,QAAQhD,GAEb,MAGT+C,EAAazE,UAAUiB,UAAY,SAASS,GAQnC4E,OANF,KAAK5B,SAAY,KAAKA,QAAQhD,GAE1BmD,EAAW,KAAKH,QAAQhD,IACzB,CAAC,KAAKgD,QAAQhD,IAEd,KAAKgD,QAAQhD,GAAMiE,QAJnB,IAQVlB,EAAazE,UAAUuG,cAAgB,SAAS7E,GAC1C,GAAA,KAAKgD,QAAS,CACZ8B,IAAAA,EAAa,KAAK9B,QAAQhD,GAE1BmD,GAAAA,EAAW2B,GACb,OAAO,EACJ,GAAIA,EACP,OAAOA,EAAWvH,OAEf,OAAA,GAGTwF,EAAa8B,cAAgB,SAASE,EAAS/E,GACtC+E,OAAAA,EAAQF,cAAc7E;;AC5R/B,OAAA,QAAA,QAAA,UAAA;;;AC2GA,IAAA,EAAA,QAAA,UAAA,OAnFA,SAAA,EAAA,GACA,OAAA,MAAA,QACA,MAAA,QAAA,GAEA,mBAAA,EAAA,GAIA,SAAA,EAAA,GACA,MAAA,kBAAA,EAIA,SAAA,EAAA,GACA,OAAA,OAAA,EAIA,SAAA,EAAA,GACA,OAAA,MAAA,EAIA,SAAA,EAAA,GACA,MAAA,iBAAA,EAIA,SAAA,EAAA,GACA,MAAA,iBAAA,EAIA,SAAA,EAAA,GACA,MAAA,iBAAA,EAIA,SAAA,EAAA,GACA,YAAA,IAAA,EAIA,SAAA,EAAA,GACA,MAAA,oBAAA,EAAA,GAIA,SAAA,EAAA,GACA,MAAA,iBAAA,GAAA,OAAA,EAIA,SAAA,EAAA,GACA,MAAA,kBAAA,EAAA,GAIA,SAAA,EAAA,GACA,MAAA,mBAAA,EAAA,IAAA,aAAA,MAIA,SAAA,EAAA,GACA,MAAA,mBAAA,EAIA,SAAA,EAAA,GACA,OAAA,OAAA,GACA,kBAAA,GACA,iBAAA,GACA,iBAAA,GACA,iBAAA,QACA,IAAA,EAMA,SAAA,EAAA,GACA,OAAA,OAAA,UAAA,SAAA,KAAA,GA3EA,QAAA,QAAA,EAKA,QAAA,UAAA,EAKA,QAAA,OAAA,EAKA,QAAA,kBAAA,EAKA,QAAA,SAAA,EAKA,QAAA,SAAA,EAKA,QAAA,SAAA,EAKA,QAAA,YAAA,EAKA,QAAA,SAAA,EAKA,QAAA,SAAA,EAKA,QAAA,OAAA,EAKA,QAAA,QAAA,EAKA,QAAA,WAAA,EAUA,QAAA,YAAA,EAEA,QAAA,SAAA,EAAA;;;;;ACtGA,aAEA,SAAA,EAAA,EAAA,GAAA,KAAA,aAAA,GAAA,MAAA,IAAA,UAAA,qCAEA,IAAA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,QAEA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,GAGA,OAAA,QAAA,WACA,SAAA,IACA,EAAA,KAAA,GAEA,KAAA,KAAA,KACA,KAAA,KAAA,KACA,KAAA,OAAA,EAqDA,OAlDA,EAAA,UAAA,KAAA,SAAA,GACA,IAAA,EAAA,CAAA,KAAA,EAAA,KAAA,MACA,KAAA,OAAA,EAAA,KAAA,KAAA,KAAA,EAAA,KAAA,KAAA,EACA,KAAA,KAAA,IACA,KAAA,QAGA,EAAA,UAAA,QAAA,SAAA,GACA,IAAA,EAAA,CAAA,KAAA,EAAA,KAAA,KAAA,MACA,IAAA,KAAA,SAAA,KAAA,KAAA,GACA,KAAA,KAAA,IACA,KAAA,QAGA,EAAA,UAAA,MAAA,WACA,GAAA,IAAA,KAAA,OAAA,CACA,IAAA,EAAA,KAAA,KAAA,KAGA,OAFA,IAAA,KAAA,OAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,OACA,KAAA,OACA,IAGA,EAAA,UAAA,MAAA,WACA,KAAA,KAAA,KAAA,KAAA,KACA,KAAA,OAAA,GAGA,EAAA,UAAA,KAAA,SAAA,GACA,GAAA,IAAA,KAAA,OAAA,MAAA,GAGA,IAFA,IAAA,EAAA,KAAA,KACA,EAAA,GAAA,EAAA,KACA,EAAA,EAAA,MACA,GAAA,EAAA,EAAA,KACA,OAAA,GAGA,EAAA,UAAA,OAAA,SAAA,GACA,GAAA,IAAA,KAAA,OAAA,OAAA,EAAA,MAAA,GACA,GAAA,IAAA,KAAA,OAAA,OAAA,KAAA,KAAA,KAIA,IAHA,IAAA,EAAA,EAAA,YAAA,IAAA,GACA,EAAA,KAAA,KACA,EAAA,EACA,GACA,EAAA,EAAA,KAAA,EAAA,GACA,GAAA,EAAA,KAAA,OACA,EAAA,EAAA,KAEA,OAAA,GAGA,EA3DA,GA8DA,GAAA,EAAA,SAAA,EAAA,QAAA,SACA,OAAA,QAAA,UAAA,EAAA,QAAA,QAAA,WACA,IAAA,EAAA,EAAA,QAAA,CAAA,OAAA,KAAA,SACA,OAAA,KAAA,YAAA,KAAA,IAAA;;AC5EA,aAIA,IAAA,EAAA,QAAA,wBAIA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAEA,EAAA,KAAA,gBAAA,KAAA,eAAA,UACA,EAAA,KAAA,gBAAA,KAAA,eAAA,UAEA,OAAA,GAAA,GACA,EACA,EAAA,IACA,GAAA,KAAA,gBAAA,KAAA,eAAA,cACA,EAAA,SAAA,EAAA,KAAA,GAEA,OAMA,KAAA,iBACA,KAAA,eAAA,WAAA,GAIA,KAAA,iBACA,KAAA,eAAA,WAAA,GAGA,KAAA,SAAA,GAAA,KAAA,SAAA,IACA,GAAA,GACA,EAAA,SAAA,EAAA,EAAA,GACA,EAAA,iBACA,EAAA,eAAA,cAAA,IAEA,GACA,EAAA,KAIA,MAGA,SAAA,IACA,KAAA,iBACA,KAAA,eAAA,WAAA,EACA,KAAA,eAAA,SAAA,EACA,KAAA,eAAA,OAAA,EACA,KAAA,eAAA,YAAA,GAGA,KAAA,iBACA,KAAA,eAAA,WAAA,EACA,KAAA,eAAA,OAAA,EACA,KAAA,eAAA,QAAA,EACA,KAAA,eAAA,UAAA,EACA,KAAA,eAAA,cAAA,GAIA,SAAA,EAAA,EAAA,GACA,EAAA,KAAA,QAAA,GAGA,OAAA,QAAA,CACA,QAAA,EACA,UAAA;;;ACLA,IAAA,EAAA,UAAA,GA1CA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,iBACA,OAAA,EAGA,IAAA,GAAA,EAeA,OAdA,WACA,IAAA,EAAA,CACA,GAAA,EAAA,oBACA,MAAA,IAAA,MAAA,GACA,EAAA,oBACA,QAAA,MAAA,GAEA,QAAA,KAAA,GAEA,GAAA,EAEA,OAAA,EAAA,MAAA,KAAA,YAcA,SAAA,EAAA,GAEA,IACA,IAAA,EAAA,aAAA,OAAA,EACA,MAAA,GACA,OAAA,EAEA,IAAA,EAAA,EAAA,aAAA,GACA,OAAA,MAAA,GACA,SAAA,OAAA,GAAA,cA5DA,OAAA,QAAA;;;;;ACyqBA,IAAA,EAAA,QAAA,WAAA,EAAA,UAAA,GAjpBA,EAAA,QAAA,wBAMA,SAAA,EAAA,EAAA,EAAA,GACA,KAAA,MAAA,EACA,KAAA,SAAA,EACA,KAAA,SAAA,EACA,KAAA,KAAA,KAKA,SAAA,EAAA,GACA,IAAA,EAAA,KAEA,KAAA,KAAA,KACA,KAAA,MAAA,KACA,KAAA,OAAA,WACA,EAAA,EAAA,IAlBA,OAAA,QAAA,EAwBA,IAIA,EAJA,GAAA,EAAA,SAAA,CAAA,QAAA,SAAA,QAAA,EAAA,QAAA,MAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAOA,EAAA,cAAA,EAGA,IAAA,EAAA,QAAA,gBACA,EAAA,SAAA,QAAA,YAIA,IAAA,EAAA,CACA,UAAA,QAAA,mBAKA,EAAA,QAAA,6BAKA,EAAA,QAAA,eAAA,OACA,EAAA,EAAA,YAAA,aACA,SAAA,EAAA,GACA,OAAA,EAAA,KAAA,GAEA,SAAA,EAAA,GACA,OAAA,EAAA,SAAA,IAAA,aAAA,EAKA,IA2IA,EA3IA,EAAA,QAAA,8BAIA,SAAA,KAEA,SAAA,EAAA,EAAA,GACA,EAAA,GAAA,QAAA,oBAEA,EAAA,GAAA,GAOA,IAAA,EAAA,aAAA,EAIA,KAAA,aAAA,EAAA,WAEA,IAAA,KAAA,WAAA,KAAA,cAAA,EAAA,oBAKA,IAAA,EAAA,EAAA,cACA,EAAA,EAAA,sBACA,EAAA,KAAA,WAAA,GAAA,MAEA,KAAA,cAAA,GAAA,IAAA,EAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAGA,KAAA,cAAA,KAAA,MAAA,KAAA,eAGA,KAAA,aAAA,EAGA,KAAA,WAAA,EAEA,KAAA,QAAA,EAEA,KAAA,OAAA,EAEA,KAAA,UAAA,EAGA,KAAA,WAAA,EAKA,IAAA,GAAA,IAAA,EAAA,cACA,KAAA,eAAA,EAKA,KAAA,gBAAA,EAAA,iBAAA,OAKA,KAAA,OAAA,EAGA,KAAA,SAAA,EAGA,KAAA,OAAA,EAMA,KAAA,MAAA,EAKA,KAAA,kBAAA,EAGA,KAAA,QAAA,SAAA,GACA,EAAA,EAAA,IAIA,KAAA,QAAA,KAGA,KAAA,SAAA,EAEA,KAAA,gBAAA,KACA,KAAA,oBAAA,KAIA,KAAA,UAAA,EAIA,KAAA,aAAA,EAGA,KAAA,cAAA,EAGA,KAAA,qBAAA,EAIA,KAAA,mBAAA,IAAA,EAAA,MA0CA,SAAA,EAAA,GAUA,GATA,EAAA,GAAA,QAAA,sBASA,EAAA,KAAA,EAAA,OAAA,gBAAA,GACA,OAAA,IAAA,EAAA,GAGA,KAAA,eAAA,IAAA,EAAA,EAAA,MAGA,KAAA,UAAA,EAEA,IACA,mBAAA,EAAA,QAAA,KAAA,OAAA,EAAA,OAEA,mBAAA,EAAA,SAAA,KAAA,QAAA,EAAA,QAEA,mBAAA,EAAA,UAAA,KAAA,SAAA,EAAA,SAEA,mBAAA,EAAA,QAAA,KAAA,OAAA,EAAA,QAGA,EAAA,KAAA,MAQA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,IAAA,MAAA,mBAEA,EAAA,KAAA,QAAA,GACA,EAAA,SAAA,EAAA,GAMA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,GAAA,EACA,GAAA,EAYA,OAVA,OAAA,EACA,EAAA,IAAA,UAAA,uCACA,iBAAA,QAAA,IAAA,GAAA,EAAA,aACA,EAAA,IAAA,UAAA,oCAEA,IACA,EAAA,KAAA,QAAA,GACA,EAAA,SAAA,EAAA,GACA,GAAA,GAEA,EAqDA,SAAA,EAAA,EAAA,EAAA,GAIA,OAHA,EAAA,aAAA,IAAA,EAAA,eAAA,iBAAA,IACA,EAAA,EAAA,KAAA,EAAA,IAEA,EAgBA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,IACA,GAAA,EACA,EAAA,SACA,EAAA,GAGA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,OAEA,EAAA,QAAA,EAEA,IAAA,EAAA,EAAA,OAAA,EAAA,cAIA,GAFA,IAAA,EAAA,WAAA,GAEA,EAAA,SAAA,EAAA,OAAA,CACA,IAAA,EAAA,EAAA,oBACA,EAAA,oBAAA,CACA,MAAA,EACA,SAAA,EACA,MAAA,EACA,SAAA,EACA,KAAA,MAEA,EACA,EAAA,KAAA,EAAA,oBAEA,EAAA,gBAAA,EAAA,oBAEA,EAAA,sBAAA,OAEA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAGA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,SAAA,EACA,EAAA,QAAA,EACA,EAAA,SAAA,EACA,EAAA,MAAA,EACA,EAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,EAAA,EAAA,SACA,EAAA,MAAA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KACA,EAAA,UAEA,GAGA,EAAA,SAAA,EAAA,GAGA,EAAA,SAAA,EAAA,EAAA,GACA,EAAA,eAAA,cAAA,EACA,EAAA,KAAA,QAAA,KAIA,EAAA,GACA,EAAA,eAAA,cAAA,EACA,EAAA,KAAA,QAAA,GAGA,EAAA,EAAA,IAIA,SAAA,EAAA,GACA,EAAA,SAAA,EACA,EAAA,QAAA,KACA,EAAA,QAAA,EAAA,SACA,EAAA,SAAA,EAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,eACA,EAAA,EAAA,KACA,EAAA,EAAA,QAIA,GAFA,EAAA,GAEA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,CAEA,IAAA,EAAA,EAAA,GAEA,GAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBACA,EAAA,EAAA,GAGA,EAEA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGA,EAAA,EAAA,EAAA,EAAA,IAKA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAAA,EAAA,GACA,EAAA,YACA,IACA,EAAA,EAAA,GAMA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,QAAA,EAAA,YACA,EAAA,WAAA,EACA,EAAA,KAAA,UAKA,SAAA,EAAA,EAAA,GACA,EAAA,kBAAA,EACA,IAAA,EAAA,EAAA,gBAEA,GAAA,EAAA,SAAA,GAAA,EAAA,KAAA,CAEA,IAAA,EAAA,EAAA,qBACA,EAAA,IAAA,MAAA,GACA,EAAA,EAAA,mBACA,EAAA,MAAA,EAIA,IAFA,IAAA,EAAA,EACA,GAAA,EACA,GACA,EAAA,GAAA,EACA,EAAA,QAAA,GAAA,GACA,EAAA,EAAA,KACA,GAAA,EAEA,EAAA,WAAA,EAEA,EAAA,EAAA,GAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,QAIA,EAAA,YACA,EAAA,oBAAA,KACA,EAAA,MACA,EAAA,mBAAA,EAAA,KACA,EAAA,KAAA,MAEA,EAAA,mBAAA,IAAA,EAAA,GAEA,EAAA,qBAAA,MACA,CAEA,KAAA,GAAA,CACA,IAAA,EAAA,EAAA,MACA,EAAA,EAAA,SACA,EAAA,EAAA,SAUA,GAPA,EAAA,EAAA,GAAA,EAFA,EAAA,WAAA,EAAA,EAAA,OAEA,EAAA,EAAA,GACA,EAAA,EAAA,KACA,EAAA,uBAKA,EAAA,QACA,MAIA,OAAA,IAAA,EAAA,oBAAA,MAGA,EAAA,gBAAA,EACA,EAAA,kBAAA,EAiCA,SAAA,EAAA,GACA,OAAA,EAAA,QAAA,IAAA,EAAA,QAAA,OAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,QAEA,SAAA,EAAA,EAAA,GACA,EAAA,OAAA,SAAA,GACA,EAAA,YACA,GACA,EAAA,KAAA,QAAA,GAEA,EAAA,aAAA,EACA,EAAA,KAAA,aACA,EAAA,EAAA,KAGA,SAAA,EAAA,EAAA,GACA,EAAA,aAAA,EAAA,cACA,mBAAA,EAAA,QACA,EAAA,YACA,EAAA,aAAA,EACA,EAAA,SAAA,EAAA,EAAA,KAEA,EAAA,aAAA,EACA,EAAA,KAAA,eAKA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GAQA,OAPA,IACA,EAAA,EAAA,GACA,IAAA,EAAA,YACA,EAAA,UAAA,EACA,EAAA,KAAA,YAGA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,QAAA,EACA,EAAA,EAAA,GACA,IACA,EAAA,SAAA,EAAA,SAAA,GAAA,EAAA,KAAA,SAAA,IAEA,EAAA,OAAA,EACA,EAAA,UAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,MAEA,IADA,EAAA,MAAA,KACA,GAAA,CACA,IAAA,EAAA,EAAA,SACA,EAAA,YACA,EAAA,GACA,EAAA,EAAA,KAEA,EAAA,mBACA,EAAA,mBAAA,KAAA,EAEA,EAAA,mBAAA,EAljBA,EAAA,SAAA,EAAA,GAmHA,EAAA,UAAA,UAAA,WAGA,IAFA,IAAA,EAAA,KAAA,gBACA,EAAA,GACA,GACA,EAAA,KAAA,GACA,EAAA,EAAA,KAEA,OAAA,GAGA,WACA,IACA,OAAA,eAAA,EAAA,UAAA,SAAA,CACA,IAAA,EAAA,UAAA,WACA,OAAA,KAAA,aACA,6EAAA,aAEA,MAAA,KAPA,GAaA,mBAAA,QAAA,OAAA,aAAA,mBAAA,SAAA,UAAA,OAAA,cACA,EAAA,SAAA,UAAA,OAAA,aACA,OAAA,eAAA,EAAA,OAAA,YAAA,CACA,MAAA,SAAA,GACA,QAAA,EAAA,KAAA,KAAA,IACA,OAAA,IAEA,GAAA,EAAA,0BAAA,OAIA,EAAA,SAAA,GACA,OAAA,aAAA,MAqCA,EAAA,UAAA,KAAA,WACA,KAAA,KAAA,QAAA,IAAA,MAAA,+BA8BA,EAAA,UAAA,MAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,eACA,GAAA,EACA,GAAA,EAAA,YAAA,EAAA,GAoBA,OAlBA,IAAA,EAAA,SAAA,KACA,EAAA,EAAA,IAGA,mBAAA,IACA,EAAA,EACA,EAAA,MAGA,EAAA,EAAA,SAAA,IAAA,EAAA,EAAA,iBAEA,mBAAA,IAAA,EAAA,GAEA,EAAA,MAAA,EAAA,KAAA,IAAA,GAAA,EAAA,KAAA,EAAA,EAAA,MACA,EAAA,YACA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,IAGA,GAGA,EAAA,UAAA,KAAA,WACA,KAAA,eAEA,UAGA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,eAEA,EAAA,SACA,EAAA,SAEA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,KAAA,KAIA,EAAA,UAAA,mBAAA,SAAA,GAGA,GADA,iBAAA,IAAA,EAAA,EAAA,iBACA,CAAA,MAAA,OAAA,QAAA,QAAA,SAAA,SAAA,OAAA,QAAA,UAAA,WAAA,OAAA,SAAA,EAAA,IAAA,gBAAA,GAAA,MAAA,IAAA,UAAA,qBAAA,GAEA,OADA,KAAA,eAAA,gBAAA,EACA,MAUA,OAAA,eAAA,EAAA,UAAA,wBAAA,CAIA,YAAA,EACA,IAAA,WACA,OAAA,KAAA,eAAA,iBA8LA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GACA,EAAA,IAAA,MAAA,iCAGA,EAAA,UAAA,QAAA,KAEA,EAAA,UAAA,IAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,eAEA,mBAAA,GACA,EAAA,EACA,EAAA,KACA,EAAA,MACA,mBAAA,IACA,EAAA,EACA,EAAA,MAGA,MAAA,GAAA,KAAA,MAAA,EAAA,GAGA,EAAA,SACA,EAAA,OAAA,EACA,KAAA,UAIA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAoEA,OAAA,eAAA,EAAA,UAAA,YAAA,CACA,IAAA,WACA,YAAA,IAAA,KAAA,gBAGA,KAAA,eAAA,WAEA,IAAA,SAAA,GAGA,KAAA,iBAMA,KAAA,eAAA,UAAA,MAIA,EAAA,UAAA,QAAA,EAAA,QACA,EAAA,UAAA,WAAA,EAAA,UACA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,KAAA,MACA,EAAA;;ACnpBA,aAIA,IAAA,EAAA,QAAA,wBAIA,EAAA,OAAA,MAAA,SAAA,GACA,IAAA,EAAA,GACA,IAAA,IAAA,KAAA,EACA,EAAA,KAAA,GACA,OAAA,GAIA,OAAA,QAAA,EAGA,IAAA,EAAA,QAAA,gBACA,EAAA,SAAA,QAAA,YAGA,IAAA,EAAA,QAAA,sBACA,EAAA,QAAA,sBAEA,EAAA,SAAA,EAAA,GAKA,IADA,IAAA,EAAA,EAAA,EAAA,WACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,UAAA,KAAA,EAAA,UAAA,GAAA,EAAA,UAAA,IAIA,SAAA,EAAA,GACA,KAAA,gBAAA,GAAA,OAAA,IAAA,EAAA,GAEA,EAAA,KAAA,KAAA,GACA,EAAA,KAAA,KAAA,GAEA,IAAA,IAAA,EAAA,WAAA,KAAA,UAAA,GAEA,IAAA,IAAA,EAAA,WAAA,KAAA,UAAA,GAEA,KAAA,eAAA,EACA,IAAA,IAAA,EAAA,gBAAA,KAAA,eAAA,GAEA,KAAA,KAAA,MAAA,GAcA,SAAA,IAGA,KAAA,eAAA,KAAA,eAAA,OAIA,EAAA,SAAA,EAAA,MAGA,SAAA,EAAA,GACA,EAAA,MAtBA,OAAA,eAAA,EAAA,UAAA,wBAAA,CAIA,YAAA,EACA,IAAA,WACA,OAAA,KAAA,eAAA,iBAmBA,OAAA,eAAA,EAAA,UAAA,YAAA,CACA,IAAA,WACA,YAAA,IAAA,KAAA,qBAAA,IAAA,KAAA,iBAGA,KAAA,eAAA,WAAA,KAAA,eAAA,YAEA,IAAA,SAAA,QAGA,IAAA,KAAA,qBAAA,IAAA,KAAA,iBAMA,KAAA,eAAA,UAAA,EACA,KAAA,eAAA,UAAA,MAIA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,KAAA,KAAA,MACA,KAAA,MAEA,EAAA,SAAA,EAAA;;;AC5GA,aAIA,IAAA,EAAA,QAAA,eAAA,OAGA,EAAA,EAAA,YAAA,SAAA,GAEA,QADA,EAAA,GAAA,IACA,EAAA,eACA,IAAA,MAAA,IAAA,OAAA,IAAA,QAAA,IAAA,QAAA,IAAA,SAAA,IAAA,SAAA,IAAA,OAAA,IAAA,QAAA,IAAA,UAAA,IAAA,WAAA,IAAA,MACA,OAAA,EACA,QACA,OAAA,IAIA,SAAA,EAAA,GACA,IAAA,EAAA,MAAA,OAEA,IADA,IAAA,IAEA,OAAA,GACA,IAAA,OACA,IAAA,QACA,MAAA,OACA,IAAA,OACA,IAAA,QACA,IAAA,UACA,IAAA,WACA,MAAA,UACA,IAAA,SACA,IAAA,SACA,MAAA,SACA,IAAA,SACA,IAAA,QACA,IAAA,MACA,OAAA,EACA,QACA,GAAA,EAAA,OACA,GAAA,GAAA,GAAA,cACA,GAAA,GAOA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,GACA,GAAA,iBAAA,IAAA,EAAA,aAAA,IAAA,EAAA,IAAA,MAAA,IAAA,MAAA,qBAAA,GACA,OAAA,GAAA,EAOA,SAAA,EAAA,GAEA,IAAA,EACA,OAFA,KAAA,SAAA,EAAA,GAEA,KAAA,UACA,IAAA,UACA,KAAA,KAAA,EACA,KAAA,IAAA,EACA,EAAA,EACA,MACA,IAAA,OACA,KAAA,SAAA,EACA,EAAA,EACA,MACA,IAAA,SACA,KAAA,KAAA,EACA,KAAA,IAAA,EACA,EAAA,EACA,MACA,QAGA,OAFA,KAAA,MAAA,OACA,KAAA,IAAA,GAGA,KAAA,SAAA,EACA,KAAA,UAAA,EACA,KAAA,SAAA,EAAA,YAAA,GAoCA,SAAA,EAAA,GACA,OAAA,GAAA,IAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EAMA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,OAAA,EACA,GAAA,EAAA,EAAA,OAAA,EACA,IAAA,EAAA,EAAA,EAAA,IACA,OAAA,GAAA,GACA,EAAA,IAAA,EAAA,SAAA,EAAA,GACA,KAEA,EAAA,IAAA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,MACA,GACA,EAAA,IAAA,EAAA,SAAA,EAAA,GACA,KAEA,EAAA,IAAA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,MACA,GACA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,SAAA,EAAA,GAEA,GAEA,EAWA,SAAA,EAAA,EAAA,EAAA,GACA,GAAA,MAAA,IAAA,EAAA,IAEA,OADA,EAAA,SAAA,EACA,IAEA,GAAA,EAAA,SAAA,GAAA,EAAA,OAAA,EAAA,CACA,GAAA,MAAA,IAAA,EAAA,IAEA,OADA,EAAA,SAAA,EACA,IAEA,GAAA,EAAA,SAAA,GAAA,EAAA,OAAA,GACA,MAAA,IAAA,EAAA,IAEA,OADA,EAAA,SAAA,EACA,KAOA,SAAA,EAAA,GACA,IAAA,EAAA,KAAA,UAAA,KAAA,SACA,EAAA,EAAA,KAAA,EAAA,GACA,YAAA,IAAA,EAAA,EACA,KAAA,UAAA,EAAA,QACA,EAAA,KAAA,KAAA,SAAA,EAAA,EAAA,KAAA,UACA,KAAA,SAAA,SAAA,KAAA,SAAA,EAAA,KAAA,aAEA,EAAA,KAAA,KAAA,SAAA,EAAA,EAAA,EAAA,aACA,KAAA,UAAA,EAAA,SAMA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,KAAA,EAAA,GACA,IAAA,KAAA,SAAA,OAAA,EAAA,SAAA,OAAA,GACA,KAAA,UAAA,EACA,IAAA,EAAA,EAAA,QAAA,EAAA,KAAA,UAEA,OADA,EAAA,KAAA,KAAA,SAAA,EAAA,GACA,EAAA,SAAA,OAAA,EAAA,GAKA,SAAA,EAAA,GACA,IAAA,EAAA,GAAA,EAAA,OAAA,KAAA,MAAA,GAAA,GACA,OAAA,KAAA,SAAA,EAAA,IACA,EAOA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,SAAA,UAAA,GACA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,WAAA,EAAA,OAAA,GACA,GAAA,GAAA,OAAA,GAAA,MAKA,OAJA,KAAA,SAAA,EACA,KAAA,UAAA,EACA,KAAA,SAAA,GAAA,EAAA,EAAA,OAAA,GACA,KAAA,SAAA,GAAA,EAAA,EAAA,OAAA,GACA,EAAA,MAAA,GAAA,GAGA,OAAA,EAKA,OAHA,KAAA,SAAA,EACA,KAAA,UAAA,EACA,KAAA,SAAA,GAAA,EAAA,EAAA,OAAA,GACA,EAAA,SAAA,UAAA,EAAA,EAAA,OAAA,GAKA,SAAA,EAAA,GACA,IAAA,EAAA,GAAA,EAAA,OAAA,KAAA,MAAA,GAAA,GACA,GAAA,KAAA,SAAA,CACA,IAAA,EAAA,KAAA,UAAA,KAAA,SACA,OAAA,EAAA,KAAA,SAAA,SAAA,UAAA,EAAA,GAEA,OAAA,EAGA,SAAA,EAAA,EAAA,GACA,IAAA,GAAA,EAAA,OAAA,GAAA,EACA,OAAA,IAAA,EAAA,EAAA,SAAA,SAAA,IACA,KAAA,SAAA,EAAA,EACA,KAAA,UAAA,EACA,IAAA,EACA,KAAA,SAAA,GAAA,EAAA,EAAA,OAAA,IAEA,KAAA,SAAA,GAAA,EAAA,EAAA,OAAA,GACA,KAAA,SAAA,GAAA,EAAA,EAAA,OAAA,IAEA,EAAA,SAAA,SAAA,EAAA,EAAA,OAAA,IAGA,SAAA,EAAA,GACA,IAAA,EAAA,GAAA,EAAA,OAAA,KAAA,MAAA,GAAA,GACA,OAAA,KAAA,SAAA,EAAA,KAAA,SAAA,SAAA,SAAA,EAAA,EAAA,KAAA,UACA,EAIA,SAAA,EAAA,GACA,OAAA,EAAA,SAAA,KAAA,UAGA,SAAA,EAAA,GACA,OAAA,GAAA,EAAA,OAAA,KAAA,MAAA,GAAA,GAzNA,QAAA,cAAA,EA6BA,EAAA,UAAA,MAAA,SAAA,GACA,GAAA,IAAA,EAAA,OAAA,MAAA,GACA,IAAA,EACA,EACA,GAAA,KAAA,SAAA,CAEA,QAAA,KADA,EAAA,KAAA,SAAA,IACA,MAAA,GACA,EAAA,KAAA,SACA,KAAA,SAAA,OAEA,EAAA,EAEA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,KAAA,KAAA,EAAA,GACA,GAAA,IAGA,EAAA,UAAA,IAAA,EAGA,EAAA,UAAA,KAAA,EAGA,EAAA,UAAA,SAAA,SAAA,GACA,GAAA,KAAA,UAAA,EAAA,OAEA,OADA,EAAA,KAAA,KAAA,SAAA,KAAA,UAAA,KAAA,SAAA,EAAA,KAAA,UACA,KAAA,SAAA,SAAA,KAAA,SAAA,EAAA,KAAA,WAEA,EAAA,KAAA,KAAA,SAAA,KAAA,UAAA,KAAA,SAAA,EAAA,EAAA,QACA,KAAA,UAAA,EAAA;;;;;ACo3BA,IAAA,EAAA,UAAA,GAAA,EAAA,QAAA,WAj+BA,EAAA,QAAA,wBAGA,OAAA,QAAA,EAGA,IAIA,EAJA,EAAA,QAAA,WAOA,EAAA,cAAA,EAGA,IAAA,EAAA,QAAA,UAAA,aAEA,EAAA,SAAA,EAAA,GACA,OAAA,EAAA,UAAA,GAAA,QAKA,EAAA,QAAA,6BAKA,EAAA,QAAA,eAAA,OACA,EAAA,EAAA,YAAA,aACA,SAAA,EAAA,GACA,OAAA,EAAA,KAAA,GAEA,SAAA,EAAA,GACA,OAAA,EAAA,SAAA,IAAA,aAAA,EAMA,IAAA,EAAA,QAAA,gBACA,EAAA,SAAA,QAAA,YAIA,IAAA,EAAA,QAAA,QACA,OAAA,EAEA,EADA,GAAA,EAAA,SACA,EAAA,SAAA,UAEA,aAIA,IAEA,EAFA,EAAA,QAAA,iCACA,EAAA,QAAA,8BAGA,EAAA,SAAA,EAAA,GAEA,IAAA,EAAA,CAAA,QAAA,QAAA,UAAA,QAAA,UAEA,SAAA,EAAA,EAAA,EAAA,GAGA,GAAA,mBAAA,EAAA,gBAAA,OAAA,EAAA,gBAAA,EAAA,GAMA,EAAA,SAAA,EAAA,QAAA,GAAA,EAAA,EAAA,QAAA,IAAA,EAAA,QAAA,GAAA,QAAA,GAAA,EAAA,QAAA,GAAA,CAAA,EAAA,EAAA,QAAA,IAAA,EAAA,GAAA,EAAA,GAGA,SAAA,EAAA,EAAA,GAGA,EAAA,GAAA,GAOA,IAAA,EAAA,aATA,EAAA,GAAA,QAAA,qBAaA,KAAA,aAAA,EAAA,WAEA,IAAA,KAAA,WAAA,KAAA,cAAA,EAAA,oBAIA,IAAA,EAAA,EAAA,cACA,EAAA,EAAA,sBACA,EAAA,KAAA,WAAA,GAAA,MAEA,KAAA,cAAA,GAAA,IAAA,EAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAGA,KAAA,cAAA,KAAA,MAAA,KAAA,eAKA,KAAA,OAAA,IAAA,EACA,KAAA,OAAA,EACA,KAAA,MAAA,KACA,KAAA,WAAA,EACA,KAAA,QAAA,KACA,KAAA,OAAA,EACA,KAAA,YAAA,EACA,KAAA,SAAA,EAMA,KAAA,MAAA,EAIA,KAAA,cAAA,EACA,KAAA,iBAAA,EACA,KAAA,mBAAA,EACA,KAAA,iBAAA,EAGA,KAAA,WAAA,EAKA,KAAA,gBAAA,EAAA,iBAAA,OAGA,KAAA,WAAA,EAGA,KAAA,aAAA,EAEA,KAAA,QAAA,KACA,KAAA,SAAA,KACA,EAAA,WACA,IAAA,EAAA,QAAA,mBAAA,eACA,KAAA,QAAA,IAAA,EAAA,EAAA,UACA,KAAA,SAAA,EAAA,UAIA,SAAA,EAAA,GAGA,GAFA,EAAA,GAAA,QAAA,sBAEA,gBAAA,GAAA,OAAA,IAAA,EAAA,GAEA,KAAA,eAAA,IAAA,EAAA,EAAA,MAGA,KAAA,UAAA,EAEA,IACA,mBAAA,EAAA,OAAA,KAAA,MAAA,EAAA,MAEA,mBAAA,EAAA,UAAA,KAAA,SAAA,EAAA,UAGA,EAAA,KAAA,MA2DA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAKA,EALA,EAAA,EAAA,eACA,OAAA,GACA,EAAA,SAAA,EACA,EAAA,EAAA,KAGA,IAAA,EAAA,EAAA,EAAA,IACA,EACA,EAAA,KAAA,QAAA,GACA,EAAA,YAAA,GAAA,EAAA,OAAA,GACA,iBAAA,GAAA,EAAA,YAAA,OAAA,eAAA,KAAA,EAAA,YACA,EAAA,EAAA,IAGA,EACA,EAAA,WAAA,EAAA,KAAA,QAAA,IAAA,MAAA,qCAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,MACA,EAAA,KAAA,QAAA,IAAA,MAAA,6BAEA,EAAA,SAAA,EACA,EAAA,UAAA,GACA,EAAA,EAAA,QAAA,MAAA,GACA,EAAA,YAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAEA,EAAA,EAAA,EAAA,GAAA,KAGA,IACA,EAAA,SAAA,IAIA,OAAA,EAAA,GAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,SAAA,IAAA,EAAA,SAAA,EAAA,MACA,EAAA,KAAA,OAAA,GACA,EAAA,KAAA,KAGA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,OACA,EAAA,EAAA,OAAA,QAAA,GAAA,EAAA,OAAA,KAAA,GAEA,EAAA,cAAA,EAAA,IAEA,EAAA,EAAA,GAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAIA,OAHA,EAAA,IAAA,iBAAA,QAAA,IAAA,GAAA,EAAA,aACA,EAAA,IAAA,UAAA,oCAEA,EAUA,SAAA,EAAA,GACA,OAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,eAAA,IAAA,EAAA,QA1HA,OAAA,eAAA,EAAA,UAAA,YAAA,CACA,IAAA,WACA,YAAA,IAAA,KAAA,gBAGA,KAAA,eAAA,WAEA,IAAA,SAAA,GAGA,KAAA,iBAMA,KAAA,eAAA,UAAA,MAIA,EAAA,UAAA,QAAA,EAAA,QACA,EAAA,UAAA,WAAA,EAAA,UACA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,KAAA,KAAA,MACA,EAAA,IAOA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,IACA,EADA,EAAA,KAAA,eAgBA,OAbA,EAAA,WAUA,GAAA,EATA,iBAAA,KACA,EAAA,GAAA,EAAA,mBACA,EAAA,WACA,EAAA,EAAA,KAAA,EAAA,GACA,EAAA,IAEA,GAAA,GAMA,EAAA,KAAA,EAAA,GAAA,EAAA,IAIA,EAAA,UAAA,QAAA,SAAA,GACA,OAAA,EAAA,KAAA,EAAA,MAAA,GAAA,IAwEA,EAAA,UAAA,SAAA,WACA,OAAA,IAAA,KAAA,eAAA,SAIA,EAAA,UAAA,YAAA,SAAA,GAIA,OAHA,IAAA,EAAA,QAAA,mBAAA,eACA,KAAA,eAAA,QAAA,IAAA,EAAA,GACA,KAAA,eAAA,SAAA,EACA,MAIA,IAAA,EAAA,QACA,SAAA,EAAA,GAcA,OAbA,GAAA,EACA,EAAA,GAIA,IACA,GAAA,IAAA,EACA,GAAA,IAAA,EACA,GAAA,IAAA,EACA,GAAA,IAAA,EACA,GAAA,IAAA,GACA,KAEA,EAKA,SAAA,EAAA,EAAA,GACA,OAAA,GAAA,GAAA,IAAA,EAAA,QAAA,EAAA,MAAA,EACA,EAAA,WAAA,EACA,GAAA,EAEA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,KAAA,KAAA,OAAA,EAAA,QAGA,EAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,IACA,GAAA,EAAA,OAAA,EAEA,EAAA,MAIA,EAAA,QAHA,EAAA,cAAA,EACA,IA0GA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,MAAA,CACA,GAAA,EAAA,QAAA,CACA,IAAA,EAAA,EAAA,QAAA,MACA,GAAA,EAAA,SACA,EAAA,OAAA,KAAA,GACA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,QAGA,EAAA,OAAA,EAGA,EAAA,IAMA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,eACA,EAAA,cAAA,EACA,EAAA,kBACA,EAAA,eAAA,EAAA,SACA,EAAA,iBAAA,EACA,EAAA,KAAA,EAAA,SAAA,EAAA,GAAA,EAAA,IAIA,SAAA,EAAA,GACA,EAAA,iBACA,EAAA,KAAA,YACA,EAAA,GASA,SAAA,EAAA,EAAA,GACA,EAAA,cACA,EAAA,aAAA,EACA,EAAA,SAAA,EAAA,EAAA,IAIA,SAAA,EAAA,EAAA,GAEA,IADA,IAAA,EAAA,EAAA,QACA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,gBACA,EAAA,wBACA,EAAA,KAAA,GACA,IAAA,EAAA,SAEA,EAAA,EAAA,OAEA,EAAA,aAAA,EAkJA,SAAA,EAAA,GACA,OAAA,WACA,IAAA,EAAA,EAAA,eACA,EAAA,cAAA,EAAA,YACA,EAAA,YAAA,EAAA,aACA,IAAA,EAAA,YAAA,EAAA,EAAA,UACA,EAAA,SAAA,EACA,EAAA,KAgFA,SAAA,EAAA,GACA,EAAA,4BACA,EAAA,KAAA,GAeA,SAAA,EAAA,EAAA,GACA,EAAA,kBACA,EAAA,iBAAA,EACA,EAAA,SAAA,EAAA,EAAA,IAIA,SAAA,EAAA,EAAA,GACA,EAAA,UACA,EAAA,iBACA,EAAA,KAAA,IAGA,EAAA,iBAAA,EACA,EAAA,WAAA,EACA,EAAA,KAAA,UACA,EAAA,GACA,EAAA,UAAA,EAAA,SAAA,EAAA,KAAA,GAaA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,eAEA,IADA,EAAA,OAAA,EAAA,SACA,EAAA,SAAA,OAAA,EAAA,UAmFA,SAAA,EAAA,EAAA,GAEA,OAAA,IAAA,EAAA,OAAA,MAGA,EAAA,WAAA,EAAA,EAAA,OAAA,SAAA,GAAA,GAAA,EAAA,QAEA,EAAA,EAAA,QAAA,EAAA,OAAA,KAAA,IAAA,IAAA,EAAA,OAAA,OAAA,EAAA,OAAA,KAAA,KAAA,EAAA,OAAA,OAAA,EAAA,QACA,EAAA,OAAA,SAGA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,SAGA,GAVA,IAAA,EAgBA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAYA,OAXA,EAAA,EAAA,KAAA,KAAA,QAEA,EAAA,EAAA,KAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,KAAA,EAAA,KAAA,KAAA,MAAA,IAGA,EAFA,IAAA,EAAA,KAAA,KAAA,OAEA,EAAA,QAGA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAEA,EAOA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,KACA,EAAA,EACA,EAAA,EAAA,KAEA,IADA,GAAA,EAAA,OACA,EAAA,EAAA,MAAA,CACA,IAAA,EAAA,EAAA,KACA,EAAA,EAAA,EAAA,OAAA,EAAA,OAAA,EAGA,GAFA,IAAA,EAAA,OAAA,GAAA,EAAA,GAAA,EAAA,MAAA,EAAA,GAEA,KADA,GAAA,GACA,CACA,IAAA,EAAA,UACA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,OAEA,EAAA,KAAA,EACA,EAAA,KAAA,EAAA,MAAA,IAEA,QAEA,EAGA,OADA,EAAA,QAAA,EACA,EAMA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,YAAA,GACA,EAAA,EAAA,KACA,EAAA,EAGA,IAFA,EAAA,KAAA,KAAA,GACA,GAAA,EAAA,KAAA,OACA,EAAA,EAAA,MAAA,CACA,IAAA,EAAA,EAAA,KACA,EAAA,EAAA,EAAA,OAAA,EAAA,OAAA,EAGA,GAFA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,GAEA,KADA,GAAA,GACA,CACA,IAAA,EAAA,UACA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,OAEA,EAAA,KAAA,EACA,EAAA,KAAA,EAAA,MAAA,IAEA,QAEA,EAGA,OADA,EAAA,QAAA,EACA,EAGA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,eAIA,GAAA,EAAA,OAAA,EAAA,MAAA,IAAA,MAAA,8CAEA,EAAA,aACA,EAAA,OAAA,EACA,EAAA,SAAA,EAAA,EAAA,IAIA,SAAA,EAAA,EAAA,GAEA,EAAA,YAAA,IAAA,EAAA,SACA,EAAA,YAAA,EACA,EAAA,UAAA,EACA,EAAA,KAAA,QAIA,SAAA,EAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IACA,GAAA,EAAA,KAAA,EAAA,OAAA,EAEA,OAAA,EApoBA,EAAA,UAAA,KAAA,SAAA,GACA,EAAA,OAAA,GACA,EAAA,SAAA,EAAA,IACA,IAAA,EAAA,KAAA,eACA,EAAA,EAOA,GALA,IAAA,IAAA,EAAA,iBAAA,GAKA,IAAA,GAAA,EAAA,eAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAGA,OAFA,EAAA,qBAAA,EAAA,OAAA,EAAA,OACA,IAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MACA,KAMA,GAAA,KAHA,EAAA,EAAA,EAAA,KAGA,EAAA,MAEA,OADA,IAAA,EAAA,QAAA,EAAA,MACA,KA0BA,IA4BA,EA5BA,EAAA,EAAA,aAiDA,OAhDA,EAAA,gBAAA,IAGA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,EAAA,gBAEA,EAAA,6BADA,GAAA,GAMA,EAAA,OAAA,EAAA,QAEA,EAAA,mBADA,GAAA,GAEA,IACA,EAAA,WACA,EAAA,SAAA,EACA,EAAA,MAAA,EAEA,IAAA,EAAA,SAAA,EAAA,cAAA,GAEA,KAAA,MAAA,EAAA,eACA,EAAA,MAAA,EAGA,EAAA,UAAA,EAAA,EAAA,EAAA,KAMA,QAFA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,OAGA,EAAA,cAAA,EACA,EAAA,GAEA,EAAA,QAAA,EAGA,IAAA,EAAA,SAGA,EAAA,QAAA,EAAA,cAAA,GAGA,IAAA,GAAA,EAAA,OAAA,EAAA,OAGA,OAAA,GAAA,KAAA,KAAA,OAAA,GAEA,GAkEA,EAAA,UAAA,MAAA,SAAA,GACA,KAAA,KAAA,QAAA,IAAA,MAAA,gCAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,IAAA,EAAA,KACA,EAAA,KAAA,eAEA,OAAA,EAAA,YACA,KAAA,EACA,EAAA,MAAA,EACA,MACA,KAAA,EACA,EAAA,MAAA,CAAA,EAAA,MAAA,GACA,MACA,QACA,EAAA,MAAA,KAAA,GAGA,EAAA,YAAA,EACA,EAAA,wBAAA,EAAA,WAAA,GAEA,IAEA,IAFA,IAAA,IAAA,EAAA,MAAA,IAAA,EAAA,QAAA,IAAA,EAAA,OAEA,EAAA,EAIA,SAAA,EAAA,EAAA,GACA,EAAA,YACA,IAAA,GACA,IAAA,IAAA,EAAA,aACA,EAAA,YAAA,EAoBA,EAAA,WAEA,EAAA,eAAA,QAAA,GACA,EAAA,eAAA,SAAA,GACA,EAAA,eAAA,QAAA,GACA,EAAA,eAAA,QAAA,GACA,EAAA,eAAA,SAAA,GACA,EAAA,eAAA,MAAA,GACA,EAAA,eAAA,MAAA,GACA,EAAA,eAAA,OAAA,GAEA,GAAA,GAOA,EAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,WAAA,KAhCA,SAAA,IACA,EAAA,SACA,EAAA,MAfA,EAAA,WAAA,EAAA,SAAA,GAAA,EAAA,KAAA,MAAA,GAEA,EAAA,GAAA,SAAA,GAoBA,IAAA,EAAA,EAAA,GACA,EAAA,GAAA,QAAA,GAEA,IAAA,GAAA,EA2BA,IAAA,GAAA,EAEA,SAAA,EAAA,GACA,EAAA,UACA,GAAA,GAEA,IADA,EAAA,MAAA,IACA,KAKA,IAAA,EAAA,YAAA,EAAA,QAAA,GAAA,EAAA,WAAA,IAAA,IAAA,EAAA,EAAA,MAAA,MAAA,IACA,EAAA,8BAAA,EAAA,eAAA,YACA,EAAA,eAAA,aACA,GAAA,GAEA,EAAA,SAMA,SAAA,EAAA,GACA,EAAA,UAAA,GACA,IACA,EAAA,eAAA,QAAA,GACA,IAAA,EAAA,EAAA,UAAA,EAAA,KAAA,QAAA,GAOA,SAAA,IACA,EAAA,eAAA,SAAA,GACA,IAGA,SAAA,IACA,EAAA,YACA,EAAA,eAAA,QAAA,GACA,IAIA,SAAA,IACA,EAAA,UACA,EAAA,OAAA,GAYA,OA1DA,EAAA,GAAA,OAAA,GA6BA,EAAA,EAAA,QAAA,GAOA,EAAA,KAAA,QAAA,GAMA,EAAA,KAAA,SAAA,GAQA,EAAA,KAAA,OAAA,GAGA,EAAA,UACA,EAAA,eACA,EAAA,UAGA,GAeA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,KAAA,eACA,EAAA,CAAA,YAAA,GAGA,GAAA,IAAA,EAAA,WAAA,OAAA,KAGA,GAAA,IAAA,EAAA,WAEA,OAAA,GAAA,IAAA,EAAA,MAAA,MAEA,IAAA,EAAA,EAAA,OAGA,EAAA,MAAA,KACA,EAAA,WAAA,EACA,EAAA,SAAA,EACA,GAAA,EAAA,KAAA,SAAA,KAAA,GACA,MAKA,IAAA,EAAA,CAEA,IAAA,EAAA,EAAA,MACA,EAAA,EAAA,WACA,EAAA,MAAA,KACA,EAAA,WAAA,EACA,EAAA,SAAA,EAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,KAAA,SAAA,KAAA,GACA,OAAA,KAIA,IAAA,EAAA,EAAA,EAAA,MAAA,GACA,OAAA,IAAA,EAAA,MAEA,EAAA,MAAA,OAAA,EAAA,GACA,EAAA,YAAA,EACA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,IAEA,EAAA,KAAA,SAAA,KAAA,GAEA,OAKA,EAAA,UAAA,GAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,UAAA,GAAA,KAAA,KAAA,EAAA,GAEA,GAAA,SAAA,GAEA,IAAA,KAAA,eAAA,SAAA,KAAA,cACA,GAAA,aAAA,EAAA,CACA,IAAA,EAAA,KAAA,eACA,EAAA,YAAA,EAAA,oBACA,EAAA,kBAAA,EAAA,cAAA,EACA,EAAA,iBAAA,EACA,EAAA,QAEA,EAAA,QACA,EAAA,MAFA,EAAA,SAAA,EAAA,OAOA,OAAA,GAEA,EAAA,UAAA,YAAA,EAAA,UAAA,GASA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,eAMA,OALA,EAAA,UACA,EAAA,UACA,EAAA,SAAA,EACA,EAAA,KAAA,IAEA,MAuBA,EAAA,UAAA,MAAA,WAOA,OANA,EAAA,wBAAA,KAAA,eAAA,UACA,IAAA,KAAA,eAAA,UACA,EAAA,SACA,KAAA,eAAA,SAAA,EACA,KAAA,KAAA,UAEA,MAYA,EAAA,UAAA,KAAA,SAAA,GACA,IAAA,EAAA,KAEA,EAAA,KAAA,eACA,GAAA,EA4BA,IAAA,IAAA,KA1BA,EAAA,GAAA,MAAA,WAEA,GADA,EAAA,eACA,EAAA,UAAA,EAAA,MAAA,CACA,IAAA,EAAA,EAAA,QAAA,MACA,GAAA,EAAA,QAAA,EAAA,KAAA,GAGA,EAAA,KAAA,QAGA,EAAA,GAAA,OAAA,SAAA,IACA,EAAA,gBACA,EAAA,UAAA,EAAA,EAAA,QAAA,MAAA,IAGA,EAAA,YAAA,MAAA,KAAA,EAAA,YAAA,GAAA,EAAA,UAEA,EAAA,KAAA,KAEA,GAAA,EACA,EAAA,YAMA,OACA,IAAA,KAAA,IAAA,mBAAA,EAAA,KACA,KAAA,GAAA,SAAA,GACA,OAAA,WACA,OAAA,EAAA,GAAA,MAAA,EAAA,YAFA,CAIA,IAKA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,GAAA,KAAA,KAAA,KAAA,KAAA,EAAA,KAaA,OARA,KAAA,MAAA,SAAA,GACA,EAAA,gBAAA,GACA,IACA,GAAA,EACA,EAAA,WAIA,MAGA,OAAA,eAAA,EAAA,UAAA,wBAAA,CAIA,YAAA,EACA,IAAA,WACA,OAAA,KAAA,eAAA,iBAKA,EAAA,UAAA;;AC1zBA,aAEA,OAAA,QAAA,EAEA,IAAA,EAAA,QAAA,oBAGA,EAAA,QAAA,gBAMA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,gBACA,EAAA,cAAA,EAEA,IAAA,EAAA,EAAA,QAEA,IAAA,EACA,OAAA,KAAA,KAAA,QAAA,IAAA,MAAA,yCAGA,EAAA,WAAA,KACA,EAAA,QAAA,KAEA,MAAA,GACA,KAAA,KAAA,GAEA,EAAA,GAEA,IAAA,EAAA,KAAA,eACA,EAAA,SAAA,GACA,EAAA,cAAA,EAAA,OAAA,EAAA,gBACA,KAAA,MAAA,EAAA,eAIA,SAAA,EAAA,GACA,KAAA,gBAAA,GAAA,OAAA,IAAA,EAAA,GAEA,EAAA,KAAA,KAAA,GAEA,KAAA,gBAAA,CACA,eAAA,EAAA,KAAA,MACA,eAAA,EACA,cAAA,EACA,QAAA,KACA,WAAA,KACA,cAAA,MAIA,KAAA,eAAA,cAAA,EAKA,KAAA,eAAA,MAAA,EAEA,IACA,mBAAA,EAAA,YAAA,KAAA,WAAA,EAAA,WAEA,mBAAA,EAAA,QAAA,KAAA,OAAA,EAAA,QAIA,KAAA,GAAA,YAAA,GAGA,SAAA,IACA,IAAA,EAAA,KAEA,mBAAA,KAAA,OACA,KAAA,OAAA,SAAA,EAAA,GACA,EAAA,EAAA,EAAA,KAGA,EAAA,KAAA,KAAA,MA2DA,SAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAAA,OAAA,EAAA,KAAA,QAAA,GAOA,GALA,MAAA,GACA,EAAA,KAAA,GAIA,EAAA,eAAA,OAAA,MAAA,IAAA,MAAA,8CAEA,GAAA,EAAA,gBAAA,aAAA,MAAA,IAAA,MAAA,kDAEA,OAAA,EAAA,KAAA,MA7IA,EAAA,SAAA,QAAA,YAGA,EAAA,SAAA,EAAA,GAuEA,EAAA,UAAA,KAAA,SAAA,EAAA,GAEA,OADA,KAAA,gBAAA,eAAA,EACA,EAAA,UAAA,KAAA,KAAA,KAAA,EAAA,IAaA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GACA,MAAA,IAAA,MAAA,oCAGA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,gBAIA,GAHA,EAAA,QAAA,EACA,EAAA,WAAA,EACA,EAAA,cAAA,GACA,EAAA,aAAA,CACA,IAAA,EAAA,KAAA,gBACA,EAAA,eAAA,EAAA,cAAA,EAAA,OAAA,EAAA,gBAAA,KAAA,MAAA,EAAA,iBAOA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,KAAA,gBAEA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cACA,EAAA,cAAA,EACA,KAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,iBAIA,EAAA,eAAA,GAIA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,IAAA,EAAA,KAEA,EAAA,UAAA,SAAA,KAAA,KAAA,EAAA,SAAA,GACA,EAAA,GACA,EAAA,KAAA;;AC3KA,aAEA,OAAA,QAAA,EAEA,IAAA,EAAA,QAAA,uBAGA,EAAA,QAAA,gBAMA,SAAA,EAAA,GACA,KAAA,gBAAA,GAAA,OAAA,IAAA,EAAA,GAEA,EAAA,KAAA,KAAA,GARA,EAAA,SAAA,QAAA,YAGA,EAAA,SAAA,EAAA,GAQA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GACA,EAAA,KAAA;;AC7CA,QAAA,OAAA,QAAA,QAAA,6BACA,QAAA,OAAA,QACA,QAAA,SAAA,QACA,QAAA,SAAA,QAAA,6BACA,QAAA,OAAA,QAAA,2BACA,QAAA,UAAA,QAAA,8BACA,QAAA,YAAA,QAAA;;;AC2gCA,IAAA,EAAA,QAAA,UAAA,OAjhCA,OAAA,QAAA,EAEA,IAAA,EAAA,QAAA,QAAA,CAAA,eACA,EAAA,QAAA,mBACA,EAAA,QAAA,YACA,EAAA,QAAA,eACA,EAAA,QAAA,mBAEA,EAAA,MACA,EAAA,IACA,EAAA,IASA,SAAA,EAAA,GACA,IAAA,EAAA,KACA,KAAA,aAAA,GAAA,OAAA,IAAA,EAAA,GA2CA,GAzCA,EAAA,IAAA,EAAA,GAAA,SAAA,OAAA,MAAA,EAAA,GACA,EAAA,OAAA,cAAA,GAEA,EAAA,OAAA,OAAA,CACA,eAAA,GACA,GAEA,EAAA,OAAA,KAAA,EAAA,GAEA,EAAA,YAAA,EAAA,UACA,EAAA,aAAA,EAAA,IAAA,SAAA,OACA,KAGA,EAAA,YAAA,oBAAA,UAAA,OAAA,wBAEA,EAAA,UAAA,EAAA,YAAA,EACA,EAAA,cAAA,EAAA,eAAA,EAAA,cACA,EAAA,OAAA,EAAA,QAAA,EAAA,OACA,EAAA,YAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,aACA,EAAA,iBAAA,EAAA,sBAAA,EAAA,kBAAA,IACA,EAAA,kBAAA,EAAA,sBAAA,EAAA,mBAAA,IACA,EAAA,aAAA,EAAA,cAAA,SAAA,GAAA,OAAA,GACA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,IACA,EAAA,aAAA,IAAA,EAAA,SAAA,EAAA,QACA,EAAA,sBAAA,IAAA,EAAA,kBAAA,EAAA,iBACA,EAAA,mBAAA,EAAA,oBAAA,EAEA,EAAA,WAAA,EACA,EAAA,WAAA,EAEA,EAAA,mBAAA,EACA,EAAA,kBAAA,EACA,EAAA,gBAAA,EACA,EAAA,kBAAA,EACA,EAAA,eAAA,EAEA,EAAA,MAAA,EAAA,MAAA,iBAAA,EAAA,KACA,EAAA,KACA,KAEA,EAAA,MACA,KAAA,oBAAA,OACA,EAAA,oEAAA,sBAEA,EAAA,6CAAA,sBAIA,EAAA,UAAA,EACA,EAAA,eAAA,EACA,EAAA,cAAA,EACA,EAAA,kBAAA,KACA,EAAA,SAAA,KACA,EAAA,mBAAA,GAEA,EAAA,gBAAA,EAAA,UACA,EAAA,qBAAA,EACA,EAAA,oBAAA,EACA,EAAA,uBAAA,GACA,EAAA,WAAA,IAAA,QACA,EAAA,cAAA,EACA,EAAA,iBAAA,KAEA,EAAA,cAAA,GACA,EAAA,eAAA,GAEA,EAAA,OAAA,KACA,EAAA,IAAA,KACA,EAAA,UAAA,KAEA,EAAA,IAAA,IAAA,EAAA,MAAA,kBAAA,EAAA,OAAA,EAAA,cACA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,iBACA,EAAA,EAAA,MAAA,kBAAA,EAAA,KAKA,EAAA,qBAAA,iBAAA,EAAA,IAAA,kBAEA,EAAA,IAAA,2BAAA,WACA,EAAA,qBAEA,EAAA,IAAA,0BAAA,WACA,EAAA,qBAEA,EAAA,IAAA,uBAAA,WACA,EAAA,2BAEA,EAAA,IAAA,eAAA,SAAA,GACA,EAAA,gBAAA,IASA,EAAA,UACA,EAAA,WAAA,CACA,QAAA,EAAA,IAAA,kBAAA,EAAA,YAAA,EAAA,iBAGA,EAAA,IAAA,cAAA,SAAA,GACA,EAAA,WAAA,IAIA,aAAA,EAAA,MACA,EAAA,SACA,EAAA,QAAA,QAAA,SAAA,GACA,EAAA,UAAA,KAGA,EAAA,IAAA,QAAA,SAAA,GACA,EAAA,SAAA,KAIA,EAAA,WACA,EAAA,oBAGA,EAAA,eAAA,WACA,EAAA,aAEA,EAAA,KAAA,SAAA,EAAA,gBAw1BA,SAAA,EAAA,EAAA,GACA,EAAA,YAAA,SAAA,GACA,OAAA,IAAA,QAAA,CAAA,EAAA,KACA,EAAA,UAAA,YAAA,KAAA,KAAA,EAAA,EAAA,MAGA,EAAA,aAAA,SAAA,GACA,OAAA,IAAA,QAAA,CAAA,EAAA,KACA,EAAA,UAAA,aAAA,KAAA,KAAA,EAAA,EAAA,MAGA,EAAA,oBAAA,SAAA,GACA,OAAA,IAAA,QAAA,CAAA,EAAA,KACA,EAAA,UAAA,oBAAA,KAAA,KAAA,EAAA,EAAA,MAGA,EAAA,qBAAA,SAAA,GACA,OAAA,IAAA,QAAA,CAAA,EAAA,KACA,EAAA,UAAA,qBAAA,KAAA,KAAA,EAAA,EAAA,MAMA,SAAA,EAAA,GACA,OAAA,EAAA,QAAA,6BAAA,IAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,IAAA,MAAA,GAEA,OADA,EAAA,KAAA,EACA,EAGA,SAAA,KApgCA,EAAA,EAAA,EAAA,QA6IA,EAAA,iBAAA,IAOA,EAAA,OAAA,CACA,WAAA,CACA,CACA,KAAA,gCAEA,CACA,KAAA,oDAIA,EAAA,YAAA,GACA,EAAA,cAAA,GAEA,OAAA,eAAA,EAAA,UAAA,aAAA,CACA,IAAA,WAEA,OADA,KACA,UADA,KACA,SAAA,gBAAA,KAIA,EAAA,UAAA,QAAA,WAEA,MAAA,CAAA,KADA,KACA,UAAA,OAAA,OAAA,QADA,KACA,eAGA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,KACA,GAAA,EAAA,UAAA,MAAA,EAAA,wCAAA,iBACA,GAAA,iBAAA,EACA,IACA,EAAA,KAAA,MAAA,GACA,MAAA,GACA,EAAA,GAGA,EAAA,OAAA,YAEA,EAAA,aAAA,EAAA,YACA,EAAA,OAAA,8BACA,EAAA,qBAEA,EAAA,YACA,EAAA,IAAA,mBAAA,EAAA,IAAA,kBAAA,KAAA,EAAA,iBAAA,EAAA,WACA,EAAA,mBAAA,KAAA,EAAA,YAEA,EAAA,KACA,EAAA,IAAA,qBAAA,IAAA,EAAA,MAAA,sBAAA,IAAA,KAAA,WACA,EAAA,YAEA,EAAA,mBAAA,QAAA,SAAA,GACA,EAAA,iBAAA,KAEA,EAAA,mBAAA,GAEA,UAAA,EAAA,IAAA,kBAAA,MAAA,EAAA,mBACA,MAAA,SAAA,GAAA,EAAA,QAAA,EAAA,EAAA,iCAEA,EAAA,KAAA,EAAA,WAAA,EAAA,aACA,EAAA,QAAA,EAAA,2CAAA,mBAIA,EAAA,UAAA,iBAAA,SAAA,GACA,IAAA,EAAA,KACA,IACA,EAAA,IAAA,gBACA,IAAA,EAAA,MAAA,gBAAA,GACA,EACA,SAAA,GAAA,EAAA,QAAA,EAAA,EAAA,4BAEA,MAAA,GACA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,4BAQA,EAAA,UAAA,KAAA,SAAA,GACA,KACA,SAAA,KAAA,IAOA,EAAA,UAAA,UAAA,SAAA,GACA,IAAA,EAAA,KAEA,EAAA,OAAA,eAEA,EAAA,YAAA,QAAA,SAAA,GACA,EAAA,SAAA,EAAA,MASA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,KAEA,OAAA,cAEA,IAAA,EAJA,KAIA,IAAA,SAAA,EAAA,GACA,EALA,KAKA,WAAA,IAAA,IAAA,IAAA,QACA,EAAA,IAAA,EAAA,GANA,KAOA,WAAA,IAAA,EAAA,GAPA,KAQA,qBASA,EAAA,UAAA,aAAA,eAAA,EAAA,EAAA,GACA,KAEA,OAAA,kBAEA,IAAA,EAJA,KAIA,WAAA,IAAA,GACA,EAAA,EAAA,EAAA,IAAA,GAAA,KACA,GANA,KAOA,QAAA,IAAA,MAAA,+CAEA,GATA,KASA,WAAA,IAAA,EAAA,GAEA,MAAA,EAAA,mBACA,EAAA,aAAA,GAZA,KAcA,QAAA,EAAA,gDAAA,kCASA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,KAEA,OAAA,kBAEA,IAAA,EAJA,KAIA,WAAA,IAAA,GACA,EAAA,EAAA,EAAA,IAAA,GAAA,KACA,GANA,KAOA,QAAA,IAAA,MAAA,8CAEA,IATA,KAUA,IAAA,YAAA,GACA,MAAA,GACA,wBAAA,EAAA,KAZA,KAaA,uBAAA,KAAA,GAbA,KAeA,QAAA,KASA,EAAA,UAAA,aAAA,SAAA,GACA,IAAA,EAAA,KAEA,EAAA,OAAA,mBAEA,EAAA,YAAA,QAAA,SAAA,GACA,EAAA,YAAA,EAAA,MAIA,EAAA,UAAA,kBAAA,WACA,IAAA,EAAA,KAEA,EAAA,OAAA,qBACA,EAAA,sBACA,EAAA,qBAAA,EACA,WAAA,WACA,EAAA,qBAAA,EACA,EAAA,OAAA,gCACA,EAAA,aACA,KAGA,EAAA,UAAA,UAAA,WACA,KAEA,UAFA,KAGA,gBAHA,KAIA,oBAAA,EAJA,KAKA,OAAA,mCALA,KAOA,OAAA,qBAPA,KAQA,gBARA,KAWA,iBAXA,KAYA,OAAA,yCAZA,KAaA,KAAA,SAAA,CACA,aAAA,KAdA,KAkBA,gBAAA,GAMA,EAAA,UAAA,QAAA,SAAA,GACA,KACA,SAAA,EAAA,eAGA,EAAA,UAAA,SAAA,SAAA,EAAA,GAEA,IADA,KACA,UAAA,CA4BA,GA7BA,KAGA,OAAA,sBAAA,IAAA,EAAA,SAAA,IAHA,KAKA,SALA,KAKA,UAAA,EALA,KAOA,eAAA,OAPA,KAOA,KAAA,MAPA,KAQA,eAAA,UARA,KAQA,MARA,KAUA,WAAA,EAVA,KAWA,WAAA,EAXA,KAYA,UAAA,EAZA,KAaA,eAAA,EAbA,KAcA,cAAA,KAdA,KAeA,eAAA,KAfA,KAgBA,WAAA,KAEA,cAlBA,KAkBA,kBAlBA,KAmBA,iBAAA,KAEA,cArBA,KAqBA,WArBA,KAsBA,UAAA,KAtBA,KAuBA,OAAA,KAvBA,KAwBA,IAAA,KAxBA,KA0BA,gBA1BA,KA0BA,eAAA,SA1BA,KA0BA,gBA1BA,KA2BA,eAAA,KA3BA,KA6BA,SAAA,CACA,IA9BA,KA+BA,SAAA,QACA,MAAA,IAhCA,KAkCA,SAAA,UAAA,KAlCA,KAmCA,SAAA,OAAA,KAnCA,KAoCA,SAAA,QAAA,KApCA,KAqCA,SAAA,QAAA,KAEA,GAvCA,KAuCA,IAAA,CACA,IAxCA,KAyCA,IAAA,QACA,MAAA,IA1CA,KA4CA,IAAA,2BAAA,KA5CA,KA6CA,IAAA,0BAAA,KA7CA,KA8CA,IAAA,uBAAA,KA9CA,KA+CA,IAAA,eAAA,KACA,aAhDA,KAgDA,MAhDA,KAiDA,IAAA,QAAA,MAjDA,KAmDA,IAAA,cAAA,KAnDA,KAqDA,IAAA,KArDA,KAsDA,SAAA,KAEA,GAxDA,KAwDA,KAAA,QAAA,GAxDA,KAyDA,KAAA,SACA,MAGA,EAAA,UAAA,WAAA,SAAA,GACA,IAAA,EAAA,KACA,IAAA,EAAA,QAIA,OAAA,EAAA,QAAA,EAAA,mDAAA,qBAGA,EAAA,SAAA,EAAA,QACA,EAAA,SAAA,WAAA,cAEA,iBAAA,EAAA,SAAA,6BACA,EAAA,SAAA,2BAAA,GAGA,EAAA,YAAA,EAAA,SAAA,MAEA,EAAA,SAAA,UAAA,SAAA,GACA,EAAA,kBAAA,IAEA,EAAA,SAAA,oBAAA,WACA,EAAA,+BAEA,EAAA,SAAA,OAAA,WACA,EAAA,kBAEA,EAAA,SAAA,QAAA,WACA,EAAA,mBAEA,EAAA,SAAA,QAAA,SAAA,GACA,EAAA,QAAA,EAAA,EAAA,sBAKA,IAAA,GAAA,EACA,EAAA,iBAAA,YAAA,WACA,EAAA,UAAA,YAAA,EAAA,SAAA,YACA,GAAA,EAAA,kBACA,GAAA,GAEA,GAAA,GAEA,IAGA,EAAA,UAAA,MAAA,aAEA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GAEA,GADA,KACA,UAAA,OAAA,EAAA,EAAA,uCAAA,qBAEA,GAHA,KAGA,UAAA,CACA,IAJA,KAKA,KAAA,GACA,MAAA,GACA,OAPA,KAOA,QAAA,EAAA,EAAA,qBAPA,KASA,SAAA,eAAA,GATA,KAUA,OAAA,wCAVA,KAUA,SAAA,gBAVA,KAWA,IAAA,GAEA,EAAA,WAbA,KAgBA,OAAA,wBAhBA,KAiBA,OAAA,EAjBA,KAkBA,IAAA,GAMA,EAAA,UAAA,UAAA,WACA,IAAA,EAAA,KAWA,SAAA,IACA,WAAA,WACA,EAAA,WACA,KAbA,EAAA,YAEA,EAAA,UACA,IAEA,EAAA,KAAA,UAAA,KAYA,EAAA,UAAA,yBAAA,WACA,EAAA,+BACA,IAAA,EAAA,KACA,EAAA,WACA,EAAA,oBACA,EAAA,kBAAA,WAAA,WACA,EAAA,eACA,EAAA,cAAA,EACA,EAAA,KAAA,cACA,EAAA,KAAA,kBAEA,KAAA,sBAGA,EAAA,UAAA,aAAA,WACA,IAAA,EAAA,KACA,EAAA,WAEA,EAAA,IAAA,YAAA,EAAA,kBAAA,KAAA,SAAA,GAiBA,SAAA,IACA,IAAA,EAAA,UAAA,CACA,IAAA,EAAA,EAAA,IAAA,kBAAA,EACA,EAAA,OAAA,UACA,EAAA,KAAA,SAAA,CACA,KAAA,EAAA,KACA,IAAA,EAAA,OAtBA,EAAA,YACA,EAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,MACA,EAAA,IAAA,EAAA,aAAA,EAAA,KACA,EAAA,IAAA,oBAAA,GAAA,KAEA,WAEA,GADA,EAAA,OAAA,uBACA,EAAA,UAAA,OACA,EAAA,SAAA,EAAA,aAAA,IACA,EAAA,KAAA,eAAA,KANA,MASA,SAAA,GACA,EAAA,QAAA,EAAA,EAAA,mCAYA,MAAA,SAAA,GAAA,EAAA,QAAA,EAAA,EAAA,wBAGA,EAAA,UAAA,cAAA,WACA,IAAA,EAAA,KACA,EAAA,WAEA,EAAA,IAAA,aAAA,EAAA,mBAAA,KAAA,SAAA,GAgBA,SAAA,IACA,IAAA,EAAA,UAAA,CACA,IAAA,EAAA,EAAA,IAAA,kBAAA,EACA,EAAA,OAAA,UACA,EAAA,KAAA,SAAA,CACA,KAAA,EAAA,KACA,IAAA,EAAA,OArBA,EAAA,YACA,EAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,MACA,EAAA,IAAA,EAAA,aAAA,EAAA,KACA,EAAA,IAAA,oBAAA,GAAA,KAEA,WACA,GAAA,EAAA,UAAA,OACA,EAAA,SAAA,EAAA,aAAA,IACA,EAAA,KAAA,eAAA,KALA,MAQA,SAAA,GACA,EAAA,QAAA,EAAA,EAAA,mCAYA,MAAA,SAAA,GAAA,EAAA,QAAA,EAAA,EAAA,yBAGA,EAAA,UAAA,kBAAA,WAEA,IADA,KACA,UAAA,CACA,IAAA,EAFA,KAEA,IAAA,mBACA,EAHA,KAGA,IAAA,kBAHA,KAKA,OACA,kDACA,EACA,GARA,KAUA,KAAA,iBAAA,EAAA,GAEA,cAAA,GAAA,cAAA,IAZA,KAaA,UAAA,EAbA,KAcA,eAEA,WAAA,GAhBA,KAiBA,QAAA,EAAA,yBAAA,+BAEA,WAAA,GAnBA,KAoBA,QAAA,IAAA,MAAA,6BAIA,EAAA,UAAA,SAAA,SAAA,GACA,IAAA,EAAA,KAGA,IAAA,EAAA,IAAA,SAAA,OACA,EAAA,IAAA,WAAA,KAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,QAAA,SAAA,GACA,EAAA,KAAA,KAEA,EAAA,KAAA,IACA,SAAA,GAAA,EAAA,KAGA,EAAA,qBACA,EAAA,IAAA,SAAA,KAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,QAAA,SAAA,GACA,EAAA,KAAA,KAEA,EAAA,KAAA,IACA,SAAA,GAAA,EAAA,KAGA,EAAA,IAAA,SAAA,OAAA,EACA,EAAA,IAAA,SAAA,SAAA,GAEA,IAAA,EAAA,UAAA,CAEA,IAAA,EAAA,GACA,EAAA,SAAA,QAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,QAAA,QAAA,SAAA,GACA,EAAA,GAAA,EAAA,KAAA,KAEA,EAAA,GAAA,EAAA,GACA,EAAA,KAAA,EAAA,KACA,EAAA,UAAA,EAAA,UACA,EAAA,KAAA,KAEA,EAAA,KAAA,KACA,SAAA,GAAA,EAAA,KAKA,EAAA,KAAA,KAIA,EAAA,UAAA,YAAA,WACA,IAAA,EAAA,KACA,EAAA,OAAA,8BAAA,EAAA,SAAA,EAAA,gBACA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,gBAEA,EAAA,aAAA,EAGA,SAAA,IACA,EAAA,WAEA,EAAA,SAAA,SAAA,EAAA,GACA,IAAA,EAAA,UAAA,CAGA,IAAA,EAAA,IAEA,IAAA,EAAA,GACA,EAAA,GACA,EAAA,GACA,GAAA,EA6EA,GA3EA,EAAA,QAAA,SAAA,GAGA,oBAAA,EAAA,MAAA,qBAAA,EAAA,OACA,EAAA,EAAA,IAAA,GAEA,mBAAA,EAAA,MAAA,oBAAA,EAAA,OACA,EAAA,EAAA,IAAA,GAEA,kBAAA,EAAA,MAAA,mBAAA,EAAA,OACA,EAAA,EAAA,IAAA,KAIA,EAAA,QAAA,SAAA,GAEA,cAAA,EAAA,MAAA,EAAA,yBACA,EAAA,EAAA,EAAA,2BAKA,sBAAA,EAAA,MAAA,SAAA,EAAA,uBACA,kBAAA,EAAA,MAAA,mBAAA,EAAA,OAAA,EAAA,WAEA,EAAA,KAkDA,GAAA,OAAA,KAAA,GAAA,SAAA,OAAA,KAAA,GAAA,OAAA,CAQA,GAJA,EAAA,aAAA,EACA,EAAA,WAAA,EAGA,EAAA,OAAA,CACA,IACA,EAAA,KAAA,EAAA,QACA,MAAA,GACA,OAAA,EAAA,QAAA,EAAA,EAAA,qBAEA,EAAA,OAAA,KACA,EAAA,OAAA,0CAEA,IAAA,EAAA,EAAA,IACA,EAAA,IAAA,KACA,EAAA,MAKA,iBAAA,EAAA,SAAA,6BACA,EAAA,UAAA,YAAA,WAAA,EAAA,eAAA,KACA,EAAA,UAAA,OAAA,EAAA,UAAA,SAGA,EAAA,OAAA,WACA,EAAA,KAAA,gBA7BA,WAAA,EAAA,KA/CA,SAAA,EAAA,GACA,GAAA,EAEA,IAAA,EAAA,EAAA,EAAA,kBAEA,GAAA,EAAA,IAEA,EAAA,aAAA,EAAA,GACA,EAAA,UAAA,OAAA,EAAA,OACA,GAAA,EAAA,WAEA,EAAA,aAAA,EAAA,UACA,EAAA,UAAA,OAAA,EAAA,aACA,iBAAA,EAAA,mBAEA,EAAA,EAAA,iBAAA,MAAA,KACA,EAAA,aAAA,EAAA,GACA,EAAA,UAAA,OAAA,EAAA,KAGA,IAAA,EAAA,EAAA,EAAA,mBAEA,GAAA,EAAA,IAEA,EAAA,cAAA,EAAA,GACA,EAAA,WAAA,OAAA,EAAA,OACA,GAAA,EAAA,WAEA,EAAA,cAAA,EAAA,UACA,EAAA,WAAA,OAAA,EAAA,aACA,iBAAA,EAAA,oBAEA,EAAA,EAAA,kBAAA,MAAA,KACA,EAAA,cAAA,EAAA,GACA,EAAA,WAAA,OAAA,EAAA,KAEA,EAAA,aAAA,OAEA,EAAA,OACA,qCACA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAuCA,KAGA,EAAA,UAAA,YAAA,YACA,KACA,MADA,KACA,UADA,KACA,SAAA,eAAA,GADA,KAIA,+BAGA,EAAA,UAAA,wBAAA,WACA,IAAA,EAAA,KACA,EAAA,YAEA,WAAA,EAAA,IAAA,gBAAA,EAAA,eACA,EAAA,gBAAA,EAGA,EAAA,OAAA,wBAAA,EAAA,wBACA,EAAA,uBAAA,QAAA,SAAA,GACA,EAAA,IAAA,YAAA,GACA,EAAA,oBAAA,IAEA,EAAA,uBAAA,GAEA,EAAA,qBACA,EAAA,OAAA,8BACA,EAAA,oBAAA,EACA,EAAA,qBAGA,EAAA,OAAA,aACA,EAAA,KAAA,cAEA,EAAA,cAAA,EAEA,EAAA,OAAA,0BAAA,EAAA,IAAA,gBACA,EAAA,KAAA,uBAAA,EAAA,IAAA,kBAGA,EAAA,UAAA,gBAAA,SAAA,GACA,KACA,YACA,EAAA,WAFA,KAEA,QAFA,KAGA,KAAA,SAAA,CACA,UAAA,CACA,UAAA,EAAA,UAAA,UACA,cAAA,EAAA,UAAA,cACA,OAAA,EAAA,UAAA,UAGA,EAAA,WAVA,KAUA,eAVA,KAWA,cAAA,EAXA,KAYA,KAAA,iBAGA,EAAA,WAfA,KAgBA,6BAIA,EAAA,UAAA,kBAAA,SAAA,GAEA,IADA,KACA,UAAA,CACA,IAAA,EAAA,EAAA,KACA,aAAA,cAAA,EAAA,EAAA,KAAA,IAHA,KAIA,KAAA,KAGA,EAAA,UAAA,4BAAA,WAEA,IADA,KACA,WADA,KACA,IAAA,CADA,KAEA,OAAA,yCAFA,KAEA,SAAA,gBACA,IAAA,EAHA,KAGA,IAHA,KAIA,IAAA,KACA,EAAA,QAGA,EAAA,UAAA,eAAA,WACA,KACA,WADA,KACA,YADA,KAEA,OAAA,mBAFA,KAGA,eAAA,EAHA,KAIA,gBAGA,EAAA,UAAA,gBAAA,WACA,KACA,YADA,KAEA,OAAA,oBAFA,KAGA,YAGA,EAAA,UAAA,SAAA,SAAA,GACA,IAAA,EAAA,KACA,EAAA,WAEA,EAAA,QAAA,QAAA,SAAA,GACA,EAAA,OAAA,YACA,EAAA,KAAA,QAAA,EAAA,MAAA,GAEA,EAAA,cAAA,KAAA,CACA,MAAA,EAAA,MACA,OAAA,IAGA,EAAA,eAAA,KAAA,SAAA,GACA,OAAA,EAAA,KAAA,EAAA,OAGA,EAAA,eAAA,KAAA,GACA,WAAA,WACA,EAAA,KAAA,SAAA,IACA,OAIA,EAAA,UAAA,eAAA,SAAA,GACA,KACA,UADA,KAEA,iBAFA,KAEA,sBAAA,GAFA,KAIA,kBAJA,KAIA,sBAAA,IAIA,EAAA,UAAA,OAAA,WACA,IACA,EAAA,GAAA,MAAA,KAAA,WACA,EAAA,GAAA,IAFA,KAEA,IAAA,KAAA,EAAA,GACA,EAAA,MAAA,KAAA,IAKA,EAAA,UAAA,sBAAA,SAAA,GAGA,GAAA,IAAA,OAAA,KAAA,GAAA,OACA,OAAA,EAGA,IAAA,EAAA,WAAA,EAAA,YANA,KAMA,YAAA,CAIA,IAAA,EAAA,OAAA,OAAA,GAAA,EAAA,SAAA,EAAA,WAaA,YAVA,IAAA,EAAA,sBACA,EAAA,oBAAA,EAAA,2BACA,EAAA,0BAGA,IAAA,EAAA,sBACA,EAAA,oBAAA,EAAA,2BACA,EAAA,qBAGA,EACA,OAAA,EAAA,WAAA,EAAA,WAxBA,KAwBA,YAmBA,QAfA,IAAA,EAAA,sBACA,EAAA,oBAAA,EAAA,2BACA,EAAA,0BAGA,IAAA,EAAA,sBACA,EAAA,oBAAA,EAAA,2BACA,EAAA,qBAGA,CACA,UAAA;;AC/9BA,IAAA,EAAA,0OAEA,EAAA,CACA,SAAA,WAAA,YAAA,WAAA,OAAA,WAAA,OAAA,OAAA,WAAA,OAAA,YAAA,OAAA,QAAA,UAGA,OAAA,QAAA,SAAA,GACA,IAAA,EAAA,EACA,EAAA,EAAA,QAAA,KACA,EAAA,EAAA,QAAA,MAEA,GAAA,IAAA,GAAA,IACA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,UAAA,EAAA,GAAA,QAAA,KAAA,KAAA,EAAA,UAAA,EAAA,EAAA,SAOA,IAJA,IAAA,EAAA,EAAA,KAAA,GAAA,IACA,EAAA,GACA,EAAA,GAEA,KACA,EAAA,EAAA,IAAA,EAAA,IAAA,GAUA,OAPA,GAAA,IAAA,GAAA,IACA,EAAA,OAAA,EACA,EAAA,KAAA,EAAA,KAAA,UAAA,EAAA,EAAA,KAAA,OAAA,GAAA,QAAA,KAAA,KACA,EAAA,UAAA,EAAA,UAAA,QAAA,IAAA,IAAA,QAAA,IAAA,IAAA,QAAA,KAAA,KACA,EAAA,SAAA,GAGA;;ACjCA,IAAA,EAAA,IACA,EAAA,GAAA,EACA,EAAA,GAAA,EACA,EAAA,GAAA,EACA,EAAA,OAAA,EAsCA,SAAA,EAAA,GAEA,MADA,EAAA,OAAA,IACA,OAAA,KAAA,CAGA,IAAA,EAAA,wHAAA,KACA,GAEA,GAAA,EAAA,CAGA,IAAA,EAAA,WAAA,EAAA,IAEA,QADA,EAAA,IAAA,MAAA,eAEA,IAAA,QACA,IAAA,OACA,IAAA,MACA,IAAA,KACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,OACA,IAAA,MACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,QACA,IAAA,OACA,IAAA,MACA,IAAA,KACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,UACA,IAAA,SACA,IAAA,OACA,IAAA,MACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,UACA,IAAA,SACA,IAAA,OACA,IAAA,MACA,IAAA,IACA,OAAA,EAAA,EACA,IAAA,eACA,IAAA,cACA,IAAA,QACA,IAAA,OACA,IAAA,KACA,OAAA,EACA,QACA,UAYA,SAAA,EAAA,GACA,OAAA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,GAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAEA,EAAA,KAWA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,QACA,EAAA,EAAA,EAAA,SACA,EAAA,EAAA,EAAA,WACA,EAAA,EAAA,EAAA,WACA,EAAA,MAOA,SAAA,EAAA,EAAA,EAAA,GACA,KAAA,EAAA,GAGA,OAAA,EAAA,IAAA,EACA,KAAA,MAAA,EAAA,GAAA,IAAA,EAEA,KAAA,KAAA,EAAA,GAAA,IAAA,EAAA,IA9HA,OAAA,QAAA,SAAA,EAAA,GACA,EAAA,GAAA,GACA,IAAA,SAAA,EACA,GAAA,WAAA,GAAA,EAAA,OAAA,EACA,OAAA,EAAA,GACA,GAAA,WAAA,IAAA,IAAA,MAAA,GACA,OAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAEA,MAAA,IAAA,MACA,wDACA,KAAA,UAAA;;ACQA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAEA,IAAA,KAAA,EACA,GAAA,GAAA,GAAA,EAAA,EAAA,WAAA,GACA,GAAA,EAGA,OAAA,QAAA,OAAA,KAAA,IAAA,GAAA,QAAA,OAAA,QAWA,SAAA,EAAA,GAEA,IAAA,EAEA,SAAA,IAEA,GAAA,EAAA,QAAA,CAEA,IAAA,EAAA,EAGA,GAAA,IAAA,KACA,EAAA,GAAA,GAAA,GACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,EAIA,IADA,IAAA,EAAA,IAAA,MAAA,UAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,UAAA,GAGA,EAAA,GAAA,QAAA,OAAA,EAAA,IAEA,iBAAA,EAAA,IAEA,EAAA,QAAA,MAIA,IAAA,EAAA,EACA,EAAA,GAAA,EAAA,GAAA,QAAA,gBAAA,SAAA,EAAA,GAEA,GAAA,OAAA,EAAA,OAAA,EACA,IACA,IAAA,EAAA,QAAA,WAAA,GACA,GAAA,mBAAA,EAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAGA,EAAA,OAAA,EAAA,GACA,IAEA,OAAA,IAIA,QAAA,WAAA,KAAA,EAAA,IAEA,EAAA,KAAA,QAAA,KAAA,QAAA,IAAA,KAAA,UACA,MAAA,EAAA,IAgBA,OAbA,EAAA,UAAA,EACA,EAAA,QAAA,QAAA,QAAA,GACA,EAAA,UAAA,QAAA,YACA,EAAA,MAAA,EAAA,GACA,EAAA,QAAA,EAGA,mBAAA,QAAA,MACA,QAAA,KAAA,GAGA,QAAA,UAAA,KAAA,GAEA,EAGA,SAAA,IACA,IAAA,EAAA,QAAA,UAAA,QAAA,MACA,OAAA,IAAA,IACA,QAAA,UAAA,OAAA,EAAA,IACA,GAcA,SAAA,EAAA,GAMA,IAAA,EALA,QAAA,KAAA,GAEA,QAAA,MAAA,GACA,QAAA,MAAA,GAGA,IAAA,GAAA,iBAAA,EAAA,EAAA,IAAA,MAAA,UACA,EAAA,EAAA,OAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,KAEA,OADA,EAAA,EAAA,GAAA,QAAA,MAAA,QACA,GACA,QAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAAA,GAAA,MAEA,QAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAIA,IAAA,EAAA,EAAA,EAAA,QAAA,UAAA,OAAA,IAAA,CACA,IAAA,EAAA,QAAA,UAAA,GACA,EAAA,QAAA,QAAA,QAAA,EAAA,YAUA,SAAA,IACA,QAAA,OAAA,IAWA,SAAA,EAAA,GACA,GAAA,MAAA,EAAA,EAAA,OAAA,GACA,OAAA,EAEA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,QAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,QAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAGA,IAAA,EAAA,EAAA,EAAA,QAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,QAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAGA,OAAA,EAWA,SAAA,EAAA,GACA,OAAA,aAAA,MAAA,EAAA,OAAA,EAAA,QACA,EAvNA,QAAA,OAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EACA,QAAA,OAAA,EACA,QAAA,QAAA,EACA,QAAA,OAAA,EACA,QAAA,QAAA,EACA,QAAA,SAAA,QAAA,MAKA,QAAA,UAAA,GAMA,QAAA,MAAA,GACA,QAAA,MAAA,GAQA,QAAA,WAAA;;;ACiKC,IAAA,EAAA,QAAA,WAvJD,SAASF,IAIH,QAAkB,oBAAXC,SAA0BA,OAAO3D,SAAmC,aAAxB2D,OAAO3D,QAAQ4D,QAK7C,oBAAdE,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUC,cAAcC,MAAM,4BAM3E,oBAAbC,UAA4BA,SAASC,iBAAmBD,SAASC,gBAAgBC,OAASF,SAASC,gBAAgBC,MAAMC,kBAEnH,oBAAXV,QAA0BA,OAAOW,UAAYX,OAAOW,QAAQC,SAAYZ,OAAOW,QAAQE,WAAab,OAAOW,QAAQG,QAGrG,oBAAdX,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,mBAAqBS,SAASC,OAAOC,GAAI,KAAO,IAE9H,oBAAdd,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,uBAsBxG,SAASY,EAAWhD,GACd6B,IAAAA,EAAY,KAAKA,UASjB,GAPJ7B,EAAK,IAAM6B,EAAY,KAAO,IAC1B,KAAKoB,WACJpB,EAAY,MAAQ,KACrB7B,EAAK,IACJ6B,EAAY,MAAQ,KACrB,IAAMxD,QAAQ6E,SAAS,KAAKC,MAE3BtB,EAAD,CAEAuB,IAAAA,EAAI,UAAY,KAAKC,MACzBrD,EAAKsD,OAAO,EAAG,EAAGF,EAAG,kBAKjBG,IAAAA,EAAQ,EACRC,EAAQ,EACZxD,EAAK,GAAGyD,QAAQ,cAAe,SAASrB,GAClC,OAASA,IACbmB,IACI,OAASnB,IAGXoB,EAAQD,MAIZvD,EAAKsD,OAAOE,EAAO,EAAGJ,IAUxB,SAASM,IAGA,MAAA,iBAAoBjB,SACtBA,QAAQiB,KACRqD,SAAS1G,UAAUC,MAAMzB,KAAK4D,QAAQiB,IAAKjB,QAASvC,WAU3D,SAASyD,EAAKC,GACR,IACE,MAAQA,EACVvF,QAAQwF,QAAQE,WAAW,SAE3B1F,QAAQwF,QAAQmD,MAAQpD,EAE1B,MAAMhF,KAUV,SAASqF,IACHC,IAAAA,EACA,IACFA,EAAI7F,QAAQwF,QAAQmD,MACpB,MAAMpI,IAODsF,OAJFA,QAAwB,IAAZ/F,GAA2B,QAASA,IACnD+F,OAAA,GAGKA,EAoBT,SAASE,IACH,IACKtC,OAAAA,OAAOuC,aACd,MAAOzF,KA3LXP,QAAUD,OAAOC,QAAUkG,QAAQ,WACnClG,QAAQqF,IAAMA,EACdrF,QAAQ2E,WAAaA,EACrB3E,QAAQsF,KAAOA,EACftF,QAAQ4F,KAAOA,EACf5F,QAAQwD,UAAYA,EACpBxD,QAAQwF,QAAU,oBAAsBoD,aACtB,IAAsBA,OAAOpD,QAC3BoD,OAAOpD,QAAQqD,MACf9C,IAMpB/F,QAAQiG,OAAS,CACf,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,WAwCzDjG,QAAQmG,WAAWC,EAAI,SAASC,GAC1B,IACKC,OAAAA,KAAKC,UAAUF,GACtB,MAAOoB,GACA,MAAA,+BAAiCA,EAAIjB,UAqGhDxG,QAAQ8I,OAAOlD;;AC5Kf,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,QAAA,CAAA,wBAiBA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAGA,EAAA,GAAA,oBAAA,UAAA,SACA,MAAA,IAAA,EAAA,EAAA,SAAA,KAAA,EAAA,MAGA,iBAAA,IACA,MAAA,EAAA,OAAA,KAEA,EADA,MAAA,EAAA,OAAA,GACA,EAAA,SAAA,EAEA,EAAA,KAAA,GAIA,sBAAA,KAAA,KACA,EAAA,uBAAA,GAEA,OADA,IAAA,EACA,EAAA,SAAA,KAAA,EAEA,WAAA,GAKA,EAAA,WAAA,GACA,EAAA,EAAA,IAIA,EAAA,OACA,cAAA,KAAA,EAAA,UACA,EAAA,KAAA,KACA,eAAA,KAAA,EAAA,YACA,EAAA,KAAA,QAIA,EAAA,KAAA,EAAA,MAAA,IAEA,IACA,GADA,IAAA,EAAA,KAAA,QAAA,KACA,IAAA,EAAA,KAAA,IAAA,EAAA,KAOA,OAJA,EAAA,GAAA,EAAA,SAAA,MAAA,EAAA,IAAA,EAAA,KAEA,EAAA,KAAA,EAAA,SAAA,MAAA,GAAA,GAAA,EAAA,OAAA,EAAA,KAAA,GAAA,IAAA,EAAA,MAEA,EA7DA,OAAA,QAAA;;AE8BA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAEA,IAAA,KAAA,EACA,GAAA,GAAA,GAAA,EAAA,EAAA,WAAA,GACA,GAAA,EAGA,OAAA,QAAA,OAAA,KAAA,IAAA,GAAA,QAAA,OAAA,QAWA,SAAA,EAAA,GAEA,IAAA,EAEA,SAAA,IAEA,GAAA,EAAA,QAAA,CAEA,IAAA,EAAA,EAGA,GAAA,IAAA,KACA,EAAA,GAAA,GAAA,GACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,EAIA,IADA,IAAA,EAAA,IAAA,MAAA,UAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,UAAA,GAGA,EAAA,GAAA,QAAA,OAAA,EAAA,IAEA,iBAAA,EAAA,IAEA,EAAA,QAAA,MAIA,IAAA,EAAA,EACA,EAAA,GAAA,EAAA,GAAA,QAAA,gBAAA,SAAA,EAAA,GAEA,GAAA,OAAA,EAAA,OAAA,EACA,IACA,IAAA,EAAA,QAAA,WAAA,GACA,GAAA,mBAAA,EAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAGA,EAAA,OAAA,EAAA,GACA,IAEA,OAAA,IAIA,QAAA,WAAA,KAAA,EAAA,IAEA,EAAA,KAAA,QAAA,KAAA,QAAA,IAAA,KAAA,UACA,MAAA,EAAA,IAgBA,OAbA,EAAA,UAAA,EACA,EAAA,QAAA,QAAA,QAAA,GACA,EAAA,UAAA,QAAA,YACA,EAAA,MAAA,EAAA,GACA,EAAA,QAAA,EAGA,mBAAA,QAAA,MACA,QAAA,KAAA,GAGA,QAAA,UAAA,KAAA,GAEA,EAGA,SAAA,IACA,IAAA,EAAA,QAAA,UAAA,QAAA,MACA,OAAA,IAAA,IACA,QAAA,UAAA,OAAA,EAAA,IACA,GAcA,SAAA,EAAA,GAMA,IAAA,EALA,QAAA,KAAA,GAEA,QAAA,MAAA,GACA,QAAA,MAAA,GAGA,IAAA,GAAA,iBAAA,EAAA,EAAA,IAAA,MAAA,UACA,EAAA,EAAA,OAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,KAEA,OADA,EAAA,EAAA,GAAA,QAAA,MAAA,QACA,GACA,QAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAAA,GAAA,MAEA,QAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAIA,IAAA,EAAA,EAAA,EAAA,QAAA,UAAA,OAAA,IAAA,CACA,IAAA,EAAA,QAAA,UAAA,GACA,EAAA,QAAA,QAAA,QAAA,EAAA,YAUA,SAAA,IACA,QAAA,OAAA,IAWA,SAAA,EAAA,GACA,GAAA,MAAA,EAAA,EAAA,OAAA,GACA,OAAA,EAEA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,QAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,QAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAGA,IAAA,EAAA,EAAA,EAAA,QAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,QAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAGA,OAAA,EAWA,SAAA,EAAA,GACA,OAAA,aAAA,MAAA,EAAA,OAAA,EAAA,QACA,EAvNA,QAAA,OAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EACA,QAAA,OAAA,EACA,QAAA,QAAA,EACA,QAAA,OAAA,EACA,QAAA,QAAA,EACA,QAAA,SAAA,QAAA,MAKA,QAAA,UAAA,GAMA,QAAA,MAAA,GACA,QAAA,MAAA,GAQA,QAAA,WAAA;;;ACiKC,IAAA,EAAA,QAAA,WAvJD,SAASpC,IAIH,QAAkB,oBAAXC,SAA0BA,OAAO3D,SAAmC,aAAxB2D,OAAO3D,QAAQ4D,QAK7C,oBAAdE,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUC,cAAcC,MAAM,4BAM3E,oBAAbC,UAA4BA,SAASC,iBAAmBD,SAASC,gBAAgBC,OAASF,SAASC,gBAAgBC,MAAMC,kBAEnH,oBAAXV,QAA0BA,OAAOW,UAAYX,OAAOW,QAAQC,SAAYZ,OAAOW,QAAQE,WAAab,OAAOW,QAAQG,QAGrG,oBAAdX,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,mBAAqBS,SAASC,OAAOC,GAAI,KAAO,IAE9H,oBAAdd,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,uBAsBxG,SAASY,EAAWhD,GACd6B,IAAAA,EAAY,KAAKA,UASjB,GAPJ7B,EAAK,IAAM6B,EAAY,KAAO,IAC1B,KAAKoB,WACJpB,EAAY,MAAQ,KACrB7B,EAAK,IACJ6B,EAAY,MAAQ,KACrB,IAAMxD,QAAQ6E,SAAS,KAAKC,MAE3BtB,EAAD,CAEAuB,IAAAA,EAAI,UAAY,KAAKC,MACzBrD,EAAKsD,OAAO,EAAG,EAAGF,EAAG,kBAKjBG,IAAAA,EAAQ,EACRC,EAAQ,EACZxD,EAAK,GAAGyD,QAAQ,cAAe,SAASrB,GAClC,OAASA,IACbmB,IACI,OAASnB,IAGXoB,EAAQD,MAIZvD,EAAKsD,OAAOE,EAAO,EAAGJ,IAUxB,SAASM,IAGA,MAAA,iBAAoBjB,SACtBA,QAAQiB,KACRqD,SAAS1G,UAAUC,MAAMzB,KAAK4D,QAAQiB,IAAKjB,QAASvC,WAU3D,SAASyD,EAAKC,GACR,IACE,MAAQA,EACVvF,QAAQwF,QAAQE,WAAW,SAE3B1F,QAAQwF,QAAQmD,MAAQpD,EAE1B,MAAMhF,KAUV,SAASqF,IACHC,IAAAA,EACA,IACFA,EAAI7F,QAAQwF,QAAQmD,MACpB,MAAMpI,IAODsF,OAJFA,QAAwB,IAAZ/F,GAA2B,QAASA,IACnD+F,OAAA,GAGKA,EAoBT,SAASE,IACH,IACKtC,OAAAA,OAAOuC,aACd,MAAOzF,KA3LXP,QAAUD,OAAOC,QAAUkG,QAAQ,WACnClG,QAAQqF,IAAMA,EACdrF,QAAQ2E,WAAaA,EACrB3E,QAAQsF,KAAOA,EACftF,QAAQ4F,KAAOA,EACf5F,QAAQwD,UAAYA,EACpBxD,QAAQwF,QAAU,oBAAsBoD,aACtB,IAAsBA,OAAOpD,QAC3BoD,OAAOpD,QAAQqD,MACf9C,IAMpB/F,QAAQiG,OAAS,CACf,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,WAwCzDjG,QAAQmG,WAAWC,EAAI,SAASC,GAC1B,IACKC,OAAAA,KAAKC,UAAUF,GACtB,MAAOoB,GACA,MAAA,+BAAiCA,EAAIjB,UAqGhDxG,QAAQ8I,OAAOlD;;AClKf,SAAA,EAAA,GACA,GAAA,EAAA,OAAA,EAAA,GAWA,SAAA,EAAA,GACA,IAAA,IAAA,KAAA,EAAA,UACA,EAAA,GAAA,EAAA,UAAA,GAEA,OAAA,EA1BA,oBAAA,SACA,OAAA,QAAA,GAqCA,EAAA,UAAA,GACA,EAAA,UAAA,iBAAA,SAAA,EAAA,GAIA,OAHA,KAAA,WAAA,KAAA,YAAA,IACA,KAAA,WAAA,IAAA,GAAA,KAAA,WAAA,IAAA,IAAA,IACA,KAAA,GACA,MAaA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,SAAA,IACA,KAAA,IAAA,EAAA,GACA,EAAA,MAAA,KAAA,WAKA,OAFA,EAAA,GAAA,EACA,KAAA,GAAA,EAAA,GACA,MAaA,EAAA,UAAA,IACA,EAAA,UAAA,eACA,EAAA,UAAA,mBACA,EAAA,UAAA,oBAAA,SAAA,EAAA,GAIA,GAHA,KAAA,WAAA,KAAA,YAAA,GAGA,GAAA,UAAA,OAEA,OADA,KAAA,WAAA,GACA,KAIA,IAUA,EAVA,EAAA,KAAA,WAAA,IAAA,GACA,IAAA,EAAA,OAAA,KAGA,GAAA,GAAA,UAAA,OAEA,cADA,KAAA,WAAA,IAAA,GACA,KAKA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAEA,IADA,EAAA,EAAA,MACA,GAAA,EAAA,KAAA,EAAA,CACA,EAAA,OAAA,EAAA,GACA,MAGA,OAAA,MAWA,EAAA,UAAA,KAAA,SAAA,GACA,KAAA,WAAA,KAAA,YAAA,GACA,IAAA,EAAA,GAAA,MAAA,KAAA,UAAA,GACA,EAAA,KAAA,WAAA,IAAA,GAEA,GAAA,EAEA,IAAA,IAAA,EAAA,EAAA,GADA,EAAA,EAAA,MAAA,IACA,OAAA,EAAA,IAAA,EACA,EAAA,GAAA,MAAA,KAAA,GAIA,OAAA,MAWA,EAAA,UAAA,UAAA,SAAA,GAEA,OADA,KAAA,WAAA,KAAA,YAAA,GACA,KAAA,WAAA,IAAA,IAAA,IAWA,EAAA,UAAA,aAAA,SAAA,GACA,QAAA,KAAA,UAAA,GAAA;;;AE7IA,IAAA,EAAA,QAAA,UAAA,OAnBA,OAAA,QAAA,EAEA,IAAA,EAAA,mBAAA,GAAA,mBAAA,EAAA,SACA,EAAA,mBAAA,YAEA,EAAA,SAAA,GACA,MAAA,mBAAA,YAAA,OAAA,YAAA,OAAA,GAAA,EAAA,kBAAA,aASA,SAAA,EAAA,GACA,OAAA,GAAA,EAAA,SAAA,IACA,IAAA,aAAA,aAAA,EAAA;;ACZA,IAAA,EAAA,QAAA,WACA,EAAA,QAAA,eACA,EAAA,OAAA,UAAA,SACA,EAAA,mBAAA,MAAA,oBAAA,MAAA,6BAAA,EAAA,KAAA,MACA,EAAA,mBAAA,MAAA,oBAAA,MAAA,6BAAA,EAAA,KAAA,MAqBA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,EAEA,GAAA,EAAA,GAAA,CACA,IAAA,EAAA,CAAA,cAAA,EAAA,IAAA,EAAA,QAEA,OADA,EAAA,KAAA,GACA,EACA,GAAA,EAAA,GAAA,CAEA,IADA,IAAA,EAAA,IAAA,MAAA,EAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAAA,GAEA,OAAA,EACA,GAAA,iBAAA,KAAA,aAAA,MAAA,CACA,EAAA,GACA,IAAA,IAAA,KAAA,EACA,EAAA,GAAA,EAAA,EAAA,GAAA,GAEA,OAAA,EAEA,OAAA,EAkBA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,EAEA,GAAA,GAAA,EAAA,aACA,OAAA,EAAA,EAAA,KACA,GAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAAA,QAEA,GAAA,iBAAA,EACA,IAAA,IAAA,KAAA,EACA,EAAA,GAAA,EAAA,EAAA,GAAA,GAIA,OAAA,EA9DA,QAAA,kBAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,EAAA,KACA,EAAA,EAGA,OAFA,EAAA,KAAA,EAAA,EAAA,GACA,EAAA,YAAA,EAAA,OACA,CAAA,OAAA,EAAA,QAAA,IAmCA,QAAA,kBAAA,SAAA,EAAA,GAGA,OAFA,EAAA,KAAA,EAAA,EAAA,KAAA,GACA,EAAA,iBAAA,EACA,GA+BA,QAAA,YAAA,SAAA,EAAA,GAqCA,IAAA,EAAA,EACA,EAAA,GArCA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,OAAA,EAGA,GAAA,GAAA,aAAA,MACA,GAAA,aAAA,KAAA,CACA,IAGA,IAAA,EAAA,IAAA,WACA,EAAA,OAAA,WACA,EACA,EAAA,GAAA,KAAA,OAGA,EAAA,KAAA,SAIA,GACA,EAAA,IAIA,EAAA,kBAAA,QACA,GAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,GAAA,EAAA,QAEA,GAAA,iBAAA,IAAA,EAAA,GACA,IAAA,IAAA,KAAA,EACA,EAAA,EAAA,GAAA,EAAA,GAOA,CAAA,GACA,GACA,EAAA;;ACrIA,IAAA,EAAA,QAAA,QAAA,CAAA,oBACA,EAAA,QAAA,qBACA,EAAA,QAAA,YACA,EAAA,QAAA,WACA,EAAA,QAAA,eAwGA,SAAA,KAhGA,QAAA,SAAA,EAQA,QAAA,MAAA,CACA,UACA,aACA,QACA,MACA,QACA,eACA,cASA,QAAA,QAAA,EAQA,QAAA,WAAA,EAQA,QAAA,MAAA,EAQA,QAAA,IAAA,EAQA,QAAA,MAAA,EAQA,QAAA,aAAA,EAQA,QAAA,WAAA,EAQA,QAAA,QAAA,EAQA,QAAA,QAAA,EAUA,IAAA,EAAA,QAAA,MAAA,iBA+BA,SAAA,EAAA,GAGA,IAAA,EAAA,GAAA,EAAA,KAmBA,GAhBA,QAAA,eAAA,EAAA,MAAA,QAAA,aAAA,EAAA,OACA,GAAA,EAAA,YAAA,KAKA,EAAA,KAAA,MAAA,EAAA,MACA,GAAA,EAAA,IAAA,KAIA,MAAA,EAAA,KACA,GAAA,EAAA,IAIA,MAAA,EAAA,KAAA,CACA,IAAA,EAAA,EAAA,EAAA,MACA,IAAA,IAAA,EAGA,OAAA,EAFA,GAAA,EAOA,OADA,EAAA,mBAAA,EAAA,GACA,EAGA,SAAA,EAAA,GACA,IACA,OAAA,KAAA,UAAA,GACA,MAAA,GACA,OAAA,GAcA,SAAA,EAAA,EAAA,GAWA,EAAA,YAAA,EATA,SAAA,GACA,IAAA,EAAA,EAAA,kBAAA,GACA,EAAA,EAAA,EAAA,QACA,EAAA,EAAA,QAEA,EAAA,QAAA,GACA,EAAA,KAaA,SAAA,IACA,KAAA,cAAA,KAsDA,SAAA,EAAA,GACA,IAAA,EAAA,EAEA,EAAA,CACA,KAAA,OAAA,EAAA,OAAA,KAGA,GAAA,MAAA,QAAA,MAAA,EAAA,MACA,OAAA,EAAA,uBAAA,EAAA,MAIA,GAAA,QAAA,eAAA,EAAA,MAAA,QAAA,aAAA,EAAA,KAAA,CAEA,IADA,IAAA,EAAA,GACA,MAAA,EAAA,SAAA,KACA,GAAA,EAAA,OAAA,GACA,GAAA,EAAA,UAEA,GAAA,GAAA,OAAA,IAAA,MAAA,EAAA,OAAA,GACA,MAAA,IAAA,MAAA,uBAEA,EAAA,YAAA,OAAA,GAIA,GAAA,MAAA,EAAA,OAAA,EAAA,GAEA,IADA,EAAA,IAAA,KACA,GAAA,CAEA,GAAA,OADA,EAAA,EAAA,OAAA,IACA,MAEA,GADA,EAAA,KAAA,EACA,IAAA,EAAA,OAAA,WAGA,EAAA,IAAA,IAIA,IAAA,EAAA,EAAA,OAAA,EAAA,GACA,GAAA,KAAA,GAAA,OAAA,IAAA,EAAA,CAEA,IADA,EAAA,GAAA,KACA,GAAA,CACA,IAAA,EACA,GAAA,OADA,EAAA,EAAA,OAAA,KACA,OAAA,IAAA,EAAA,GACA,EACA,MAGA,GADA,EAAA,IAAA,EAAA,OAAA,GACA,IAAA,EAAA,OAAA,MAEA,EAAA,GAAA,OAAA,EAAA,IAIA,GAAA,EAAA,SAAA,GAAA,CACA,IAAA,EAAA,EAAA,EAAA,OAAA,IAEA,MADA,IAAA,IAAA,EAAA,OAAA,QAAA,OAAA,EAAA,KAIA,OAAA,EAAA,mBAFA,EAAA,KAAA,EAOA,OADA,EAAA,mBAAA,EAAA,GACA,EAGA,SAAA,EAAA,GACA,IACA,OAAA,KAAA,MAAA,GACA,MAAA,GACA,OAAA,GA0BA,SAAA,EAAA,GACA,KAAA,UAAA,EACA,KAAA,QAAA,GAkCA,SAAA,EAAA,GACA,MAAA,CACA,KAAA,QAAA,MACA,KAAA,iBAAA,GA7RA,EAAA,UAAA,OAAA,SAAA,EAAA,IACA,EAAA,qBAAA,GAEA,QAAA,eAAA,EAAA,MAAA,QAAA,aAAA,EAAA,MACA,EAAA,EAAA,GAGA,EAAA,CADA,EAAA,MA+FA,EAAA,EAAA,WAUA,EAAA,UAAA,IAAA,SAAA,GACA,IAAA,EACA,GAAA,iBAAA,EACA,EAAA,EAAA,GACA,QAAA,eAAA,EAAA,MAAA,QAAA,aAAA,EAAA,MACA,KAAA,cAAA,IAAA,EAAA,GAGA,IAAA,KAAA,cAAA,UAAA,aACA,KAAA,KAAA,UAAA,IAGA,KAAA,KAAA,UAAA,OAEA,CAAA,IAAA,EAAA,KAAA,EAAA,OAWA,MAAA,IAAA,MAAA,iBAAA,GAVA,IAAA,KAAA,cACA,MAAA,IAAA,MAAA,qDAEA,EAAA,KAAA,cAAA,eAAA,MAEA,KAAA,cAAA,KACA,KAAA,KAAA,UAAA,MAkGA,EAAA,UAAA,QAAA,WACA,KAAA,eACA,KAAA,cAAA,0BA6BA,EAAA,UAAA,eAAA,SAAA,GAEA,GADA,KAAA,QAAA,KAAA,GACA,KAAA,QAAA,SAAA,KAAA,UAAA,YAAA,CACA,IAAA,EAAA,EAAA,kBAAA,KAAA,UAAA,KAAA,SAEA,OADA,KAAA,yBACA,EAEA,OAAA,MASA,EAAA,UAAA,uBAAA,WACA,KAAA,UAAA,KACA,KAAA,QAAA;;AC7YA,IACA,OAAA,QAAA,oBAAA,gBACA,oBAAA,IAAA,eACA,MAAA,GAGA,OAAA,SAAA;;ACbA,IAAA,EAAA,QAAA,YAEA,OAAA,QAAA,SAAA,GACA,IAAA,EAAA,EAAA,QAIA,EAAA,EAAA,QAIA,EAAA,EAAA,WAGA,IACA,GAAA,oBAAA,kBAAA,GAAA,GACA,OAAA,IAAA,eAEA,MAAA,IAKA,IACA,GAAA,oBAAA,iBAAA,GAAA,EACA,OAAA,IAAA,eAEA,MAAA,IAEA,IAAA,EACA,IACA,OAAA,IAAA,KAAA,CAAA,UAAA,OAAA,UAAA,KAAA,OAAA,qBACA,MAAA;;AC1BA,OAAA,QAAA,OAAA,MAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,OAAA,UAAA,eAEA,IAAA,IAAA,KAAA,EACA,EAAA,KAAA,EAAA,IACA,EAAA,KAAA,GAGA,OAAA;;;AE+CA,IAAA,EAAA,QAAA,UAAA,OA1DA,EAAA,QAAA,WAEA,EAAA,OAAA,UAAA,SACA,EAAA,mBAAA,MACA,oBAAA,MAAA,6BAAA,EAAA,KAAA,MACA,EAAA,mBAAA,MACA,oBAAA,MAAA,6BAAA,EAAA,KAAA,MAiBA,SAAA,EAAA,GACA,IAAA,GAAA,iBAAA,EACA,OAAA,EAGA,GAAA,EAAA,GAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IACA,GAAA,EAAA,EAAA,IACA,OAAA,EAGA,OAAA,EAGA,GAAA,mBAAA,GAAA,EAAA,UAAA,EAAA,SAAA,IACA,mBAAA,aAAA,aAAA,aACA,GAAA,aAAA,MACA,GAAA,aAAA,KAEA,OAAA,EAIA,GAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,IAAA,UAAA,OACA,OAAA,EAAA,EAAA,UAAA,GAGA,IAAA,IAAA,KAAA,EACA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,OAAA,EAIA,OAAA,EA5CA,OAAA,QAAA;;ACXA,OAAA,QAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,WAIA,GAHA,EAAA,GAAA,EACA,EAAA,GAAA,EAEA,EAAA,MAAA,OAAA,EAAA,MAAA,EAAA,GAMA,GAJA,EAAA,IAAA,GAAA,GACA,EAAA,IAAA,GAAA,GACA,EAAA,IAAA,EAAA,GAEA,GAAA,GAAA,GAAA,GAAA,IAAA,EACA,OAAA,IAAA,YAAA,GAKA,IAFA,IAAA,EAAA,IAAA,WAAA,GACA,EAAA,IAAA,WAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IACA,EAAA,GAAA,EAAA,GAEA,OAAA,EAAA;;ACzBA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,GAAA,EAIA,OAHA,EAAA,GAAA,EACA,EAAA,MAAA,EAEA,IAAA,EAAA,IAAA,EAEA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,OAAA,EACA,MAAA,IAAA,MAAA,iCAEA,EAAA,MAGA,GACA,GAAA,EACA,EAAA,GAEA,EAAA,GACA,IAAA,EAAA,OAAA,GACA,EAAA,KAAA,IAKA,SAAA,KA3BA,OAAA,QAAA;;ACEA,IAyLA,EACA,EACA,EA3LA,EAAA,OAAA,aAGA,SAAA,EAAA,GAMA,IALA,IAGA,EACA,EAJA,EAAA,GACA,EAAA,EACA,EAAA,EAAA,OAGA,EAAA,IACA,EAAA,EAAA,WAAA,OACA,OAAA,GAAA,OAAA,EAAA,EAGA,QAAA,OADA,EAAA,EAAA,WAAA,OAEA,EAAA,OAAA,KAAA,IAAA,KAAA,KAAA,GAAA,QAIA,EAAA,KAAA,GACA,KAGA,EAAA,KAAA,GAGA,OAAA,EAIA,SAAA,EAAA,GAKA,IAJA,IAEA,EAFA,EAAA,EAAA,OACA,GAAA,EAEA,EAAA,KACA,EAAA,IACA,EAAA,EAAA,IACA,QAEA,GAAA,GADA,GAAA,SACA,GAAA,KAAA,OACA,EAAA,MAAA,KAAA,GAEA,GAAA,EAAA,GAEA,OAAA,EAGA,SAAA,EAAA,EAAA,GACA,GAAA,GAAA,OAAA,GAAA,MAAA,CACA,GAAA,EACA,MAAA,MACA,oBAAA,EAAA,SAAA,IAAA,cACA,0BAGA,OAAA,EAEA,OAAA,EAIA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,GAAA,EAAA,GAAA,KAGA,SAAA,EAAA,EAAA,GACA,GAAA,IAAA,WAAA,GACA,OAAA,EAAA,GAEA,IAAA,EAAA,GAiBA,OAhBA,IAAA,WAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,KAEA,IAAA,WAAA,IACA,EAAA,EAAA,KACA,EAAA,OAEA,EAAA,EAAA,GAAA,GAAA,GAAA,KACA,GAAA,EAAA,EAAA,IAEA,IAAA,WAAA,KACA,EAAA,EAAA,GAAA,GAAA,EAAA,KACA,GAAA,EAAA,EAAA,IACA,GAAA,EAAA,EAAA,IAEA,GAAA,EAAA,GAAA,EAAA,KAIA,SAAA,EAAA,EAAA,GASA,IAPA,IAAA,GAAA,KADA,EAAA,GAAA,IACA,OAEA,EAAA,EAAA,GACA,EAAA,EAAA,OACA,GAAA,EAEA,EAAA,KACA,EAAA,GAEA,GAAA,EADA,EAAA,GACA,GAEA,OAAA,EAKA,SAAA,IACA,GAAA,GAAA,EACA,MAAA,MAAA,sBAGA,IAAA,EAAA,IAAA,EAAA,GAGA,GAFA,IAEA,MAAA,IAAA,GACA,OAAA,GAAA,EAIA,MAAA,MAAA,6BAGA,SAAA,EAAA,GACA,IAAA,EAIA,EAEA,GAAA,EAAA,EACA,MAAA,MAAA,sBAGA,GAAA,GAAA,EACA,OAAA,EAQA,GAJA,EAAA,IAAA,EAAA,GACA,IAGA,IAAA,IAAA,GACA,OAAA,EAIA,GAAA,MAAA,IAAA,GAAA,CAGA,IADA,GAAA,GAAA,IAAA,EADA,MAEA,IACA,OAAA,EAEA,MAAA,MAAA,6BAKA,GAAA,MAAA,IAAA,GAAA,CAIA,IADA,GAAA,GAAA,IAAA,GAFA,KAEA,EADA,MAEA,KACA,OAAA,EAAA,EAAA,GAAA,EAAA,MAEA,MAAA,MAAA,6BAKA,GAAA,MAAA,IAAA,KAIA,GAAA,EAAA,IAAA,GAHA,KAGA,GAFA,KAGA,EAFA,MAGA,OAAA,GAAA,QACA,OAAA,EAIA,MAAA,MAAA,0BAMA,SAAA,EAAA,EAAA,GAEA,IAAA,GAAA,KADA,EAAA,GAAA,IACA,OAEA,EAAA,EAAA,GACA,EAAA,EAAA,OACA,EAAA,EAGA,IAFA,IACA,EADA,EAAA,IAEA,KAAA,EAAA,EAAA,KACA,EAAA,KAAA,GAEA,OAAA,EAAA,GAGA,OAAA,QAAA,CACA,QAAA,QACA,OAAA,EACA,OAAA;;CCzMA,WACE,aAMK,IAJDmD,IAAAA,EAAQ,mEAGRC,EAAS,IAAIC,WAAW,KACnBnH,EAAI,EAAGA,EAAIiH,EAAM9H,OAAQa,IAChCkH,EAAOD,EAAMG,WAAWpH,IAAMA,EAGhC9B,QAAQmJ,OAAS,SAASC,GACpBC,IACJvH,EADIuH,EAAQ,IAAIJ,WAAWG,GACxB/H,EAAMgI,EAAMpI,OAAQqI,EAAS,GAE3BxH,IAAAA,EAAI,EAAGA,EAAIT,EAAKS,GAAG,EACtBwH,GAAUP,EAAMM,EAAMvH,IAAM,GAC5BwH,GAAUP,GAAmB,EAAXM,EAAMvH,KAAW,EAAMuH,EAAMvH,EAAI,IAAM,GACzDwH,GAAUP,GAAuB,GAAfM,EAAMvH,EAAI,KAAY,EAAMuH,EAAMvH,EAAI,IAAM,GAC9DwH,GAAUP,EAAqB,GAAfM,EAAMvH,EAAI,IASrBwH,OANFjI,EAAM,GAAO,EAChBiI,EAASA,EAAOC,UAAU,EAAGD,EAAOrI,OAAS,GAAK,IACzCI,EAAM,GAAM,IACrBiI,EAASA,EAAOC,UAAU,EAAGD,EAAOrI,OAAS,GAAK,MAG7CqI,GAGTtJ,QAAQwJ,OAAU,SAASF,GACrBG,IACiB3H,EACrB4H,EAAUC,EAAUC,EAAUC,EAF1BJ,EAA+B,IAAhBH,EAAOrI,OAC1BI,EAAMiI,EAAOrI,OAAW6I,EAAI,EAGM,MAA9BR,EAAOA,EAAOrI,OAAS,KACzBwI,IACkC,MAA9BH,EAAOA,EAAOrI,OAAS,IACzBwI,KAIAL,IAAAA,EAAc,IAAIW,YAAYN,GAClCJ,EAAQ,IAAIJ,WAAWG,GAElBtH,IAAAA,EAAI,EAAGA,EAAIT,EAAKS,GAAG,EACtB4H,EAAWV,EAAOM,EAAOJ,WAAWpH,IACpC6H,EAAWX,EAAOM,EAAOJ,WAAWpH,EAAE,IACtC8H,EAAWZ,EAAOM,EAAOJ,WAAWpH,EAAE,IACtC+H,EAAWb,EAAOM,EAAOJ,WAAWpH,EAAE,IAEtCuH,EAAMS,KAAQJ,GAAY,EAAMC,GAAY,EAC5CN,EAAMS,MAAoB,GAAXH,IAAkB,EAAMC,GAAY,EACnDP,EAAMS,MAAoB,EAAXF,IAAiB,EAAiB,GAAXC,EAGjCT,OAAAA,GAzDX;;ACHA,IAAA,OAAA,IAAA,EAAA,EACA,oBAAA,kBAAA,kBACA,oBAAA,cAAA,cACA,oBAAA,gBAAA,eAOA,EAAA,WACA,IAEA,OAAA,IADA,IAAA,KAAA,CAAA,OACA,KACA,MAAA,GACA,OAAA,GALA,GAcA,EAAA,GAAA,WACA,IAEA,OAAA,IADA,IAAA,KAAA,CAAA,IAAA,WAAA,CAAA,EAAA,MACA,KACA,MAAA,GACA,OAAA,GALA,GAaA,EAAA,GACA,EAAA,UAAA,QACA,EAAA,UAAA,QAQA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,SAAA,GACA,GAAA,EAAA,kBAAA,YAAA,CACA,IAAA,EAAA,EAAA,OAIA,GAAA,EAAA,aAAA,EAAA,WAAA,CACA,IAAA,EAAA,IAAA,WAAA,EAAA,YACA,EAAA,IAAA,IAAA,WAAA,EAAA,EAAA,WAAA,EAAA,aACA,EAAA,EAAA,OAGA,OAAA,EAGA,OAAA,IAIA,SAAA,EAAA,EAAA,GACA,EAAA,GAAA,GAEA,IAAA,EAAA,IAAA,EAKA,OAJA,EAAA,GAAA,QAAA,SAAA,GACA,EAAA,OAAA,KAGA,EAAA,KAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAGA,SAAA,EAAA,EAAA,GACA,OAAA,IAAA,KAAA,EAAA,GAAA,GAAA,IAGA,oBAAA,OACA,EAAA,UAAA,KAAA,UACA,EAAA,UAAA,KAAA,WAGA,OAAA,QACA,EACA,EAAA,KAAA,EACA,EACA,OAEA;;AC7FA,IAMA,EANA,EAAA,QAAA,UACA,EAAA,QAAA,eACA,EAAA,QAAA,qBACA,EAAA,QAAA,SACA,EAAA,QAAA,UAGA,oBAAA,cACA,EAAA,QAAA,uBAUA,IAAA,EAAA,oBAAA,WAAA,WAAA,KAAA,UAAA,WAQA,EAAA,oBAAA,WAAA,aAAA,KAAA,UAAA,WAMA,EAAA,GAAA,EAMA,QAAA,SAAA,EAMA,IAAA,EAAA,QAAA,QAAA,CACA,KAAA,EACA,MAAA,EACA,KAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,EACA,KAAA,GAGA,EAAA,EAAA,GAMA,EAAA,CAAA,KAAA,QAAA,KAAA,gBAMA,EAAA,QAAA,QAwDA,SAAA,EAAA,EAAA,GAGA,OAAA,EADA,IAAA,QAAA,QAAA,EAAA,MAAA,EAAA,KAAA,MAQA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EACA,OAAA,QAAA,mBAAA,EAAA,GAGA,IAAA,EAAA,EAAA,KACA,EAAA,IAAA,WAAA,GACA,EAAA,IAAA,WAAA,EAAA,EAAA,YAEA,EAAA,GAAA,EAAA,EAAA,MACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,GAAA,EAAA,GAGA,OAAA,EAAA,EAAA,QAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EACA,OAAA,QAAA,mBAAA,EAAA,GAGA,IAAA,EAAA,IAAA,WAIA,OAHA,EAAA,OAAA,WACA,QAAA,aAAA,CAAA,KAAA,EAAA,KAAA,KAAA,EAAA,QAAA,GAAA,EAAA,IAEA,EAAA,kBAAA,EAAA,MAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EACA,OAAA,QAAA,mBAAA,EAAA,GAGA,GAAA,EACA,OAAA,EAAA,EAAA,EAAA,GAGA,IAAA,EAAA,IAAA,WAAA,GAIA,OAHA,EAAA,GAAA,EAAA,EAAA,MAGA,EAFA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,QAoFA,SAAA,EAAA,GACA,IACA,EAAA,EAAA,OAAA,EAAA,CAAA,QAAA,IACA,MAAA,GACA,OAAA,EAEA,OAAA,EAgFA,SAAA,EAAA,EAAA,EAAA,GAWA,IAVA,IAAA,EAAA,IAAA,MAAA,EAAA,QACA,EAAA,EAAA,EAAA,OAAA,GAEA,EAAA,SAAA,EAAA,EAAA,GACA,EAAA,EAAA,SAAA,EAAA,GACA,EAAA,GAAA,EACA,EAAA,EAAA,MAIA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,EAAA,GAAA,GA9QA,QAAA,aAAA,SAAA,EAAA,EAAA,EAAA,GACA,mBAAA,IACA,EAAA,EACA,GAAA,GAGA,mBAAA,IACA,EAAA,EACA,EAAA,MAGA,IAAA,OAAA,IAAA,EAAA,UACA,EACA,EAAA,KAAA,QAAA,EAAA,KAEA,GAAA,oBAAA,aAAA,aAAA,YACA,OAAA,EAAA,EAAA,EAAA,GACA,QAAA,IAAA,GAAA,aAAA,EACA,OAAA,EAAA,EAAA,EAAA,GAIA,GAAA,GAAA,EAAA,OACA,OAAA,EAAA,EAAA,GAIA,IAAA,EAAA,EAAA,EAAA,MAOA,YAJA,IAAA,EAAA,OACA,GAAA,EAAA,EAAA,OAAA,OAAA,EAAA,MAAA,CAAA,QAAA,IAAA,OAAA,EAAA,OAGA,EAAA,GAAA,IAkEA,QAAA,mBAAA,SAAA,EAAA,GACA,IAUA,EAVA,EAAA,IAAA,QAAA,QAAA,EAAA,MACA,QAAA,IAAA,GAAA,EAAA,gBAAA,EAAA,CACA,IAAA,EAAA,IAAA,WAKA,OAJA,EAAA,OAAA,WACA,IAAA,EAAA,EAAA,OAAA,MAAA,KAAA,GACA,EAAA,EAAA,IAEA,EAAA,cAAA,EAAA,MAIA,IACA,EAAA,OAAA,aAAA,MAAA,KAAA,IAAA,WAAA,EAAA,OACA,MAAA,GAIA,IAFA,IAAA,EAAA,IAAA,WAAA,EAAA,MACA,EAAA,IAAA,MAAA,EAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,GAEA,EAAA,OAAA,aAAA,MAAA,KAAA,GAGA,OADA,GAAA,KAAA,GACA,EAAA,IAUA,QAAA,aAAA,SAAA,EAAA,EAAA,GACA,QAAA,IAAA,EACA,OAAA,EAGA,GAAA,iBAAA,EAAA,CACA,GAAA,MAAA,EAAA,OAAA,GACA,OAAA,QAAA,mBAAA,EAAA,OAAA,GAAA,GAGA,GAAA,IAEA,KADA,EAAA,EAAA,IAEA,OAAA,EAGA,IAAA,EAAA,EAAA,OAAA,GAEA,OAAA,OAAA,IAAA,GAAA,EAAA,GAIA,EAAA,OAAA,EACA,CAAA,KAAA,EAAA,GAAA,KAAA,EAAA,UAAA,IAEA,CAAA,KAAA,EAAA,IANA,EAWA,EADA,IAAA,WAAA,GACA,GADA,IAEA,EAAA,EAAA,EAAA,GAIA,OAHA,GAAA,SAAA,IACA,EAAA,IAAA,EAAA,CAAA,KAEA,CAAA,KAAA,EAAA,GAAA,KAAA,IAmBA,QAAA,mBAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,OAAA,IACA,IAAA,EACA,MAAA,CAAA,KAAA,EAAA,KAAA,CAAA,QAAA,EAAA,KAAA,EAAA,OAAA,KAGA,IAAA,EAAA,EAAA,OAAA,EAAA,OAAA,IAMA,MAJA,SAAA,GAAA,IACA,EAAA,IAAA,EAAA,CAAA,KAGA,CAAA,KAAA,EAAA,KAAA,IAmBA,QAAA,cAAA,SAAA,EAAA,EAAA,GACA,mBAAA,IACA,EAAA,EACA,EAAA,MAGA,IAAA,EAAA,EAAA,GAEA,GAAA,GAAA,EACA,OAAA,IAAA,EACA,QAAA,oBAAA,EAAA,GAGA,QAAA,2BAAA,EAAA,GAGA,IAAA,EAAA,OACA,OAAA,EAAA,MAaA,EAAA,EANA,SAAA,EAAA,GACA,QAAA,aAAA,IAAA,GAAA,GAAA,EAAA,SAAA,GACA,EAAA,KANA,SAAA,GACA,OAAA,EAAA,OAAA,IAAA,EAKA,CAAA,OAIA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,KAAA,QAgCA,QAAA,cAAA,SAAA,EAAA,EAAA,GACA,GAAA,iBAAA,EACA,OAAA,QAAA,sBAAA,EAAA,EAAA,GAQA,IAAA,EACA,GANA,mBAAA,IACA,EAAA,EACA,EAAA,MAIA,KAAA,EAEA,OAAA,EAAA,EAAA,EAAA,GAKA,IAFA,IAAA,EAAA,EAAA,EAAA,GAEA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,OAAA,GAEA,GAAA,MAAA,EAAA,CAKA,GAAA,KAAA,GAAA,IAAA,EAAA,OAAA,IAEA,OAAA,EAAA,EAAA,EAAA,GAKA,GAAA,IAFA,EAAA,EAAA,OAAA,EAAA,EAAA,IAEA,OAEA,OAAA,EAAA,EAAA,EAAA,GAGA,GAAA,EAAA,OAAA,CAGA,GAFA,EAAA,QAAA,aAAA,EAAA,GAAA,GAEA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAEA,OAAA,EAAA,EAAA,EAAA,GAIA,IAAA,IADA,EAAA,EAAA,EAAA,EAAA,GACA,OAIA,GAAA,EACA,EAAA,QA9BA,GAAA,EAiCA,MAAA,KAAA,EAEA,EAAA,EAAA,EAAA,QAFA,GAqBA,QAAA,2BAAA,SAAA,EAAA,GACA,IAAA,EAAA,OACA,OAAA,EAAA,IAAA,YAAA,IASA,EAAA,EANA,SAAA,EAAA,GACA,QAAA,aAAA,GAAA,GAAA,EAAA,SAAA,GACA,OAAA,EAAA,KAAA,MAIA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,OAAA,SAAA,EAAA,GACA,IAAA,EAMA,OAAA,GAJA,EADA,iBAAA,EACA,EAAA,OAEA,EAAA,YAEA,WAAA,OAAA,EAAA,GACA,GAEA,EAAA,IAAA,WAAA,GAEA,EAAA,EA8BA,OA7BA,EAAA,QAAA,SAAA,GACA,IAAA,EAAA,iBAAA,EACA,EAAA,EACA,GAAA,EAAA,CAEA,IADA,IAAA,EAAA,IAAA,WAAA,EAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,WAAA,GAEA,EAAA,EAAA,OAIA,EAAA,KADA,EACA,EAEA,EAGA,IAAA,EAAA,EAAA,WAAA,WACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,KAAA,SAAA,EAAA,IAEA,EAAA,KAAA,IAGA,IADA,EAAA,IAAA,WAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,KAAA,EAAA,KAIA,EAAA,EAAA,WAQA,QAAA,oBAAA,SAAA,EAAA,GAgCA,EAAA,EA/BA,SAAA,EAAA,GACA,QAAA,aAAA,GAAA,GAAA,EAAA,SAAA,GACA,IAAA,EAAA,IAAA,WAAA,GAEA,GADA,EAAA,GAAA,EACA,iBAAA,EAAA,CAEA,IADA,IAAA,EAAA,IAAA,WAAA,EAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,WAAA,GAEA,EAAA,EAAA,OACA,EAAA,GAAA,EAGA,IAIA,GAJA,aAAA,YACA,EAAA,WACA,EAAA,MAEA,WACA,EAAA,IAAA,WAAA,EAAA,OAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,SAAA,EAAA,IAIA,GAFA,EAAA,EAAA,QAAA,IAEA,EAAA,CACA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,IACA,EAAA,KAAA,OAKA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAAA,OAaA,QAAA,sBAAA,SAAA,EAAA,EAAA,GACA,mBAAA,IACA,EAAA,EACA,EAAA,MAMA,IAHA,IAAA,EAAA,EACA,EAAA,GAEA,EAAA,WAAA,GAAA,CAKA,IAJA,IAAA,EAAA,IAAA,WAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,GAEA,EAAA,EACA,MAAA,EAAA,GADA,IAAA,CAIA,GAAA,EAAA,OAAA,IACA,OAAA,EAAA,EAAA,EAAA,GAGA,GAAA,EAAA,GAGA,EAAA,EAAA,EAAA,EAAA,EAAA,QACA,EAAA,SAAA,GAEA,IAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,EACA,IACA,EAAA,OAAA,aAAA,MAAA,KAAA,IAAA,WAAA,IACA,MAAA,GAEA,IAAA,EAAA,IAAA,WAAA,GACA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,OAAA,aAAA,EAAA,IAKA,EAAA,KAAA,GACA,EAAA,EAAA,EAAA,GAGA,IAAA,EAAA,EAAA,OACA,EAAA,QAAA,SAAA,EAAA,GACA,EAAA,QAAA,aAAA,EAAA,GAAA,GAAA,EAAA;;ACtlBA,IAAA,EAAA,QAAA,oBACA,EAAA,QAAA,qBAeA,SAAA,EAAA,GACA,KAAA,KAAA,EAAA,KACA,KAAA,SAAA,EAAA,SACA,KAAA,KAAA,EAAA,KACA,KAAA,OAAA,EAAA,OACA,KAAA,MAAA,EAAA,MACA,KAAA,eAAA,EAAA,eACA,KAAA,kBAAA,EAAA,kBACA,KAAA,WAAA,GACA,KAAA,MAAA,EAAA,QAAA,EACA,KAAA,OAAA,EAAA,OACA,KAAA,WAAA,EAAA,WAGA,KAAA,IAAA,EAAA,IACA,KAAA,IAAA,EAAA,IACA,KAAA,WAAA,EAAA,WACA,KAAA,KAAA,EAAA,KACA,KAAA,GAAA,EAAA,GACA,KAAA,QAAA,EAAA,QACA,KAAA,mBAAA,EAAA,mBACA,KAAA,UAAA,EAAA,UAGA,KAAA,cAAA,EAAA,cAGA,KAAA,aAAA,EAAA,aACA,KAAA,aAAA,EAAA,aArCA,OAAA,QAAA,EA4CA,EAAA,EAAA,WAUA,EAAA,UAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,IAAA,MAAA,GAIA,OAHA,EAAA,KAAA,iBACA,EAAA,YAAA,EACA,KAAA,KAAA,QAAA,GACA,MASA,EAAA,UAAA,KAAA,WAMA,MALA,WAAA,KAAA,YAAA,KAAA,KAAA,aACA,KAAA,WAAA,UACA,KAAA,UAGA,MASA,EAAA,UAAA,MAAA,WAMA,MALA,YAAA,KAAA,YAAA,SAAA,KAAA,aACA,KAAA,UACA,KAAA,WAGA,MAUA,EAAA,UAAA,KAAA,SAAA,GACA,GAAA,SAAA,KAAA,WAGA,MAAA,IAAA,MAAA,sBAFA,KAAA,MAAA,IAYA,EAAA,UAAA,OAAA,WACA,KAAA,WAAA,OACA,KAAA,UAAA,EACA,KAAA,KAAA,SAUA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,EAAA,aAAA,EAAA,KAAA,OAAA,YACA,KAAA,SAAA,IAOA,EAAA,UAAA,SAAA,SAAA,GACA,KAAA,KAAA,SAAA,IASA,EAAA,UAAA,QAAA,WACA,KAAA,WAAA,SACA,KAAA,KAAA;;ACtJA,QAAA,OAAA,SAAA,GACA,IAAA,EAAA,GAEA,IAAA,IAAA,KAAA,EACA,EAAA,eAAA,KACA,EAAA,SAAA,GAAA,KACA,GAAA,mBAAA,GAAA,IAAA,mBAAA,EAAA,KAIA,OAAA,GAUA,QAAA,OAAA,SAAA,GAGA,IAFA,IAAA,EAAA,GACA,EAAA,EAAA,MAAA,KACA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,GAAA,MAAA,KACA,EAAA,mBAAA,EAAA,KAAA,mBAAA,EAAA,IAEA,OAAA;;AClCA,OAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,aACA,EAAA,UAAA,EAAA,UACA,EAAA,UAAA,IAAA,EACA,EAAA,UAAA,YAAA;;ACLA,aAEA,IAKA,EALA,EAAA,mEAAA,MAAA,IACA,EAAA,GACA,EAAA,GACA,EAAA,EACA,EAAA,EAUA,SAAA,EAAA,GACA,IAAA,EAAA,GAEA,GACA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,MAAA,EAAA,SACA,EAAA,GAEA,OAAA,EAUA,SAAA,EAAA,GACA,IAAA,EAAA,EAEA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAGA,OAAA,EASA,SAAA,IACA,IAAA,EAAA,GAAA,IAAA,MAEA,OAAA,IAAA,GAAA,EAAA,EAAA,EAAA,GACA,EAAA,IAAA,EAAA,KAMA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAKA,EAAA,OAAA,EACA,EAAA,OAAA,EACA,OAAA,QAAA;;AEzBA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAEA,IAAA,KAAA,EACA,GAAA,GAAA,GAAA,EAAA,EAAA,WAAA,GACA,GAAA,EAGA,OAAA,QAAA,OAAA,KAAA,IAAA,GAAA,QAAA,OAAA,QAWA,SAAA,EAAA,GAEA,IAAA,EAEA,SAAA,IAEA,GAAA,EAAA,QAAA,CAEA,IAAA,EAAA,EAGA,GAAA,IAAA,KACA,EAAA,GAAA,GAAA,GACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,EAIA,IADA,IAAA,EAAA,IAAA,MAAA,UAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,UAAA,GAGA,EAAA,GAAA,QAAA,OAAA,EAAA,IAEA,iBAAA,EAAA,IAEA,EAAA,QAAA,MAIA,IAAA,EAAA,EACA,EAAA,GAAA,EAAA,GAAA,QAAA,gBAAA,SAAA,EAAA,GAEA,GAAA,OAAA,EAAA,OAAA,EACA,IACA,IAAA,EAAA,QAAA,WAAA,GACA,GAAA,mBAAA,EAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAGA,EAAA,OAAA,EAAA,GACA,IAEA,OAAA,IAIA,QAAA,WAAA,KAAA,EAAA,IAEA,EAAA,KAAA,QAAA,KAAA,QAAA,IAAA,KAAA,UACA,MAAA,EAAA,IAgBA,OAbA,EAAA,UAAA,EACA,EAAA,QAAA,QAAA,QAAA,GACA,EAAA,UAAA,QAAA,YACA,EAAA,MAAA,EAAA,GACA,EAAA,QAAA,EAGA,mBAAA,QAAA,MACA,QAAA,KAAA,GAGA,QAAA,UAAA,KAAA,GAEA,EAGA,SAAA,IACA,IAAA,EAAA,QAAA,UAAA,QAAA,MACA,OAAA,IAAA,IACA,QAAA,UAAA,OAAA,EAAA,IACA,GAcA,SAAA,EAAA,GAMA,IAAA,EALA,QAAA,KAAA,GAEA,QAAA,MAAA,GACA,QAAA,MAAA,GAGA,IAAA,GAAA,iBAAA,EAAA,EAAA,IAAA,MAAA,UACA,EAAA,EAAA,OAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,KAEA,OADA,EAAA,EAAA,GAAA,QAAA,MAAA,QACA,GACA,QAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAAA,GAAA,MAEA,QAAA,MAAA,KAAA,IAAA,OAAA,IAAA,EAAA,OAIA,IAAA,EAAA,EAAA,EAAA,QAAA,UAAA,OAAA,IAAA,CACA,IAAA,EAAA,QAAA,UAAA,GACA,EAAA,QAAA,QAAA,QAAA,EAAA,YAUA,SAAA,IACA,QAAA,OAAA,IAWA,SAAA,EAAA,GACA,GAAA,MAAA,EAAA,EAAA,OAAA,GACA,OAAA,EAEA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,QAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,QAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAGA,IAAA,EAAA,EAAA,EAAA,QAAA,MAAA,OAAA,EAAA,EAAA,IACA,GAAA,QAAA,MAAA,GAAA,KAAA,GACA,OAAA,EAGA,OAAA,EAWA,SAAA,EAAA,GACA,OAAA,aAAA,MAAA,EAAA,OAAA,EAAA,QACA,EAvNA,QAAA,OAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EACA,QAAA,OAAA,EACA,QAAA,QAAA,EACA,QAAA,OAAA,EACA,QAAA,QAAA,EACA,QAAA,SAAA,QAAA,MAKA,QAAA,UAAA,GAMA,QAAA,MAAA,GACA,QAAA,MAAA,GAQA,QAAA,WAAA;;;ACiKC,IAAA,EAAA,QAAA,WAvJD,SAAS5F,IAIH,QAAkB,oBAAXC,SAA0BA,OAAO3D,SAAmC,aAAxB2D,OAAO3D,QAAQ4D,QAK7C,oBAAdE,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUC,cAAcC,MAAM,4BAM3E,oBAAbC,UAA4BA,SAASC,iBAAmBD,SAASC,gBAAgBC,OAASF,SAASC,gBAAgBC,MAAMC,kBAEnH,oBAAXV,QAA0BA,OAAOW,UAAYX,OAAOW,QAAQC,SAAYZ,OAAOW,QAAQE,WAAab,OAAOW,QAAQG,QAGrG,oBAAdX,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,mBAAqBS,SAASC,OAAOC,GAAI,KAAO,IAE9H,oBAAdd,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUC,cAAcC,MAAM,uBAsBxG,SAASY,EAAWhD,GACd6B,IAAAA,EAAY,KAAKA,UASjB,GAPJ7B,EAAK,IAAM6B,EAAY,KAAO,IAC1B,KAAKoB,WACJpB,EAAY,MAAQ,KACrB7B,EAAK,IACJ6B,EAAY,MAAQ,KACrB,IAAMxD,QAAQ6E,SAAS,KAAKC,MAE3BtB,EAAD,CAEAuB,IAAAA,EAAI,UAAY,KAAKC,MACzBrD,EAAKsD,OAAO,EAAG,EAAGF,EAAG,kBAKjBG,IAAAA,EAAQ,EACRC,EAAQ,EACZxD,EAAK,GAAGyD,QAAQ,cAAe,SAASrB,GAClC,OAASA,IACbmB,IACI,OAASnB,IAGXoB,EAAQD,MAIZvD,EAAKsD,OAAOE,EAAO,EAAGJ,IAUxB,SAASM,IAGA,MAAA,iBAAoBjB,SACtBA,QAAQiB,KACRqD,SAAS1G,UAAUC,MAAMzB,KAAK4D,QAAQiB,IAAKjB,QAASvC,WAU3D,SAASyD,EAAKC,GACR,IACE,MAAQA,EACVvF,QAAQwF,QAAQE,WAAW,SAE3B1F,QAAQwF,QAAQmD,MAAQpD,EAE1B,MAAMhF,KAUV,SAASqF,IACHC,IAAAA,EACA,IACFA,EAAI7F,QAAQwF,QAAQmD,MACpB,MAAMpI,IAODsF,OAJFA,QAAwB,IAAZ/F,GAA2B,QAASA,IACnD+F,OAAA,GAGKA,EAoBT,SAASE,IACH,IACKtC,OAAAA,OAAOuC,aACd,MAAOzF,KA3LXP,QAAUD,OAAOC,QAAUkG,QAAQ,WACnClG,QAAQqF,IAAMA,EACdrF,QAAQ2E,WAAaA,EACrB3E,QAAQsF,KAAOA,EACftF,QAAQ4F,KAAOA,EACf5F,QAAQwD,UAAYA,EACpBxD,QAAQwF,QAAU,oBAAsBoD,aACtB,IAAsBA,OAAOpD,QAC3BoD,OAAOpD,QAAQqD,MACf9C,IAMpB/F,QAAQiG,OAAS,CACf,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,WAwCzDjG,QAAQmG,WAAWC,EAAI,SAASC,GAC1B,IACKC,OAAAA,KAAKC,UAAUF,GACtB,MAAOoB,GACA,MAAA,+BAAiCA,EAAIjB,UAqGhDxG,QAAQ8I,OAAOlD;;AC7Kf,IAAA,EAAA,QAAA,gBACA,EAAA,QAAA,WACA,EAAA,QAAA,oBACA,EAAA,QAAA,qBACA,EAAA,QAAA,SACA,EAAA,QAAA,QAAA,CAAA,4BAMA,OAAA,QAAA,EAMA,IAAA,EAGA,MADA,IADA,QAAA,sBACA,CAAA,CAAA,SAAA,IACA,aAUA,SAAA,EAAA,GACA,IAAA,EAAA,GAAA,EAAA,YACA,IAAA,IACA,KAAA,gBAAA,GAEA,EAAA,KAAA,KAAA,GAOA,EAAA,EAAA,GAMA,EAAA,UAAA,KAAA,UASA,EAAA,UAAA,OAAA,WACA,KAAA,QAUA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,KAIA,SAAA,IACA,EAAA,UACA,EAAA,WAAA,SACA,IAGA,GARA,KAAA,WAAA,UAQA,KAAA,UAAA,KAAA,SAAA,CACA,IAAA,EAAA,EAEA,KAAA,UACA,EAAA,+CACA,IACA,KAAA,KAAA,eAAA,WACA,EAAA,gCACA,GAAA,OAIA,KAAA,WACA,EAAA,+CACA,IACA,KAAA,KAAA,QAAA,WACA,EAAA,gCACA,GAAA,YAIA,KAUA,EAAA,UAAA,KAAA,WACA,EAAA,WACA,KAAA,SAAA,EACA,KAAA,SACA,KAAA,KAAA,SASA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,KACA,EAAA,sBAAA,GAkBA,EAAA,cAAA,EAAA,KAAA,OAAA,WAjBA,SAAA,EAAA,EAAA,GAOA,GALA,YAAA,EAAA,YACA,EAAA,SAIA,UAAA,EAAA,KAEA,OADA,EAAA,WACA,EAIA,EAAA,SAAA,KAOA,WAAA,KAAA,aAEA,KAAA,SAAA,EACA,KAAA,KAAA,gBAEA,SAAA,KAAA,WACA,KAAA,OAEA,EAAA,uCAAA,KAAA,cAWA,EAAA,UAAA,QAAA,WACA,IAAA,EAAA,KAEA,SAAA,IACA,EAAA,wBACA,EAAA,MAAA,CAAA,CAAA,KAAA,WAGA,SAAA,KAAA,YACA,EAAA,4BACA,MAIA,EAAA,wCACA,KAAA,KAAA,OAAA,KAYA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,KACA,KAAA,UAAA,EACA,IAAA,EAAA,WACA,EAAA,UAAA,EACA,EAAA,KAAA,UAGA,EAAA,cAAA,EAAA,KAAA,eAAA,SAAA,GACA,EAAA,QAAA,EAAA,MAUA,EAAA,UAAA,IAAA,WACA,IAAA,EAAA,KAAA,OAAA,GACA,EAAA,KAAA,OAAA,QAAA,OACA,EAAA,GAyBA,OAtBA,IAAA,KAAA,oBACA,EAAA,KAAA,gBAAA,KAGA,KAAA,gBAAA,EAAA,MACA,EAAA,IAAA,GAGA,EAAA,EAAA,OAAA,GAGA,KAAA,OAAA,UAAA,GAAA,MAAA,OAAA,KAAA,OACA,SAAA,GAAA,KAAA,OAAA,KAAA,SACA,EAAA,IAAA,KAAA,MAIA,EAAA,SACA,EAAA,IAAA,GAIA,EAAA,QADA,IAAA,KAAA,SAAA,QAAA,KACA,IAAA,KAAA,SAAA,IAAA,KAAA,UAAA,EAAA,KAAA,KAAA;;AC7OA,IAAA,EAAA,QAAA,sBACA,EAAA,QAAA,aACA,EAAA,QAAA,qBACA,EAAA,QAAA,qBACA,EAAA,QAAA,QAAA,CAAA,gCAaA,SAAA,KASA,SAAA,EAAA,GAKA,GAJA,EAAA,KAAA,KAAA,GACA,KAAA,eAAA,EAAA,eACA,KAAA,aAAA,EAAA,aAEA,oBAAA,SAAA,CACA,IAAA,EAAA,WAAA,SAAA,SACA,EAAA,SAAA,KAGA,IACA,EAAA,EAAA,IAAA,IAGA,KAAA,GAAA,oBAAA,UAAA,EAAA,WAAA,SAAA,UACA,IAAA,EAAA,KACA,KAAA,GAAA,EAAA,SAAA,GA6FA,SAAA,EAAA,GACA,KAAA,OAAA,EAAA,QAAA,MACA,KAAA,IAAA,EAAA,IACA,KAAA,KAAA,EAAA,GACA,KAAA,KAAA,EAAA,GACA,KAAA,OAAA,IAAA,EAAA,MACA,KAAA,UAAA,IAAA,EAAA,KAAA,EAAA,KAAA,KACA,KAAA,MAAA,EAAA,MACA,KAAA,SAAA,EAAA,SACA,KAAA,eAAA,EAAA,eACA,KAAA,WAAA,EAAA,WACA,KAAA,eAAA,EAAA,eAGA,KAAA,IAAA,EAAA,IACA,KAAA,IAAA,EAAA,IACA,KAAA,WAAA,EAAA,WACA,KAAA,KAAA,EAAA,KACA,KAAA,GAAA,EAAA,GACA,KAAA,QAAA,EAAA,QACA,KAAA,mBAAA,EAAA,mBAGA,KAAA,aAAA,EAAA,aAEA,KAAA,SAyOA,GA/XA,OAAA,QAAA,EACA,OAAA,QAAA,QAAA,EAuCA,EAAA,EAAA,GAMA,EAAA,UAAA,gBAAA,EASA,EAAA,UAAA,QAAA,SAAA,GAsBA,OArBA,EAAA,GAAA,IACA,IAAA,KAAA,MACA,EAAA,GAAA,KAAA,GACA,EAAA,GAAA,KAAA,GACA,EAAA,MAAA,KAAA,QAAA,EACA,EAAA,eAAA,KAAA,eACA,EAAA,WAAA,KAAA,WAGA,EAAA,IAAA,KAAA,IACA,EAAA,IAAA,KAAA,IACA,EAAA,WAAA,KAAA,WACA,EAAA,KAAA,KAAA,KACA,EAAA,GAAA,KAAA,GACA,EAAA,QAAA,KAAA,QACA,EAAA,mBAAA,KAAA,mBACA,EAAA,eAAA,KAAA,eAGA,EAAA,aAAA,KAAA,aAEA,IAAA,EAAA,IAWA,EAAA,UAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,iBAAA,QAAA,IAAA,EACA,EAAA,KAAA,QAAA,CAAA,OAAA,OAAA,KAAA,EAAA,SAAA,IACA,EAAA,KACA,EAAA,GAAA,UAAA,GACA,EAAA,GAAA,QAAA,SAAA,GACA,EAAA,QAAA,iBAAA,KAEA,KAAA,QAAA,GASA,EAAA,UAAA,OAAA,WACA,EAAA,YACA,IAAA,EAAA,KAAA,UACA,EAAA,KACA,EAAA,GAAA,OAAA,SAAA,GACA,EAAA,OAAA,KAEA,EAAA,GAAA,QAAA,SAAA,GACA,EAAA,QAAA,iBAAA,KAEA,KAAA,QAAA,GA0CA,EAAA,EAAA,WAQA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,CAAA,MAAA,KAAA,MAAA,QAAA,KAAA,GAAA,QAAA,KAAA,GAAA,WAAA,KAAA,YAGA,EAAA,IAAA,KAAA,IACA,EAAA,IAAA,KAAA,IACA,EAAA,WAAA,KAAA,WACA,EAAA,KAAA,KAAA,KACA,EAAA,GAAA,KAAA,GACA,EAAA,QAAA,KAAA,QACA,EAAA,mBAAA,KAAA,mBAEA,IAAA,EAAA,KAAA,IAAA,IAAA,EAAA,GACA,EAAA,KAEA,IACA,EAAA,kBAAA,KAAA,OAAA,KAAA,KACA,EAAA,KAAA,KAAA,OAAA,KAAA,IAAA,KAAA,OACA,IACA,GAAA,KAAA,aAEA,IAAA,IAAA,KADA,EAAA,uBAAA,EAAA,uBAAA,GACA,KAAA,aACA,KAAA,aAAA,eAAA,IACA,EAAA,iBAAA,EAAA,KAAA,aAAA,IAIA,MAAA,IAEA,GAAA,SAAA,KAAA,OACA,IACA,KAAA,SACA,EAAA,iBAAA,eAAA,4BAEA,EAAA,iBAAA,eAAA,4BAEA,MAAA,IAGA,IACA,EAAA,iBAAA,SAAA,OACA,MAAA,IAGA,oBAAA,IACA,EAAA,iBAAA,GAGA,KAAA,iBACA,EAAA,QAAA,KAAA,gBAGA,KAAA,UACA,EAAA,OAAA,WACA,EAAA,UAEA,EAAA,QAAA,WACA,EAAA,QAAA,EAAA,gBAGA,EAAA,mBAAA,WACA,GAAA,IAAA,EAAA,WACA,IACA,IAAA,EAAA,EAAA,kBAAA,gBACA,EAAA,gBAAA,6BAAA,IACA,EAAA,aAAA,eAEA,MAAA,IAEA,IAAA,EAAA,aACA,MAAA,EAAA,QAAA,OAAA,EAAA,OACA,EAAA,SAIA,WAAA,WACA,EAAA,QAAA,EAAA,SACA,KAKA,EAAA,cAAA,KAAA,MACA,EAAA,KAAA,KAAA,MACA,MAAA,GAOA,YAHA,WAAA,WACA,EAAA,QAAA,IACA,GAIA,oBAAA,WACA,KAAA,MAAA,EAAA,gBACA,EAAA,SAAA,KAAA,OAAA,OAUA,EAAA,UAAA,UAAA,WACA,KAAA,KAAA,WACA,KAAA,WASA,EAAA,UAAA,OAAA,SAAA,GACA,KAAA,KAAA,OAAA,GACA,KAAA,aASA,EAAA,UAAA,QAAA,SAAA,GACA,KAAA,KAAA,QAAA,GACA,KAAA,SAAA,IASA,EAAA,UAAA,QAAA,SAAA,GACA,QAAA,IAAA,KAAA,KAAA,OAAA,KAAA,IAAA,CAUA,GANA,KAAA,SACA,KAAA,IAAA,OAAA,KAAA,IAAA,QAAA,EAEA,KAAA,IAAA,mBAAA,EAGA,EACA,IACA,KAAA,IAAA,QACA,MAAA,IAGA,oBAAA,iBACA,EAAA,SAAA,KAAA,OAGA,KAAA,IAAA,OASA,EAAA,UAAA,OAAA,WACA,IAAA,EACA,IACA,IAAA,EACA,IACA,EAAA,KAAA,IAAA,kBAAA,gBACA,MAAA,IAEA,EADA,6BAAA,GACA,KAAA,IAAA,UAEA,KAAA,IAAA,aAEA,MAAA,GACA,KAAA,QAAA,GAEA,MAAA,GACA,KAAA,OAAA,IAUA,EAAA,UAAA,OAAA,WACA,MAAA,oBAAA,iBAAA,KAAA,IAAA,KAAA,YASA,EAAA,UAAA,MAAA,WACA,KAAA,WASA,EAAA,cAAA,EACA,EAAA,SAAA,GAEA,oBAAA,SACA,GAAA,mBAAA,YACA,YAAA,WAAA,QACA,GAAA,mBAAA,iBAAA,CACA,IAAA,EAAA,eAAA,KAAA,WAAA,SACA,iBAAA,EAAA,GAAA,GAIA,SAAA,IACA,IAAA,IAAA,KAAA,EAAA,SACA,EAAA,SAAA,eAAA,IACA,EAAA,SAAA,GAAA;;;AC5KA,IAAA,EAAA,UAAA,GA3OA,EAAA,QAAA,aACA,EAAA,QAAA,qBAMA,OAAA,QAAA,EAMA,IAOA,EAPA,EAAA,MACA,EAAA,OAYA,SAAA,KAKA,SAAA,IACA,MAAA,oBAAA,KAAA,KACA,oBAAA,OAAA,YACA,IAAA,EAAA,EAAA,GAUA,SAAA,EAAA,GAOA,GANA,EAAA,KAAA,KAAA,GAEA,KAAA,MAAA,KAAA,OAAA,IAIA,EAAA,CAEA,IAAA,EAAA,IACA,EAAA,EAAA,OAAA,EAAA,QAAA,GAIA,KAAA,MAAA,EAAA,OAGA,IAAA,EAAA,KACA,EAAA,KAAA,SAAA,GACA,EAAA,OAAA,KAIA,KAAA,MAAA,EAAA,KAAA,MAGA,mBAAA,kBACA,iBAAA,eAAA,WACA,EAAA,SAAA,EAAA,OAAA,QAAA,KACA,GAQA,EAAA,EAAA,GAMA,EAAA,UAAA,gBAAA,EAQA,EAAA,UAAA,QAAA,WACA,KAAA,SACA,KAAA,OAAA,WAAA,YAAA,KAAA,QACA,KAAA,OAAA,MAGA,KAAA,OACA,KAAA,KAAA,WAAA,YAAA,KAAA,MACA,KAAA,KAAA,KACA,KAAA,OAAA,MAGA,EAAA,UAAA,QAAA,KAAA,OASA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KACA,EAAA,SAAA,cAAA,UAEA,KAAA,SACA,KAAA,OAAA,WAAA,YAAA,KAAA,QACA,KAAA,OAAA,MAGA,EAAA,OAAA,EACA,EAAA,IAAA,KAAA,MACA,EAAA,QAAA,SAAA,GACA,EAAA,QAAA,mBAAA,IAGA,IAAA,EAAA,SAAA,qBAAA,UAAA,GACA,EACA,EAAA,WAAA,aAAA,EAAA,IAEA,SAAA,MAAA,SAAA,MAAA,YAAA,GAEA,KAAA,OAAA,EAEA,oBAAA,WAAA,SAAA,KAAA,UAAA,YAGA,WAAA,WACA,IAAA,EAAA,SAAA,cAAA,UACA,SAAA,KAAA,YAAA,GACA,SAAA,KAAA,YAAA,IACA,MAYA,EAAA,UAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,KAEA,IAAA,KAAA,KAAA,CACA,IAGA,EAHA,EAAA,SAAA,cAAA,QACA,EAAA,SAAA,cAAA,YACA,EAAA,KAAA,SAAA,cAAA,KAAA,MAGA,EAAA,UAAA,WACA,EAAA,MAAA,SAAA,WACA,EAAA,MAAA,IAAA,UACA,EAAA,MAAA,KAAA,UACA,EAAA,OAAA,EACA,EAAA,OAAA,OACA,EAAA,aAAA,iBAAA,SACA,EAAA,KAAA,IACA,EAAA,YAAA,GACA,SAAA,KAAA,YAAA,GAEA,KAAA,KAAA,EACA,KAAA,KAAA,EAKA,SAAA,IACA,IACA,IAGA,SAAA,IACA,GAAA,EAAA,OACA,IACA,EAAA,KAAA,YAAA,EAAA,QACA,MAAA,GACA,EAAA,QAAA,qCAAA,GAIA,IAEA,IAAA,EAAA,oCAAA,EAAA,SAAA,KACA,EAAA,SAAA,cAAA,GACA,MAAA,IACA,EAAA,SAAA,cAAA,WACA,KAAA,EAAA,SACA,EAAA,IAAA,eAGA,EAAA,GAAA,EAAA,SAEA,EAAA,KAAA,YAAA,GACA,EAAA,OAAA,EA7BA,KAAA,KAAA,OAAA,KAAA,MAgCA,IAIA,EAAA,EAAA,QAAA,EAAA,QACA,KAAA,KAAA,MAAA,EAAA,QAAA,EAAA,OAEA,IACA,KAAA,KAAA,SACA,MAAA,IAEA,KAAA,OAAA,YACA,KAAA,OAAA,mBAAA,WACA,aAAA,EAAA,OAAA,YACA,KAIA,KAAA,OAAA,OAAA;;;ACgDA,IAlRA,EAAA,EAkRA,EAAA,QAAA,UAAA,OAxRA,EAAA,QAAA,gBACA,EAAA,QAAA,oBACA,EAAA,QAAA,WACA,EAAA,QAAA,qBACA,EAAA,QAAA,SACA,EAAA,QAAA,QAAA,CAAA,8BAEA,GAAA,oBAAA,KACA,IACA,EAAA,QAAA,MACA,MAAA,SAEA,EAAA,KAAA,WAAA,KAAA,aASA,IAAA,EAAA,GAAA,EAeA,SAAA,EAAA,GACA,GAAA,EAAA,cAEA,KAAA,gBAAA,GAEA,KAAA,kBAAA,EAAA,kBACA,KAAA,sBAAA,IAAA,EAAA,UACA,KAAA,UAAA,EAAA,UACA,KAAA,wBACA,EAAA,GAEA,EAAA,KAAA,KAAA,GApBA,OAAA,QAAA,EA2BA,EAAA,EAAA,GAQA,EAAA,UAAA,KAAA,YAMA,EAAA,UAAA,gBAAA,EAQA,EAAA,UAAA,OAAA,WACA,GAAA,KAAA,QAAA,CAKA,IAAA,EAAA,KAAA,MACA,EAAA,KAAA,UACA,EAAA,CACA,MAAA,KAAA,MACA,kBAAA,KAAA,mBAIA,EAAA,IAAA,KAAA,IACA,EAAA,IAAA,KAAA,IACA,EAAA,WAAA,KAAA,WACA,EAAA,KAAA,KAAA,KACA,EAAA,GAAA,KAAA,GACA,EAAA,QAAA,KAAA,QACA,EAAA,mBAAA,KAAA,mBACA,KAAA,eACA,EAAA,QAAA,KAAA,cAEA,KAAA,eACA,EAAA,aAAA,KAAA,cAGA,IACA,KAAA,GAAA,KAAA,wBAAA,KAAA,cAAA,EAAA,IAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,GACA,MAAA,GACA,OAAA,KAAA,KAAA,QAAA,QAGA,IAAA,KAAA,GAAA,aACA,KAAA,gBAAA,GAGA,KAAA,GAAA,UAAA,KAAA,GAAA,SAAA,QACA,KAAA,gBAAA,EACA,KAAA,GAAA,WAAA,cAEA,KAAA,GAAA,WAAA,cAGA,KAAA,sBASA,EAAA,UAAA,kBAAA,WACA,IAAA,EAAA,KAEA,KAAA,GAAA,OAAA,WACA,EAAA,UAEA,KAAA,GAAA,QAAA,WACA,EAAA,WAEA,KAAA,GAAA,UAAA,SAAA,GACA,EAAA,OAAA,EAAA,OAEA,KAAA,GAAA,QAAA,SAAA,GACA,EAAA,QAAA,kBAAA,KAWA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,KACA,KAAA,UAAA,EAKA,IADA,IAAA,EAAA,EAAA,OACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KACA,SAAA,GACA,EAAA,aAAA,EAAA,EAAA,eAAA,SAAA,GACA,IAAA,EAAA,sBAAA,CAEA,IAAA,EAAA,GAKA,GAJA,EAAA,UACA,EAAA,SAAA,EAAA,QAAA,UAGA,EAAA,mBACA,iBAAA,EAAA,EAAA,WAAA,GAAA,EAAA,QACA,EAAA,kBAAA,YACA,EAAA,UAAA,GAQA,IACA,EAAA,sBAEA,EAAA,GAAA,KAAA,GAEA,EAAA,GAAA,KAAA,EAAA,GAEA,MAAA,GACA,EAAA,2CAGA,GAAA,MA/BA,CAiCA,EAAA,IAGA,SAAA,IACA,EAAA,KAAA,SAIA,WAAA,WACA,EAAA,UAAA,EACA,EAAA,KAAA,UACA,KAUA,EAAA,UAAA,QAAA,WACA,EAAA,UAAA,QAAA,KAAA,OASA,EAAA,UAAA,QAAA,gBACA,IAAA,KAAA,IACA,KAAA,GAAA,SAUA,EAAA,UAAA,IAAA,WACA,IAAA,EAAA,KAAA,OAAA,GACA,EAAA,KAAA,OAAA,MAAA,KACA,EAAA,GA0BA,OAvBA,KAAA,OAAA,QAAA,GAAA,MAAA,OAAA,KAAA,OACA,OAAA,GAAA,KAAA,OAAA,KAAA,SACA,EAAA,IAAA,KAAA,MAIA,KAAA,oBACA,EAAA,KAAA,gBAAA,KAIA,KAAA,iBACA,EAAA,IAAA,IAGA,EAAA,EAAA,OAAA,IAGA,SACA,EAAA,IAAA,GAIA,EAAA,QADA,IAAA,KAAA,SAAA,QAAA,KACA,IAAA,KAAA,SAAA,IAAA,KAAA,UAAA,EAAA,KAAA,KAAA,GAUA,EAAA,UAAA,MAAA,WACA,SAAA,GAAA,iBAAA,GAAA,KAAA,OAAA,EAAA,UAAA;;ACtRA,IAAA,EAAA,QAAA,sBACA,EAAA,QAAA,iBACA,EAAA,QAAA,mBACA,EAAA,QAAA,eAgBA,SAAA,EAAA,GACA,IACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,EAAA,MAEA,GAAA,oBAAA,SAAA,CACA,IAAA,EAAA,WAAA,SAAA,SACA,EAAA,SAAA,KAGA,IACA,EAAA,EAAA,IAAA,IAGA,EAAA,EAAA,WAAA,SAAA,UAAA,IAAA,EAAA,KACA,EAAA,EAAA,SAAA,EAOA,GAJA,EAAA,QAAA,EACA,EAAA,QAAA,EAGA,SAFA,IAAA,EAAA,KAEA,EAAA,WACA,OAAA,IAAA,EAAA,GAEA,IAAA,EAAA,MAAA,IAAA,MAAA,kBACA,OAAA,IAAA,EAAA,GArCA,QAAA,QAAA,EACA,QAAA,UAAA;;ACbA,IAAA,EAAA,GAAA,QAEA,OAAA,QAAA,SAAA,EAAA,GACA,GAAA,EAAA,OAAA,EAAA,QAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,SAAA,EACA,GAAA,EAAA,KAAA,EAAA,OAAA,EAEA,OAAA;;ACJA,IAAA,EAAA,QAAA,sBACA,EAAA,QAAA,qBACA,EAAA,QAAA,QAAA,CAAA,2BACA,EAAA,QAAA,WACA,EAAA,QAAA,oBACA,EAAA,QAAA,YACA,EAAA,QAAA,WAgBA,SAAA,EAAA,EAAA,GACA,KAAA,gBAAA,GAAA,OAAA,IAAA,EAAA,EAAA,GAEA,EAAA,GAAA,GAEA,GAAA,iBAAA,IACA,EAAA,EACA,EAAA,MAGA,GACA,EAAA,EAAA,GACA,EAAA,SAAA,EAAA,KACA,EAAA,OAAA,UAAA,EAAA,UAAA,QAAA,EAAA,SACA,EAAA,KAAA,EAAA,KACA,EAAA,QAAA,EAAA,MAAA,EAAA,QACA,EAAA,OACA,EAAA,SAAA,EAAA,EAAA,MAAA,MAGA,KAAA,OAAA,MAAA,EAAA,OAAA,EAAA,OACA,oBAAA,UAAA,WAAA,SAAA,SAEA,EAAA,WAAA,EAAA,OAEA,EAAA,KAAA,KAAA,OAAA,MAAA,MAGA,KAAA,MAAA,EAAA,QAAA,EACA,KAAA,SAAA,EAAA,WACA,oBAAA,SAAA,SAAA,SAAA,aACA,KAAA,KAAA,EAAA,OAAA,oBAAA,UAAA,SAAA,KACA,SAAA,KACA,KAAA,OAAA,IAAA,IACA,KAAA,MAAA,EAAA,OAAA,GACA,iBAAA,KAAA,QAAA,KAAA,MAAA,EAAA,OAAA,KAAA,QACA,KAAA,SAAA,IAAA,EAAA,QACA,KAAA,MAAA,EAAA,MAAA,cAAA,QAAA,MAAA,IAAA,IACA,KAAA,aAAA,EAAA,WACA,KAAA,OAAA,IAAA,EAAA,MACA,KAAA,cAAA,EAAA,YACA,KAAA,aAAA,EAAA,WACA,KAAA,eAAA,EAAA,gBAAA,IACA,KAAA,kBAAA,EAAA,kBACA,KAAA,WAAA,EAAA,YAAA,CAAA,UAAA,aACA,KAAA,iBAAA,EAAA,kBAAA,GACA,KAAA,WAAA,GACA,KAAA,YAAA,GACA,KAAA,cAAA,EACA,KAAA,WAAA,EAAA,YAAA,IACA,KAAA,gBAAA,EAAA,kBAAA,EACA,KAAA,WAAA,KACA,KAAA,mBAAA,EAAA,mBACA,KAAA,mBAAA,IAAA,EAAA,oBAAA,EAAA,mBAAA,KAEA,IAAA,KAAA,oBAAA,KAAA,kBAAA,IACA,KAAA,mBAAA,MAAA,KAAA,kBAAA,YACA,KAAA,kBAAA,UAAA,MAIA,KAAA,IAAA,EAAA,KAAA,KACA,KAAA,IAAA,EAAA,KAAA,KACA,KAAA,WAAA,EAAA,YAAA,KACA,KAAA,KAAA,EAAA,MAAA,KACA,KAAA,GAAA,EAAA,IAAA,KACA,KAAA,QAAA,EAAA,SAAA,KACA,KAAA,wBAAA,IAAA,EAAA,oBAAA,EAAA,mBACA,KAAA,YAAA,EAAA,UAGA,KAAA,cAAA,oBAAA,WAAA,iBAAA,UAAA,SAAA,gBAAA,UAAA,QAAA,eAGA,oBAAA,MAAA,KAAA,iBACA,EAAA,cAAA,OAAA,KAAA,EAAA,cAAA,OAAA,IACA,KAAA,aAAA,EAAA,cAGA,EAAA,eACA,KAAA,aAAA,EAAA,eAKA,KAAA,GAAA,KACA,KAAA,SAAA,KACA,KAAA,aAAA,KACA,KAAA,YAAA,KAGA,KAAA,kBAAA,KACA,KAAA,iBAAA,KAEA,KAAA,OAuFA,SAAA,EAAA,GACA,IAAA,EAAA,GACA,IAAA,IAAA,KAAA,EACA,EAAA,eAAA,KACA,EAAA,GAAA,EAAA,IAGA,OAAA,EAtMA,OAAA,QAAA,EA2GA,EAAA,uBAAA,EAMA,EAAA,EAAA,WAQA,EAAA,SAAA,EAAA,SAOA,EAAA,OAAA,EACA,EAAA,UAAA,QAAA,eACA,EAAA,WAAA,QAAA,sBACA,EAAA,OAAA,QAAA,oBAUA,EAAA,UAAA,gBAAA,SAAA,GACA,EAAA,0BAAA,GACA,IAAA,EAAA,EAAA,KAAA,OAGA,EAAA,IAAA,EAAA,SAGA,EAAA,UAAA,EAGA,IAAA,EAAA,KAAA,iBAAA,IAAA,GAoCA,OAjCA,KAAA,KAAA,EAAA,IAAA,KAAA,IAEA,IAAA,EAAA,GAAA,CACA,MAAA,EACA,OAAA,KACA,MAAA,EAAA,OAAA,KAAA,MACA,SAAA,EAAA,UAAA,KAAA,SACA,KAAA,EAAA,MAAA,KAAA,KACA,OAAA,EAAA,QAAA,KAAA,OACA,KAAA,EAAA,MAAA,KAAA,KACA,WAAA,EAAA,YAAA,KAAA,WACA,MAAA,EAAA,OAAA,KAAA,MACA,YAAA,EAAA,aAAA,KAAA,YACA,WAAA,EAAA,YAAA,KAAA,WACA,kBAAA,EAAA,mBAAA,KAAA,kBACA,eAAA,EAAA,gBAAA,KAAA,eACA,WAAA,EAAA,YAAA,KAAA,WACA,IAAA,EAAA,KAAA,KAAA,IACA,IAAA,EAAA,KAAA,KAAA,IACA,WAAA,EAAA,YAAA,KAAA,WACA,KAAA,EAAA,MAAA,KAAA,KACA,GAAA,EAAA,IAAA,KAAA,GACA,QAAA,EAAA,SAAA,KAAA,QACA,mBAAA,EAAA,oBAAA,KAAA,mBACA,kBAAA,EAAA,mBAAA,KAAA,kBACA,aAAA,EAAA,cAAA,KAAA,aACA,UAAA,EAAA,WAAA,KAAA,UACA,aAAA,EAAA,cAAA,KAAA,aACA,eAAA,EAAA,gBAAA,KAAA,eACA,UAAA,EAAA,gBAAA,EACA,cAAA,KAAA,iBAqBA,EAAA,UAAA,KAAA,WACA,IAAA,EACA,GAAA,KAAA,iBAAA,EAAA,wBAAA,IAAA,KAAA,WAAA,QAAA,aACA,EAAA,gBACA,CAAA,GAAA,IAAA,KAAA,WAAA,OAAA,CAEA,IAAA,EAAA,KAIA,YAHA,WAAA,WACA,EAAA,KAAA,QAAA,4BACA,GAGA,EAAA,KAAA,WAAA,GAEA,KAAA,WAAA,UAGA,IACA,EAAA,KAAA,gBAAA,GACA,MAAA,GAGA,OAFA,KAAA,WAAA,aACA,KAAA,OAIA,EAAA,OACA,KAAA,aAAA,IASA,EAAA,UAAA,aAAA,SAAA,GACA,EAAA,uBAAA,EAAA,MACA,IAAA,EAAA,KAEA,KAAA,YACA,EAAA,iCAAA,KAAA,UAAA,MACA,KAAA,UAAA,sBAIA,KAAA,UAAA,EAGA,EACA,GAAA,QAAA,WACA,EAAA,YAEA,GAAA,SAAA,SAAA,GACA,EAAA,SAAA,KAEA,GAAA,QAAA,SAAA,GACA,EAAA,QAAA,KAEA,GAAA,QAAA,WACA,EAAA,QAAA,sBAWA,EAAA,UAAA,MAAA,SAAA,GACA,EAAA,yBAAA,GACA,IAAA,EAAA,KAAA,gBAAA,EAAA,CAAA,MAAA,IACA,GAAA,EACA,EAAA,KAIA,SAAA,IACA,GAAA,EAAA,mBAAA,CACA,IAAA,GAAA,KAAA,gBAAA,EAAA,UAAA,eACA,EAAA,GAAA,EAEA,IAEA,EAAA,8BAAA,GACA,EAAA,KAAA,CAAA,CAAA,KAAA,OAAA,KAAA,WACA,EAAA,KAAA,SAAA,SAAA,GACA,IAAA,EACA,GAAA,SAAA,EAAA,MAAA,UAAA,EAAA,KAAA,CAIA,GAHA,EAAA,4BAAA,GACA,EAAA,WAAA,EACA,EAAA,KAAA,YAAA,IACA,EAAA,OACA,EAAA,sBAAA,cAAA,EAAA,KAEA,EAAA,iCAAA,EAAA,UAAA,MACA,EAAA,UAAA,MAAA,WACA,GACA,WAAA,EAAA,aACA,EAAA,iDAEA,IAEA,EAAA,aAAA,GACA,EAAA,KAAA,CAAA,CAAA,KAAA,aACA,EAAA,KAAA,UAAA,GACA,EAAA,KACA,EAAA,WAAA,EACA,EAAA,eAEA,CACA,EAAA,8BAAA,GACA,IAAA,EAAA,IAAA,MAAA,eACA,EAAA,UAAA,EAAA,KACA,EAAA,KAAA,eAAA,OAKA,SAAA,IACA,IAGA,GAAA,EAEA,IAEA,EAAA,QACA,EAAA,MAIA,SAAA,EAAA,GACA,IAAA,EAAA,IAAA,MAAA,gBAAA,GACA,EAAA,UAAA,EAAA,KAEA,IAEA,EAAA,mDAAA,EAAA,GAEA,EAAA,KAAA,eAAA,GAGA,SAAA,IACA,EAAA,oBAIA,SAAA,IACA,EAAA,iBAIA,SAAA,EAAA,GACA,GAAA,EAAA,OAAA,EAAA,OACA,EAAA,6BAAA,EAAA,KAAA,EAAA,MACA,KAKA,SAAA,IACA,EAAA,eAAA,OAAA,GACA,EAAA,eAAA,QAAA,GACA,EAAA,eAAA,QAAA,GACA,EAAA,eAAA,QAAA,GACA,EAAA,eAAA,YAAA,GA3FA,EAAA,uBAAA,EA8FA,EAAA,KAAA,OAAA,GACA,EAAA,KAAA,QAAA,GACA,EAAA,KAAA,QAAA,GAEA,KAAA,KAAA,QAAA,GACA,KAAA,KAAA,YAAA,GAEA,EAAA,QASA,EAAA,UAAA,OAAA,WASA,GARA,EAAA,eACA,KAAA,WAAA,OACA,EAAA,sBAAA,cAAA,KAAA,UAAA,KACA,KAAA,KAAA,QACA,KAAA,QAIA,SAAA,KAAA,YAAA,KAAA,SAAA,KAAA,UAAA,MAAA,CACA,EAAA,2BACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,SAAA,OAAA,EAAA,EAAA,IACA,KAAA,MAAA,KAAA,SAAA,MAWA,EAAA,UAAA,SAAA,SAAA,GACA,GAAA,YAAA,KAAA,YAAA,SAAA,KAAA,YACA,YAAA,KAAA,WAQA,OAPA,EAAA,uCAAA,EAAA,KAAA,EAAA,MAEA,KAAA,KAAA,SAAA,GAGA,KAAA,KAAA,aAEA,EAAA,MACA,IAAA,OACA,KAAA,YAAA,KAAA,MAAA,EAAA,OACA,MAEA,IAAA,OACA,KAAA,UACA,KAAA,KAAA,QACA,MAEA,IAAA,QACA,IAAA,EAAA,IAAA,MAAA,gBACA,EAAA,KAAA,EAAA,KACA,KAAA,QAAA,GACA,MAEA,IAAA,UACA,KAAA,KAAA,OAAA,EAAA,MACA,KAAA,KAAA,UAAA,EAAA,WAIA,EAAA,8CAAA,KAAA,aAWA,EAAA,UAAA,YAAA,SAAA,GACA,KAAA,KAAA,YAAA,GACA,KAAA,GAAA,EAAA,IACA,KAAA,UAAA,MAAA,IAAA,EAAA,IACA,KAAA,SAAA,KAAA,eAAA,EAAA,UACA,KAAA,aAAA,EAAA,aACA,KAAA,YAAA,EAAA,YACA,KAAA,SAEA,WAAA,KAAA,aACA,KAAA,UAGA,KAAA,eAAA,YAAA,KAAA,aACA,KAAA,GAAA,YAAA,KAAA,eASA,EAAA,UAAA,YAAA,SAAA,GACA,aAAA,KAAA,kBACA,IAAA,EAAA,KACA,EAAA,iBAAA,WAAA,WACA,WAAA,EAAA,YACA,EAAA,QAAA,iBACA,GAAA,EAAA,aAAA,EAAA,cAUA,EAAA,UAAA,QAAA,WACA,IAAA,EAAA,KACA,aAAA,EAAA,mBACA,EAAA,kBAAA,WAAA,WACA,EAAA,mDAAA,EAAA,aACA,EAAA,OACA,EAAA,YAAA,EAAA,cACA,EAAA,eASA,EAAA,UAAA,KAAA,WACA,IAAA,EAAA,KACA,KAAA,WAAA,OAAA,WACA,EAAA,KAAA,WAUA,EAAA,UAAA,QAAA,WACA,KAAA,YAAA,OAAA,EAAA,KAAA,eAKA,KAAA,cAAA,EAEA,IAAA,KAAA,YAAA,OACA,KAAA,KAAA,SAEA,KAAA,SAUA,EAAA,UAAA,MAAA,WACA,WAAA,KAAA,YAAA,KAAA,UAAA,WACA,KAAA,WAAA,KAAA,YAAA,SACA,EAAA,gCAAA,KAAA,YAAA,QACA,KAAA,UAAA,KAAA,KAAA,aAGA,KAAA,cAAA,KAAA,YAAA,OACA,KAAA,KAAA,WAcA,EAAA,UAAA,MACA,EAAA,UAAA,KAAA,SAAA,EAAA,EAAA,GAEA,OADA,KAAA,WAAA,UAAA,EAAA,EAAA,GACA,MAaA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,EAAA,GAWA,GAVA,mBAAA,IACA,EAAA,EACA,OAAA,GAGA,mBAAA,IACA,EAAA,EACA,EAAA,MAGA,YAAA,KAAA,YAAA,WAAA,KAAA,WAAA,EAIA,EAAA,GAAA,IACA,UAAA,IAAA,EAAA,SAEA,IAAA,EAAA,CACA,KAAA,EACA,KAAA,EACA,QAAA,GAEA,KAAA,KAAA,eAAA,GACA,KAAA,YAAA,KAAA,GACA,GAAA,KAAA,KAAA,QAAA,GACA,KAAA,UASA,EAAA,UAAA,MAAA,WACA,GAAA,YAAA,KAAA,YAAA,SAAA,KAAA,WAAA,CACA,KAAA,WAAA,UAEA,IAAA,EAAA,KAEA,KAAA,YAAA,OACA,KAAA,KAAA,QAAA,WACA,KAAA,UACA,IAEA,MAGA,KAAA,UACA,IAEA,IAIA,SAAA,IACA,EAAA,QAAA,gBACA,EAAA,+CACA,EAAA,UAAA,QAGA,SAAA,IACA,EAAA,eAAA,UAAA,GACA,EAAA,eAAA,eAAA,GACA,IAGA,SAAA,IAEA,EAAA,KAAA,UAAA,GACA,EAAA,KAAA,eAAA,GAGA,OAAA,MASA,EAAA,UAAA,QAAA,SAAA,GACA,EAAA,kBAAA,GACA,EAAA,uBAAA,EACA,KAAA,KAAA,QAAA,GACA,KAAA,QAAA,kBAAA,IASA,EAAA,UAAA,QAAA,SAAA,EAAA,GACA,GAAA,YAAA,KAAA,YAAA,SAAA,KAAA,YAAA,YAAA,KAAA,WAAA,CACA,EAAA,iCAAA,GAIA,aAAA,KAAA,mBACA,aAAA,KAAA,kBAGA,KAAA,UAAA,mBAAA,SAGA,KAAA,UAAA,QAGA,KAAA,UAAA,qBAGA,KAAA,WAAA,SAGA,KAAA,GAAA,KAGA,KAAA,KAAA,QAAA,EAAA,GAtBA,KA0BA,YAAA,GA1BA,KA2BA,cAAA,IAYA,EAAA,UAAA,eAAA,SAAA,GAEA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KACA,EAAA,KAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAEA,OAAA;;ACvuBA,OAAA,QAAA,QAAA,YAQA,OAAA,QAAA,OAAA,QAAA;;ACPA,SAAA,EAAA,EAAA,GAKA,IAJA,IAAA,EAAA,GAIA,GAFA,EAAA,GAAA,IAEA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,GAAA,EAAA,GAGA,OAAA,EAXA,OAAA,QAAA;;ACgBA,SAAA,EAAA,EAAA,EAAA,GAEA,OADA,EAAA,GAAA,EAAA,GACA,CACA,QAAA,WACA,EAAA,eAAA,EAAA,KAfA,OAAA,QAAA;;ACDA,IAAA,EAAA,GAAA,MAWA,OAAA,QAAA,SAAA,EAAA,GAEA,GADA,iBAAA,IAAA,EAAA,EAAA,IACA,mBAAA,EAAA,MAAA,IAAA,MAAA,8BACA,IAAA,EAAA,EAAA,KAAA,UAAA,GACA,OAAA,WACA,OAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,KAAA;;ACfA,IAAA,EAAA,QAAA,oBACA,EAAA,QAAA,qBACA,EAAA,QAAA,YACA,EAAA,QAAA,QACA,EAAA,QAAA,kBACA,EAAA,QAAA,QAAA,CAAA,2BACA,EAAA,QAAA,WACA,EAAA,QAAA,eAMA,OAAA,QAAA,QAAA,EASA,IAAA,EAAA,CACA,QAAA,EACA,cAAA,EACA,gBAAA,EACA,WAAA,EACA,WAAA,EACA,MAAA,EACA,UAAA,EACA,kBAAA,EACA,iBAAA,EACA,gBAAA,EACA,aAAA,EACA,KAAA,EACA,KAAA,GAOA,EAAA,EAAA,UAAA,KAQA,SAAA,EAAA,EAAA,EAAA,GACA,KAAA,GAAA,EACA,KAAA,IAAA,EACA,KAAA,KAAA,KACA,KAAA,IAAA,EACA,KAAA,KAAA,GACA,KAAA,cAAA,GACA,KAAA,WAAA,GACA,KAAA,WAAA,EACA,KAAA,cAAA,EACA,KAAA,MAAA,GACA,GAAA,EAAA,QACA,KAAA,MAAA,EAAA,OAEA,KAAA,GAAA,aAAA,KAAA,OAOA,EAAA,EAAA,WAQA,EAAA,UAAA,UAAA,WACA,IAAA,KAAA,KAAA,CAEA,IAAA,EAAA,KAAA,GACA,KAAA,KAAA,CACA,EAAA,EAAA,OAAA,EAAA,KAAA,WACA,EAAA,EAAA,SAAA,EAAA,KAAA,aACA,EAAA,EAAA,QAAA,EAAA,KAAA,eAUA,EAAA,UAAA,KACA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,UAAA,MAEA,KAAA,YACA,KAAA,GAAA,OACA,SAAA,KAAA,GAAA,YAAA,KAAA,SACA,KAAA,KAAA,cACA,OAUA,EAAA,UAAA,KAAA,WACA,IAAA,EAAA,EAAA,WAGA,OAFA,EAAA,QAAA,WACA,KAAA,KAAA,MAAA,KAAA,GACA,MAYA,EAAA,UAAA,KAAA,SAAA,GACA,GAAA,EAAA,eAAA,GAEA,OADA,EAAA,MAAA,KAAA,WACA,KAGA,IAAA,EAAA,EAAA,WACA,EAAA,CACA,WAAA,IAAA,KAAA,MAAA,OAAA,KAAA,MAAA,OAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MACA,KAAA,EAGA,QAAA,IAkBA,OAjBA,EAAA,QAAA,UAAA,KAAA,QAAA,IAAA,KAAA,MAAA,SAGA,mBAAA,EAAA,EAAA,OAAA,KACA,EAAA,iCAAA,KAAA,KACA,KAAA,KAAA,KAAA,KAAA,EAAA,MACA,EAAA,GAAA,KAAA,OAGA,KAAA,UACA,KAAA,OAAA,GAEA,KAAA,WAAA,KAAA,GAGA,KAAA,MAAA,GAEA,MAUA,EAAA,UAAA,OAAA,SAAA,GACA,EAAA,IAAA,KAAA,IACA,KAAA,GAAA,OAAA,IASA,EAAA,UAAA,OAAA,WAIA,GAHA,EAAA,kCAGA,MAAA,KAAA,IACA,GAAA,KAAA,MAAA,CACA,IAAA,EAAA,iBAAA,KAAA,MAAA,EAAA,OAAA,KAAA,OAAA,KAAA,MACA,EAAA,uCAAA,GACA,KAAA,OAAA,CAAA,KAAA,EAAA,QAAA,MAAA,SAEA,KAAA,OAAA,CAAA,KAAA,EAAA,WAYA,EAAA,UAAA,QAAA,SAAA,GACA,EAAA,aAAA,GACA,KAAA,WAAA,EACA,KAAA,cAAA,SACA,KAAA,GACA,KAAA,KAAA,aAAA,IAUA,EAAA,UAAA,SAAA,SAAA,GACA,IAAA,EAAA,EAAA,MAAA,KAAA,IACA,EAAA,EAAA,OAAA,EAAA,OAAA,MAAA,EAAA,IAEA,GAAA,GAAA,EAEA,OAAA,EAAA,MACA,KAAA,EAAA,QACA,KAAA,YACA,MAEA,KAAA,EAAA,MAIA,KAAA,EAAA,aACA,KAAA,QAAA,GACA,MAEA,KAAA,EAAA,IAIA,KAAA,EAAA,WACA,KAAA,MAAA,GACA,MAEA,KAAA,EAAA,WACA,KAAA,eACA,MAEA,KAAA,EAAA,MACA,KAAA,KAAA,QAAA,EAAA,QAYA,EAAA,UAAA,QAAA,SAAA,GACA,IAAA,EAAA,EAAA,MAAA,GACA,EAAA,oBAAA,GAEA,MAAA,EAAA,KACA,EAAA,mCACA,EAAA,KAAA,KAAA,IAAA,EAAA,MAGA,KAAA,UACA,EAAA,MAAA,KAAA,GAEA,KAAA,cAAA,KAAA,IAUA,EAAA,UAAA,IAAA,SAAA,GACA,IAAA,EAAA,KACA,GAAA,EACA,OAAA,WAEA,IAAA,EAAA,CACA,GAAA,EACA,IAAA,EAAA,EAAA,WACA,EAAA,iBAAA,GAEA,EAAA,OAAA,CACA,KAAA,EAAA,GAAA,EAAA,WAAA,EAAA,IACA,GAAA,EACA,KAAA,OAYA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,KAAA,KAAA,EAAA,IACA,mBAAA,GACA,EAAA,yBAAA,EAAA,GAAA,EAAA,MACA,EAAA,MAAA,KAAA,EAAA,aACA,KAAA,KAAA,EAAA,KAEA,EAAA,aAAA,EAAA,KAUA,EAAA,UAAA,UAAA,WACA,KAAA,WAAA,EACA,KAAA,cAAA,EACA,KAAA,KAAA,WACA,KAAA,gBASA,EAAA,UAAA,aAAA,WACA,IAAA,EACA,IAAA,EAAA,EAAA,EAAA,KAAA,cAAA,OAAA,IACA,EAAA,MAAA,KAAA,KAAA,cAAA,IAIA,IAFA,KAAA,cAAA,GAEA,EAAA,EAAA,EAAA,KAAA,WAAA,OAAA,IACA,KAAA,OAAA,KAAA,WAAA,IAEA,KAAA,WAAA,IASA,EAAA,UAAA,aAAA,WACA,EAAA,yBAAA,KAAA,KACA,KAAA,UACA,KAAA,QAAA,yBAWA,EAAA,UAAA,QAAA,WACA,GAAA,KAAA,KAAA,CAEA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,KAAA,OAAA,IACA,KAAA,KAAA,GAAA,UAEA,KAAA,KAAA,KAGA,KAAA,GAAA,QAAA,OAUA,EAAA,UAAA,MACA,EAAA,UAAA,WAAA,WAaA,OAZA,KAAA,YACA,EAAA,6BAAA,KAAA,KACA,KAAA,OAAA,CAAA,KAAA,EAAA,cAIA,KAAA,UAEA,KAAA,WAEA,KAAA,QAAA,wBAEA,MAWA,EAAA,UAAA,SAAA,SAAA,GAEA,OADA,KAAA,MAAA,SAAA,EACA,MAWA,EAAA,UAAA,OAAA,SAAA,GAEA,OADA,KAAA,MAAA,OAAA,EACA;;ACjaA,SAAA,EAAA,GACA,EAAA,GAAA,GACA,KAAA,GAAA,EAAA,KAAA,IACA,KAAA,IAAA,EAAA,KAAA,IACA,KAAA,OAAA,EAAA,QAAA,EACA,KAAA,OAAA,EAAA,OAAA,GAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EACA,KAAA,SAAA,EApBA,OAAA,QAAA,EA8BA,EAAA,UAAA,SAAA,WACA,IAAA,EAAA,KAAA,GAAA,KAAA,IAAA,KAAA,OAAA,KAAA,YACA,GAAA,KAAA,OAAA,CACA,IAAA,EAAA,KAAA,SACA,EAAA,KAAA,MAAA,EAAA,KAAA,OAAA,GACA,EAAA,IAAA,EAAA,KAAA,MAAA,GAAA,IAAA,EAAA,EAAA,EAAA,EAEA,OAAA,EAAA,KAAA,IAAA,EAAA,KAAA,MASA,EAAA,UAAA,MAAA,WACA,KAAA,SAAA,GASA,EAAA,UAAA,OAAA,SAAA,GACA,KAAA,GAAA,GASA,EAAA,UAAA,OAAA,SAAA,GACA,KAAA,IAAA,GASA,EAAA,UAAA,UAAA,SAAA,GACA,KAAA,OAAA;;AC7EA,IAAA,EAAA,QAAA,oBACA,EAAA,QAAA,YACA,EAAA,QAAA,qBACA,EAAA,QAAA,oBACA,EAAA,QAAA,QACA,EAAA,QAAA,kBACA,EAAA,QAAA,QAAA,CAAA,4BACA,EAAA,QAAA,WACA,EAAA,QAAA,UAMA,EAAA,OAAA,UAAA,eAgBA,SAAA,EAAA,EAAA,GACA,KAAA,gBAAA,GAAA,OAAA,IAAA,EAAA,EAAA,GACA,GAAA,iBAAA,IACA,EAAA,EACA,OAAA,IAEA,EAAA,GAAA,IAEA,KAAA,EAAA,MAAA,aACA,KAAA,KAAA,GACA,KAAA,KAAA,GACA,KAAA,KAAA,EACA,KAAA,cAAA,IAAA,EAAA,cACA,KAAA,qBAAA,EAAA,sBAAA,EAAA,GACA,KAAA,kBAAA,EAAA,mBAAA,KACA,KAAA,qBAAA,EAAA,sBAAA,KACA,KAAA,oBAAA,EAAA,qBAAA,IACA,KAAA,QAAA,IAAA,EAAA,CACA,IAAA,KAAA,oBACA,IAAA,KAAA,uBACA,OAAA,KAAA,wBAEA,KAAA,QAAA,MAAA,EAAA,QAAA,IAAA,EAAA,SACA,KAAA,WAAA,SACA,KAAA,IAAA,EACA,KAAA,WAAA,GACA,KAAA,SAAA,KACA,KAAA,UAAA,EACA,KAAA,aAAA,GACA,IAAA,EAAA,EAAA,QAAA,EACA,KAAA,QAAA,IAAA,EAAA,QACA,KAAA,QAAA,IAAA,EAAA,QACA,KAAA,aAAA,IAAA,EAAA,YACA,KAAA,aAAA,KAAA,OA3CA,OAAA,QAAA,EAoDA,EAAA,UAAA,QAAA,WAEA,IAAA,IAAA,KADA,KAAA,KAAA,MAAA,KAAA,WACA,KAAA,KACA,EAAA,KAAA,KAAA,KAAA,IACA,KAAA,KAAA,GAAA,KAAA,MAAA,KAAA,KAAA,GAAA,YAWA,EAAA,UAAA,gBAAA,WACA,IAAA,IAAA,KAAA,KAAA,KACA,EAAA,KAAA,KAAA,KAAA,KACA,KAAA,KAAA,GAAA,GAAA,KAAA,WAAA,KAaA,EAAA,UAAA,WAAA,SAAA,GACA,OAAA,MAAA,EAAA,GAAA,EAAA,KAAA,KAAA,OAAA,IAOA,EAAA,EAAA,WAUA,EAAA,UAAA,aAAA,SAAA,GACA,OAAA,UAAA,QACA,KAAA,gBAAA,EACA,MAFA,KAAA,eAaA,EAAA,UAAA,qBAAA,SAAA,GACA,OAAA,UAAA,QACA,KAAA,sBAAA,EACA,MAFA,KAAA,uBAaA,EAAA,UAAA,kBAAA,SAAA,GACA,OAAA,UAAA,QACA,KAAA,mBAAA,EACA,KAAA,SAAA,KAAA,QAAA,OAAA,GACA,MAHA,KAAA,oBAMA,EAAA,UAAA,oBAAA,SAAA,GACA,OAAA,UAAA,QACA,KAAA,qBAAA,EACA,KAAA,SAAA,KAAA,QAAA,UAAA,GACA,MAHA,KAAA,sBAcA,EAAA,UAAA,qBAAA,SAAA,GACA,OAAA,UAAA,QACA,KAAA,sBAAA,EACA,KAAA,SAAA,KAAA,QAAA,OAAA,GACA,MAHA,KAAA,uBAaA,EAAA,UAAA,QAAA,SAAA,GACA,OAAA,UAAA,QACA,KAAA,SAAA,EACA,MAFA,KAAA,UAYA,EAAA,UAAA,qBAAA,YAEA,KAAA,cAAA,KAAA,eAAA,IAAA,KAAA,QAAA,UAEA,KAAA,aAYA,EAAA,UAAA,KACA,EAAA,UAAA,QAAA,SAAA,EAAA,GAEA,GADA,EAAA,gBAAA,KAAA,aACA,KAAA,WAAA,QAAA,QAAA,OAAA,KAEA,EAAA,aAAA,KAAA,KACA,KAAA,OAAA,EAAA,KAAA,IAAA,KAAA,MACA,IAAA,EAAA,KAAA,OACA,EAAA,KACA,KAAA,WAAA,UACA,KAAA,eAAA,EAGA,IAAA,EAAA,EAAA,EAAA,OAAA,WACA,EAAA,SACA,GAAA,MAIA,EAAA,EAAA,EAAA,QAAA,SAAA,GAKA,GAJA,EAAA,iBACA,EAAA,UACA,EAAA,WAAA,SACA,EAAA,QAAA,gBAAA,GACA,EAAA,CACA,IAAA,EAAA,IAAA,MAAA,oBACA,EAAA,KAAA,EACA,EAAA,QAGA,EAAA,yBAKA,IAAA,IAAA,KAAA,SAAA,CACA,IAAA,EAAA,KAAA,SACA,EAAA,wCAAA,GAGA,IAAA,EAAA,WAAA,WACA,EAAA,qCAAA,GACA,EAAA,UACA,EAAA,QACA,EAAA,KAAA,QAAA,WACA,EAAA,QAAA,kBAAA,IACA,GAEA,KAAA,KAAA,KAAA,CACA,QAAA,WACA,aAAA,MAQA,OAHA,KAAA,KAAA,KAAA,GACA,KAAA,KAAA,KAAA,GAEA,MASA,EAAA,UAAA,OAAA,WACA,EAAA,QAGA,KAAA,UAGA,KAAA,WAAA,OACA,KAAA,KAAA,QAGA,IAAA,EAAA,KAAA,OACA,KAAA,KAAA,KAAA,EAAA,EAAA,OAAA,EAAA,KAAA,YACA,KAAA,KAAA,KAAA,EAAA,EAAA,OAAA,EAAA,KAAA,YACA,KAAA,KAAA,KAAA,EAAA,EAAA,OAAA,EAAA,KAAA,YACA,KAAA,KAAA,KAAA,EAAA,EAAA,QAAA,EAAA,KAAA,aACA,KAAA,KAAA,KAAA,EAAA,EAAA,QAAA,EAAA,KAAA,aACA,KAAA,KAAA,KAAA,EAAA,KAAA,QAAA,UAAA,EAAA,KAAA,gBASA,EAAA,UAAA,OAAA,WACA,KAAA,SAAA,IAAA,KACA,KAAA,QAAA,SASA,EAAA,UAAA,OAAA,WACA,KAAA,QAAA,OAAA,IAAA,KAAA,KAAA,WASA,EAAA,UAAA,OAAA,SAAA,GACA,KAAA,QAAA,IAAA,IASA,EAAA,UAAA,UAAA,SAAA,GACA,KAAA,KAAA,SAAA,IASA,EAAA,UAAA,QAAA,SAAA,GACA,EAAA,QAAA,GACA,KAAA,QAAA,QAAA,IAUA,EAAA,UAAA,OAAA,SAAA,EAAA,GACA,IAAA,EAAA,KAAA,KAAA,GACA,IAAA,EAAA,CACA,EAAA,IAAA,EAAA,KAAA,EAAA,GACA,KAAA,KAAA,GAAA,EACA,IAAA,EAAA,KACA,EAAA,GAAA,aAAA,GACA,EAAA,GAAA,UAAA,WACA,EAAA,GAAA,EAAA,WAAA,KAGA,KAAA,aAEA,IAIA,SAAA,KACA,EAAA,EAAA,WAAA,IACA,EAAA,WAAA,KAAA,GAIA,OAAA,GASA,EAAA,UAAA,QAAA,SAAA,GACA,IAAA,EAAA,EAAA,KAAA,WAAA,IACA,GAAA,KAAA,WAAA,OAAA,EAAA,GACA,KAAA,WAAA,QAEA,KAAA,SAUA,EAAA,UAAA,OAAA,SAAA,GACA,EAAA,oBAAA,GACA,IAAA,EAAA,KACA,EAAA,OAAA,IAAA,EAAA,OAAA,EAAA,KAAA,IAAA,EAAA,OAEA,EAAA,SAWA,EAAA,aAAA,KAAA,IATA,EAAA,UAAA,EACA,KAAA,QAAA,OAAA,EAAA,SAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,OAAA,MAAA,EAAA,GAAA,EAAA,SAEA,EAAA,UAAA,EACA,EAAA,yBAcA,EAAA,UAAA,mBAAA,WACA,GAAA,KAAA,aAAA,OAAA,IAAA,KAAA,SAAA,CACA,IAAA,EAAA,KAAA,aAAA,QACA,KAAA,OAAA,KAUA,EAAA,UAAA,QAAA,WACA,EAAA,WAGA,IADA,IAAA,EAAA,KAAA,KAAA,OACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,KAAA,KAAA,QACA,UAGA,KAAA,aAAA,GACA,KAAA,UAAA,EACA,KAAA,SAAA,KAEA,KAAA,QAAA,WASA,EAAA,UAAA,MACA,EAAA,UAAA,WAAA,WACA,EAAA,cACA,KAAA,eAAA,EACA,KAAA,cAAA,EACA,YAAA,KAAA,YAGA,KAAA,UAEA,KAAA,QAAA,QACA,KAAA,WAAA,SACA,KAAA,QAAA,KAAA,OAAA,SASA,EAAA,UAAA,QAAA,SAAA,GACA,EAAA,WAEA,KAAA,UACA,KAAA,QAAA,QACA,KAAA,WAAA,SACA,KAAA,KAAA,QAAA,GAEA,KAAA,gBAAA,KAAA,eACA,KAAA,aAUA,EAAA,UAAA,UAAA,WACA,GAAA,KAAA,cAAA,KAAA,cAAA,OAAA,KAEA,IAAA,EAAA,KAEA,GAAA,KAAA,QAAA,UAAA,KAAA,sBACA,EAAA,oBACA,KAAA,QAAA,QACA,KAAA,QAAA,oBACA,KAAA,cAAA,MACA,CACA,IAAA,EAAA,KAAA,QAAA,WACA,EAAA,0CAAA,GAEA,KAAA,cAAA,EACA,IAAA,EAAA,WAAA,WACA,EAAA,gBAEA,EAAA,wBACA,EAAA,QAAA,oBAAA,EAAA,QAAA,UACA,EAAA,QAAA,eAAA,EAAA,QAAA,UAGA,EAAA,eAEA,EAAA,KAAA,SAAA,GACA,GACA,EAAA,2BACA,EAAA,cAAA,EACA,EAAA,YACA,EAAA,QAAA,kBAAA,EAAA,QAEA,EAAA,qBACA,EAAA,mBAGA,GAEA,KAAA,KAAA,KAAA,CACA,QAAA,WACA,aAAA,QAYA,EAAA,UAAA,YAAA,WACA,IAAA,EAAA,KAAA,QAAA,SACA,KAAA,cAAA,EACA,KAAA,QAAA,QACA,KAAA,kBACA,KAAA,QAAA,YAAA;;ACtjBA,IAAA,EAAA,QAAA,SACA,EAAA,QAAA,oBACA,EAAA,QAAA,aACA,EAAA,QAAA,QAAA,CAAA,oBAMA,OAAA,QAAA,QAAA,EAMA,IAAA,EAAA,QAAA,SAAA,GAeA,SAAA,EAAA,EAAA,GACA,iBAAA,IACA,EAAA,EACA,OAAA,GAGA,EAAA,GAAA,GAEA,IAQA,EARA,EAAA,EAAA,GACA,EAAA,EAAA,OACA,EAAA,EAAA,GACA,EAAA,EAAA,KACA,EAAA,EAAA,IAAA,KAAA,EAAA,GAAA,KAmBA,OAlBA,EAAA,UAAA,EAAA,0BACA,IAAA,EAAA,WAAA,GAKA,EAAA,+BAAA,GACA,EAAA,EAAA,EAAA,KAEA,EAAA,KACA,EAAA,yBAAA,GACA,EAAA,GAAA,EAAA,EAAA,IAEA,EAAA,EAAA,IAEA,EAAA,QAAA,EAAA,QACA,EAAA,MAAA,EAAA,OAEA,EAAA,OAAA,EAAA,KAAA,GASA,QAAA,SAAA,EAAA,SASA,QAAA,QAAA,EAQA,QAAA,QAAA,QAAA,aACA,QAAA,OAAA,QAAA;;AC7FA,IAAMoE,EAAO9D,QAAQ,QACf+D,EAAO/D,QAAQ,eACfgE,EAAKhE,QAAQ,oBACbiE,EAAQ,CACVC,aAAa,EACbC,UAAU,EACVC,OAAQ,GACR3E,MAAO,CACH4E,MAAM,EACN/D,QAAS,IAEbgE,GAAI,CACAC,QAAQ,EACRC,MAAM,GAEVC,QAAQ,EACRC,OAAO,EACPvF,IAAK,GACLwF,QAAQ,EACRC,MAAM,EACNC,eAAe,EACfC,WAAY,GACZC,SAAU,CACN,CACIC,OAAQ,aACRC,KAAM,cAEV,CACID,OAAQ,cACRC,KAAM,SAEV,CACID,OAAQ,eACRC,KAAM,aAEV,CACID,OAAQ,gBACRC,KAAM,cAEV,CACID,OAAQ,eACRC,KAAM,kBAIZC,EAAM,IAAIC,IAAI,CAChBC,GAAI,OACJZ,KAAO,WACIP,OAAAA,GAEXoB,QAAU,WAAA,IAAA,EAAA,KACAT,EAAO,IAAIb,EAAK,CAAEuB,WAAW,EAAOC,SAAS,IAC7CZ,EAASX,EAAG,yCACbW,KAAAA,OAASA,EACTC,KAAAA,KAAOA,EACZD,EAAOrI,GAAG,kBAAmB,SAACkI,GAC1BI,EAAKY,OAAOhB,KAEhBI,EAAKtI,GAAG,SAAU,SAACkI,GACfG,EAAO/H,KAAK,aAAc,CAAE4I,OAAQhB,EAAMiB,GAAI,EAAKrB,WAEvDQ,EAAKtI,GAAG,UAAW,WACf,EAAKuI,eAAgB,IAEzBD,EAAKtI,GAAG,OAAQ,SAACkI,GACb,EAAKkB,eAAelB,EAAKmB,cAE7Bf,EAAKtI,GAAG,QAAS,SAACjC,GACd,EAAKwK,eAAgB,EACrB,EAAKe,UAAUvL,EAAEiG,WAErBsE,EAAKtI,GAAG,QAAS,SAASiF,GACjBsD,KAAAA,eAAgB,KAG7BgB,QAAS,CACLC,SAAStB,SAAAA,GACAI,KAAAA,KAAKmB,KAAK3F,KAAKC,UAAUmE,KAElCoB,UAAUtF,SAAAA,GACDb,KAAAA,MAAM4E,MAAO,EACb5E,KAAAA,MAAMa,QAAUA,GAEzB0F,SAAW,WAAA,IAAA,EAAA,KACDtB,EAAQ,KAAKuB,MAAMvB,MACzBhH,UAAUwI,aACLC,aAAa,CAAEzB,MAAO,CAAE0B,WAAY,iBACpCC,KAAK,SAAC5B,GACH,EAAKA,OAASA,EACd,EAAKN,UAAW,EAChBO,EAAM4B,UAAY7B,EAClBC,EAAM6B,aAAa,eAAe,GAClC7B,EAAM8B,OACNC,sBAAsBC,KAEzBC,MAAM,SAACtM,GACJ,EAAKuL,UAAUvL,EAAEiG,YAG7BsG,cAAgB,WACPjC,KAAAA,OAAO/H,KAAK,aAAc,KAAKwH,SAExCyC,cAAgB,WACPf,KAAAA,SAAS,CACVd,OAAQ,SACR8B,QAAS,CACLC,KAAM,KAAKjC,eAIvBkC,YAAYhC,SAAAA,GACHc,KAAAA,SAAS,CACVd,OAAQ,eACR8B,QAAS,CACL9B,OAAAA,MAIZU,eAAeuB,SAAAA,GACLzC,IAAAA,EAAOpE,KAAK8G,MAAMD,GACpBE,OAAOC,KAAK5C,GAAM6C,SAAS,UACtBzB,KAAAA,UAAUpB,EAAK/E,OAEpB0H,OAAOC,KAAK5C,GAAM6C,SAAS,aACtB5H,KAAAA,MAAM4E,MAAO,IAG1BiD,cAAgB,WACZ/J,OAAOgK,SAASC,aAK5B,SAASd,IACD,IACMhC,IAAAA,EAAQQ,EAAIe,MAAMvB,MACpBA,GAAAA,EAAM+C,aAAe/C,EAAMgD,iBAAkB,CACvCC,IAAAA,EAAgBzC,EAAIe,MAAM2B,OAC1BA,EAASD,EAAcE,WAAW,MACxCD,EAAOE,UAAUpD,EAAO,EAAG,EAAGiD,EAAcI,MAAOJ,EAAcK,QAC3DC,IAAAA,EAAYL,EAAOM,aAAa,EAAG,EAAGP,EAAcI,MAAOJ,EAAcK,QACzEG,EAAOrE,EAAKmE,EAAUzD,KAAMyD,EAAUF,MAAOE,EAAUD,OAAQ,CACjEI,kBAAmB,eAEnBD,GACAjD,EAAIT,OAAO4D,YAAYC,QAAQ,SAACC,GAAUA,OAAAA,EAAMC,SAChDtD,EAAIf,UAAW,EACfe,EAAIZ,GAAGC,QAAS,EAChBW,EAAIZ,GAAGE,KAAO2D,EAAK3D,KACnBU,EAAId,OAAS+D,EAAK3D,OAElBU,EAAIZ,GAAGC,QAAS,EAChBW,EAAIZ,GAAGE,KAAO,IAGjBU,EAAIZ,GAAGC,QACRkC,sBAAsBC,GAE5B,MAAOrM,GACL6K,EAAIzF,MAAM4E,MAAO,EACjBa,EAAIzF,MAAMa,QAAUjG,EAAEiG","file":"src.bcbbd1bb.map","sourceRoot":"../src","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsQR\"] = factory();\n\telse\n\t\troot[\"jsQR\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix = /** @class */ (function () {\n function BitMatrix(data, width) {\n this.width = width;\n this.height = data.length / width;\n this.data = data;\n }\n BitMatrix.createEmpty = function (width, height) {\n return new BitMatrix(new Uint8ClampedArray(width * height), width);\n };\n BitMatrix.prototype.get = function (x, y) {\n if (x < 0 || x >= this.width || y < 0 || y >= this.height) {\n return false;\n }\n return !!this.data[y * this.width + x];\n };\n BitMatrix.prototype.set = function (x, y, v) {\n this.data[y * this.width + x] = v ? 1 : 0;\n };\n BitMatrix.prototype.setRegion = function (left, top, width, height, v) {\n for (var y = top; y < top + height; y++) {\n for (var x = left; x < left + width; x++) {\n this.set(x, y, !!v);\n }\n }\n };\n BitMatrix.prototype.getInverted = function () {\n return new BitMatrix(this.data.map(function (d) { return d === 0 ? 1 : 0; }), this.width);\n };\n return BitMatrix;\n}());\nexports.BitMatrix = BitMatrix;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GenericGFPoly_1 = __webpack_require__(2);\nfunction addOrSubtractGF(a, b) {\n return a ^ b; // tslint:disable-line:no-bitwise\n}\nexports.addOrSubtractGF = addOrSubtractGF;\nvar GenericGF = /** @class */ (function () {\n function GenericGF(primitive, size, genBase) {\n this.primitive = primitive;\n this.size = size;\n this.generatorBase = genBase;\n this.expTable = new Array(this.size);\n this.logTable = new Array(this.size);\n var x = 1;\n for (var i = 0; i < this.size; i++) {\n this.expTable[i] = x;\n x = x * 2;\n if (x >= this.size) {\n x = (x ^ this.primitive) & (this.size - 1); // tslint:disable-line:no-bitwise\n }\n }\n for (var i = 0; i < this.size - 1; i++) {\n this.logTable[this.expTable[i]] = i;\n }\n this.zero = new GenericGFPoly_1.default(this, Uint8ClampedArray.from([0]));\n this.one = new GenericGFPoly_1.default(this, Uint8ClampedArray.from([1]));\n }\n GenericGF.prototype.multiply = function (a, b) {\n if (a === 0 || b === 0) {\n return 0;\n }\n return this.expTable[(this.logTable[a] + this.logTable[b]) % (this.size - 1)];\n };\n GenericGF.prototype.inverse = function (a) {\n if (a === 0) {\n throw new Error(\"Can't invert 0\");\n }\n return this.expTable[this.size - this.logTable[a] - 1];\n };\n GenericGF.prototype.buildMonomial = function (degree, coefficient) {\n if (degree < 0) {\n throw new Error(\"Invalid monomial degree less than 0\");\n }\n if (coefficient === 0) {\n return this.zero;\n }\n var coefficients = new Uint8ClampedArray(degree + 1);\n coefficients[0] = coefficient;\n return new GenericGFPoly_1.default(this, coefficients);\n };\n GenericGF.prototype.log = function (a) {\n if (a === 0) {\n throw new Error(\"Can't take log(0)\");\n }\n return this.logTable[a];\n };\n GenericGF.prototype.exp = function (a) {\n return this.expTable[a];\n };\n return GenericGF;\n}());\nexports.default = GenericGF;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GenericGF_1 = __webpack_require__(1);\nvar GenericGFPoly = /** @class */ (function () {\n function GenericGFPoly(field, coefficients) {\n if (coefficients.length === 0) {\n throw new Error(\"No coefficients.\");\n }\n this.field = field;\n var coefficientsLength = coefficients.length;\n if (coefficientsLength > 1 && coefficients[0] === 0) {\n // Leading term must be non-zero for anything except the constant polynomial \"0\"\n var firstNonZero = 1;\n while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {\n firstNonZero++;\n }\n if (firstNonZero === coefficientsLength) {\n this.coefficients = field.zero.coefficients;\n }\n else {\n this.coefficients = new Uint8ClampedArray(coefficientsLength - firstNonZero);\n for (var i = 0; i < this.coefficients.length; i++) {\n this.coefficients[i] = coefficients[firstNonZero + i];\n }\n }\n }\n else {\n this.coefficients = coefficients;\n }\n }\n GenericGFPoly.prototype.degree = function () {\n return this.coefficients.length - 1;\n };\n GenericGFPoly.prototype.isZero = function () {\n return this.coefficients[0] === 0;\n };\n GenericGFPoly.prototype.getCoefficient = function (degree) {\n return this.coefficients[this.coefficients.length - 1 - degree];\n };\n GenericGFPoly.prototype.addOrSubtract = function (other) {\n if (this.isZero()) {\n return other;\n }\n if (other.isZero()) {\n return this;\n }\n var smallerCoefficients = this.coefficients;\n var largerCoefficients = other.coefficients;\n if (smallerCoefficients.length > largerCoefficients.length) {\n _a = [largerCoefficients, smallerCoefficients], smallerCoefficients = _a[0], largerCoefficients = _a[1];\n }\n var sumDiff = new Uint8ClampedArray(largerCoefficients.length);\n var lengthDiff = largerCoefficients.length - smallerCoefficients.length;\n for (var i = 0; i < lengthDiff; i++) {\n sumDiff[i] = largerCoefficients[i];\n }\n for (var i = lengthDiff; i < largerCoefficients.length; i++) {\n sumDiff[i] = GenericGF_1.addOrSubtractGF(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\n }\n return new GenericGFPoly(this.field, sumDiff);\n var _a;\n };\n GenericGFPoly.prototype.multiply = function (scalar) {\n if (scalar === 0) {\n return this.field.zero;\n }\n if (scalar === 1) {\n return this;\n }\n var size = this.coefficients.length;\n var product = new Uint8ClampedArray(size);\n for (var i = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], scalar);\n }\n return new GenericGFPoly(this.field, product);\n };\n GenericGFPoly.prototype.multiplyPoly = function (other) {\n if (this.isZero() || other.isZero()) {\n return this.field.zero;\n }\n var aCoefficients = this.coefficients;\n var aLength = aCoefficients.length;\n var bCoefficients = other.coefficients;\n var bLength = bCoefficients.length;\n var product = new Uint8ClampedArray(aLength + bLength - 1);\n for (var i = 0; i < aLength; i++) {\n var aCoeff = aCoefficients[i];\n for (var j = 0; j < bLength; j++) {\n product[i + j] = GenericGF_1.addOrSubtractGF(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\n }\n }\n return new GenericGFPoly(this.field, product);\n };\n GenericGFPoly.prototype.multiplyByMonomial = function (degree, coefficient) {\n if (degree < 0) {\n throw new Error(\"Invalid degree less than 0\");\n }\n if (coefficient === 0) {\n return this.field.zero;\n }\n var size = this.coefficients.length;\n var product = new Uint8ClampedArray(size + degree);\n for (var i = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], coefficient);\n }\n return new GenericGFPoly(this.field, product);\n };\n GenericGFPoly.prototype.evaluateAt = function (a) {\n var result = 0;\n if (a === 0) {\n // Just return the x^0 coefficient\n return this.getCoefficient(0);\n }\n var size = this.coefficients.length;\n if (a === 1) {\n // Just the sum of the coefficients\n this.coefficients.forEach(function (coefficient) {\n result = GenericGF_1.addOrSubtractGF(result, coefficient);\n });\n return result;\n }\n result = this.coefficients[0];\n for (var i = 1; i < size; i++) {\n result = GenericGF_1.addOrSubtractGF(this.field.multiply(a, result), this.coefficients[i]);\n }\n return result;\n };\n return GenericGFPoly;\n}());\nexports.default = GenericGFPoly;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binarizer_1 = __webpack_require__(4);\nvar decoder_1 = __webpack_require__(5);\nvar extractor_1 = __webpack_require__(11);\nvar locator_1 = __webpack_require__(12);\nfunction scan(matrix) {\n var location = locator_1.locate(matrix);\n if (!location) {\n return null;\n }\n var extracted = extractor_1.extract(matrix, location);\n var decoded = decoder_1.decode(extracted.matrix);\n if (!decoded) {\n return null;\n }\n return {\n binaryData: decoded.bytes,\n data: decoded.text,\n chunks: decoded.chunks,\n location: {\n topRightCorner: extracted.mappingFunction(location.dimension, 0),\n topLeftCorner: extracted.mappingFunction(0, 0),\n bottomRightCorner: extracted.mappingFunction(location.dimension, location.dimension),\n bottomLeftCorner: extracted.mappingFunction(0, location.dimension),\n topRightFinderPattern: location.topRight,\n topLeftFinderPattern: location.topLeft,\n bottomLeftFinderPattern: location.bottomLeft,\n bottomRightAlignmentPattern: location.alignmentPattern,\n },\n };\n}\nfunction jsQR(data, width, height) {\n var binarized = binarizer_1.binarize(data, width, height);\n var result = scan(binarized);\n if (!result) {\n result = scan(binarized.getInverted());\n }\n return result;\n}\njsQR.default = jsQR;\nexports.default = jsQR;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix_1 = __webpack_require__(0);\nvar REGION_SIZE = 8;\nvar MIN_DYNAMIC_RANGE = 24;\nfunction numBetween(value, min, max) {\n return value < min ? min : value > max ? max : value;\n}\n// Like BitMatrix but accepts arbitry Uint8 values\nvar Matrix = /** @class */ (function () {\n function Matrix(width, height) {\n this.width = width;\n this.data = new Uint8ClampedArray(width * height);\n }\n Matrix.prototype.get = function (x, y) {\n return this.data[y * this.width + x];\n };\n Matrix.prototype.set = function (x, y, value) {\n this.data[y * this.width + x] = value;\n };\n return Matrix;\n}());\nfunction binarize(data, width, height) {\n if (data.length !== width * height * 4) {\n throw new Error(\"Malformed data passed to binarizer.\");\n }\n // Convert image to greyscale\n var greyscalePixels = new Matrix(width, height);\n for (var x = 0; x < width; x++) {\n for (var y = 0; y < height; y++) {\n var r = data[((y * width + x) * 4) + 0];\n var g = data[((y * width + x) * 4) + 1];\n var b = data[((y * width + x) * 4) + 2];\n greyscalePixels.set(x, y, 0.2126 * r + 0.7152 * g + 0.0722 * b);\n }\n }\n var horizontalRegionCount = Math.ceil(width / REGION_SIZE);\n var verticalRegionCount = Math.ceil(height / REGION_SIZE);\n var blackPoints = new Matrix(horizontalRegionCount, verticalRegionCount);\n for (var verticalRegion = 0; verticalRegion < verticalRegionCount; verticalRegion++) {\n for (var hortizontalRegion = 0; hortizontalRegion < horizontalRegionCount; hortizontalRegion++) {\n var sum = 0;\n var min = Infinity;\n var max = 0;\n for (var y = 0; y < REGION_SIZE; y++) {\n for (var x = 0; x < REGION_SIZE; x++) {\n var pixelLumosity = greyscalePixels.get(hortizontalRegion * REGION_SIZE + x, verticalRegion * REGION_SIZE + y);\n sum += pixelLumosity;\n min = Math.min(min, pixelLumosity);\n max = Math.max(max, pixelLumosity);\n }\n }\n var average = sum / (Math.pow(REGION_SIZE, 2));\n if (max - min <= MIN_DYNAMIC_RANGE) {\n // If variation within the block is low, assume this is a block with only light or only\n // dark pixels. In that case we do not want to use the average, as it would divide this\n // low contrast area into black and white pixels, essentially creating data out of noise.\n //\n // Default the blackpoint for these blocks to be half the min - effectively white them out\n average = min / 2;\n if (verticalRegion > 0 && hortizontalRegion > 0) {\n // Correct the \"white background\" assumption for blocks that have neighbors by comparing\n // the pixels in this block to the previously calculated black points. This is based on\n // the fact that dark barcode symbology is always surrounded by some amount of light\n // background for which reasonable black point estimates were made. The bp estimated at\n // the boundaries is used for the interior.\n // The (min < bp) is arbitrary but works better than other heuristics that were tried.\n var averageNeighborBlackPoint = (blackPoints.get(hortizontalRegion, verticalRegion - 1) +\n (2 * blackPoints.get(hortizontalRegion - 1, verticalRegion)) +\n blackPoints.get(hortizontalRegion - 1, verticalRegion - 1)) / 4;\n if (min < averageNeighborBlackPoint) {\n average = averageNeighborBlackPoint;\n }\n }\n }\n blackPoints.set(hortizontalRegion, verticalRegion, average);\n }\n }\n var binarized = BitMatrix_1.BitMatrix.createEmpty(width, height);\n for (var verticalRegion = 0; verticalRegion < verticalRegionCount; verticalRegion++) {\n for (var hortizontalRegion = 0; hortizontalRegion < horizontalRegionCount; hortizontalRegion++) {\n var left = numBetween(hortizontalRegion, 2, horizontalRegionCount - 3);\n var top_1 = numBetween(verticalRegion, 2, verticalRegionCount - 3);\n var sum = 0;\n for (var xRegion = -2; xRegion <= 2; xRegion++) {\n for (var yRegion = -2; yRegion <= 2; yRegion++) {\n sum += blackPoints.get(left + xRegion, top_1 + yRegion);\n }\n }\n var threshold = sum / 25;\n for (var x = 0; x < REGION_SIZE; x++) {\n for (var y = 0; y < REGION_SIZE; y++) {\n var lum = greyscalePixels.get(hortizontalRegion * REGION_SIZE + x, verticalRegion * REGION_SIZE + y);\n binarized.set(hortizontalRegion * REGION_SIZE + x, verticalRegion * REGION_SIZE + y, lum <= threshold);\n }\n }\n }\n }\n return binarized;\n}\nexports.binarize = binarize;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix_1 = __webpack_require__(0);\nvar decodeData_1 = __webpack_require__(6);\nvar reedsolomon_1 = __webpack_require__(9);\nvar version_1 = __webpack_require__(10);\n// tslint:disable:no-bitwise\nfunction numBitsDiffering(x, y) {\n var z = x ^ y;\n var bitCount = 0;\n while (z) {\n bitCount++;\n z &= z - 1;\n }\n return bitCount;\n}\nfunction pushBit(bit, byte) {\n return (byte << 1) | bit;\n}\n// tslint:enable:no-bitwise\nvar FORMAT_INFO_TABLE = [\n { bits: 0x5412, formatInfo: { errorCorrectionLevel: 1, dataMask: 0 } },\n { bits: 0x5125, formatInfo: { errorCorrectionLevel: 1, dataMask: 1 } },\n { bits: 0x5E7C, formatInfo: { errorCorrectionLevel: 1, dataMask: 2 } },\n { bits: 0x5B4B, formatInfo: { errorCorrectionLevel: 1, dataMask: 3 } },\n { bits: 0x45F9, formatInfo: { errorCorrectionLevel: 1, dataMask: 4 } },\n { bits: 0x40CE, formatInfo: { errorCorrectionLevel: 1, dataMask: 5 } },\n { bits: 0x4F97, formatInfo: { errorCorrectionLevel: 1, dataMask: 6 } },\n { bits: 0x4AA0, formatInfo: { errorCorrectionLevel: 1, dataMask: 7 } },\n { bits: 0x77C4, formatInfo: { errorCorrectionLevel: 0, dataMask: 0 } },\n { bits: 0x72F3, formatInfo: { errorCorrectionLevel: 0, dataMask: 1 } },\n { bits: 0x7DAA, formatInfo: { errorCorrectionLevel: 0, dataMask: 2 } },\n { bits: 0x789D, formatInfo: { errorCorrectionLevel: 0, dataMask: 3 } },\n { bits: 0x662F, formatInfo: { errorCorrectionLevel: 0, dataMask: 4 } },\n { bits: 0x6318, formatInfo: { errorCorrectionLevel: 0, dataMask: 5 } },\n { bits: 0x6C41, formatInfo: { errorCorrectionLevel: 0, dataMask: 6 } },\n { bits: 0x6976, formatInfo: { errorCorrectionLevel: 0, dataMask: 7 } },\n { bits: 0x1689, formatInfo: { errorCorrectionLevel: 3, dataMask: 0 } },\n { bits: 0x13BE, formatInfo: { errorCorrectionLevel: 3, dataMask: 1 } },\n { bits: 0x1CE7, formatInfo: { errorCorrectionLevel: 3, dataMask: 2 } },\n { bits: 0x19D0, formatInfo: { errorCorrectionLevel: 3, dataMask: 3 } },\n { bits: 0x0762, formatInfo: { errorCorrectionLevel: 3, dataMask: 4 } },\n { bits: 0x0255, formatInfo: { errorCorrectionLevel: 3, dataMask: 5 } },\n { bits: 0x0D0C, formatInfo: { errorCorrectionLevel: 3, dataMask: 6 } },\n { bits: 0x083B, formatInfo: { errorCorrectionLevel: 3, dataMask: 7 } },\n { bits: 0x355F, formatInfo: { errorCorrectionLevel: 2, dataMask: 0 } },\n { bits: 0x3068, formatInfo: { errorCorrectionLevel: 2, dataMask: 1 } },\n { bits: 0x3F31, formatInfo: { errorCorrectionLevel: 2, dataMask: 2 } },\n { bits: 0x3A06, formatInfo: { errorCorrectionLevel: 2, dataMask: 3 } },\n { bits: 0x24B4, formatInfo: { errorCorrectionLevel: 2, dataMask: 4 } },\n { bits: 0x2183, formatInfo: { errorCorrectionLevel: 2, dataMask: 5 } },\n { bits: 0x2EDA, formatInfo: { errorCorrectionLevel: 2, dataMask: 6 } },\n { bits: 0x2BED, formatInfo: { errorCorrectionLevel: 2, dataMask: 7 } },\n];\nvar DATA_MASKS = [\n function (p) { return ((p.y + p.x) % 2) === 0; },\n function (p) { return (p.y % 2) === 0; },\n function (p) { return p.x % 3 === 0; },\n function (p) { return (p.y + p.x) % 3 === 0; },\n function (p) { return (Math.floor(p.y / 2) + Math.floor(p.x / 3)) % 2 === 0; },\n function (p) { return ((p.x * p.y) % 2) + ((p.x * p.y) % 3) === 0; },\n function (p) { return ((((p.y * p.x) % 2) + (p.y * p.x) % 3) % 2) === 0; },\n function (p) { return ((((p.y + p.x) % 2) + (p.y * p.x) % 3) % 2) === 0; },\n];\nfunction buildFunctionPatternMask(version) {\n var dimension = 17 + 4 * version.versionNumber;\n var matrix = BitMatrix_1.BitMatrix.createEmpty(dimension, dimension);\n matrix.setRegion(0, 0, 9, 9, true); // Top left finder pattern + separator + format\n matrix.setRegion(dimension - 8, 0, 8, 9, true); // Top right finder pattern + separator + format\n matrix.setRegion(0, dimension - 8, 9, 8, true); // Bottom left finder pattern + separator + format\n // Alignment patterns\n for (var _i = 0, _a = version.alignmentPatternCenters; _i < _a.length; _i++) {\n var x = _a[_i];\n for (var _b = 0, _c = version.alignmentPatternCenters; _b < _c.length; _b++) {\n var y = _c[_b];\n if (!(x === 6 && y === 6 || x === 6 && y === dimension - 7 || x === dimension - 7 && y === 6)) {\n matrix.setRegion(x - 2, y - 2, 5, 5, true);\n }\n }\n }\n matrix.setRegion(6, 9, 1, dimension - 17, true); // Vertical timing pattern\n matrix.setRegion(9, 6, dimension - 17, 1, true); // Horizontal timing pattern\n if (version.versionNumber > 6) {\n matrix.setRegion(dimension - 11, 0, 3, 6, true); // Version info, top right\n matrix.setRegion(0, dimension - 11, 6, 3, true); // Version info, bottom left\n }\n return matrix;\n}\nfunction readCodewords(matrix, version, formatInfo) {\n var dataMask = DATA_MASKS[formatInfo.dataMask];\n var dimension = matrix.height;\n var functionPatternMask = buildFunctionPatternMask(version);\n var codewords = [];\n var currentByte = 0;\n var bitsRead = 0;\n // Read columns in pairs, from right to left\n var readingUp = true;\n for (var columnIndex = dimension - 1; columnIndex > 0; columnIndex -= 2) {\n if (columnIndex === 6) {\n columnIndex--;\n }\n for (var i = 0; i < dimension; i++) {\n var y = readingUp ? dimension - 1 - i : i;\n for (var columnOffset = 0; columnOffset < 2; columnOffset++) {\n var x = columnIndex - columnOffset;\n if (!functionPatternMask.get(x, y)) {\n bitsRead++;\n var bit = matrix.get(x, y);\n if (dataMask({ y: y, x: x })) {\n bit = !bit;\n }\n currentByte = pushBit(bit, currentByte);\n if (bitsRead === 8) {\n codewords.push(currentByte);\n bitsRead = 0;\n currentByte = 0;\n }\n }\n }\n }\n readingUp = !readingUp;\n }\n return codewords;\n}\nfunction readVersion(matrix) {\n var dimension = matrix.height;\n var provisionalVersion = Math.floor((dimension - 17) / 4);\n if (provisionalVersion <= 6) {\n return version_1.VERSIONS[provisionalVersion - 1];\n }\n var topRightVersionBits = 0;\n for (var y = 5; y >= 0; y--) {\n for (var x = dimension - 9; x >= dimension - 11; x--) {\n topRightVersionBits = pushBit(matrix.get(x, y), topRightVersionBits);\n }\n }\n var bottomLeftVersionBits = 0;\n for (var x = 5; x >= 0; x--) {\n for (var y = dimension - 9; y >= dimension - 11; y--) {\n bottomLeftVersionBits = pushBit(matrix.get(x, y), bottomLeftVersionBits);\n }\n }\n var bestDifference = Infinity;\n var bestVersion;\n for (var _i = 0, VERSIONS_1 = version_1.VERSIONS; _i < VERSIONS_1.length; _i++) {\n var version = VERSIONS_1[_i];\n if (version.infoBits === topRightVersionBits || version.infoBits === bottomLeftVersionBits) {\n return version;\n }\n var difference = numBitsDiffering(topRightVersionBits, version.infoBits);\n if (difference < bestDifference) {\n bestVersion = version;\n bestDifference = difference;\n }\n difference = numBitsDiffering(bottomLeftVersionBits, version.infoBits);\n if (difference < bestDifference) {\n bestVersion = version;\n bestDifference = difference;\n }\n }\n // We can tolerate up to 3 bits of error since no two version info codewords will\n // differ in less than 8 bits.\n if (bestDifference <= 3) {\n return bestVersion;\n }\n}\nfunction readFormatInformation(matrix) {\n var topLeftFormatInfoBits = 0;\n for (var x = 0; x <= 8; x++) {\n if (x !== 6) {\n topLeftFormatInfoBits = pushBit(matrix.get(x, 8), topLeftFormatInfoBits);\n }\n }\n for (var y = 7; y >= 0; y--) {\n if (y !== 6) {\n topLeftFormatInfoBits = pushBit(matrix.get(8, y), topLeftFormatInfoBits);\n }\n }\n var dimension = matrix.height;\n var topRightBottomRightFormatInfoBits = 0;\n for (var y = dimension - 1; y >= dimension - 7; y--) {\n topRightBottomRightFormatInfoBits = pushBit(matrix.get(8, y), topRightBottomRightFormatInfoBits);\n }\n for (var x = dimension - 8; x < dimension; x++) {\n topRightBottomRightFormatInfoBits = pushBit(matrix.get(x, 8), topRightBottomRightFormatInfoBits);\n }\n var bestDifference = Infinity;\n var bestFormatInfo = null;\n for (var _i = 0, FORMAT_INFO_TABLE_1 = FORMAT_INFO_TABLE; _i < FORMAT_INFO_TABLE_1.length; _i++) {\n var _a = FORMAT_INFO_TABLE_1[_i], bits = _a.bits, formatInfo = _a.formatInfo;\n if (bits === topLeftFormatInfoBits || bits === topRightBottomRightFormatInfoBits) {\n return formatInfo;\n }\n var difference = numBitsDiffering(topLeftFormatInfoBits, bits);\n if (difference < bestDifference) {\n bestFormatInfo = formatInfo;\n bestDifference = difference;\n }\n if (topLeftFormatInfoBits !== topRightBottomRightFormatInfoBits) {\n difference = numBitsDiffering(topRightBottomRightFormatInfoBits, bits);\n if (difference < bestDifference) {\n bestFormatInfo = formatInfo;\n bestDifference = difference;\n }\n }\n }\n // Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits differing means we found a match\n if (bestDifference <= 3) {\n return bestFormatInfo;\n }\n return null;\n}\nfunction getDataBlocks(codewords, version, ecLevel) {\n var ecInfo = version.errorCorrectionLevels[ecLevel];\n var dataBlocks = [];\n var totalCodewords = 0;\n ecInfo.ecBlocks.forEach(function (block) {\n for (var i = 0; i < block.numBlocks; i++) {\n dataBlocks.push({ numDataCodewords: block.dataCodewordsPerBlock, codewords: [] });\n totalCodewords += block.dataCodewordsPerBlock + ecInfo.ecCodewordsPerBlock;\n }\n });\n // In some cases the QR code will be malformed enough that we pull off more or less than we should.\n // If we pull off less there's nothing we can do.\n // If we pull off more we can safely truncate\n if (codewords.length < totalCodewords) {\n return null;\n }\n codewords = codewords.slice(0, totalCodewords);\n var shortBlockSize = ecInfo.ecBlocks[0].dataCodewordsPerBlock;\n // Pull codewords to fill the blocks up to the minimum size\n for (var i = 0; i < shortBlockSize; i++) {\n for (var _i = 0, dataBlocks_1 = dataBlocks; _i < dataBlocks_1.length; _i++) {\n var dataBlock = dataBlocks_1[_i];\n dataBlock.codewords.push(codewords.shift());\n }\n }\n // If there are any large blocks, pull codewords to fill the last element of those\n if (ecInfo.ecBlocks.length > 1) {\n var smallBlockCount = ecInfo.ecBlocks[0].numBlocks;\n var largeBlockCount = ecInfo.ecBlocks[1].numBlocks;\n for (var i = 0; i < largeBlockCount; i++) {\n dataBlocks[smallBlockCount + i].codewords.push(codewords.shift());\n }\n }\n // Add the rest of the codewords to the blocks. These are the error correction codewords.\n while (codewords.length > 0) {\n for (var _a = 0, dataBlocks_2 = dataBlocks; _a < dataBlocks_2.length; _a++) {\n var dataBlock = dataBlocks_2[_a];\n dataBlock.codewords.push(codewords.shift());\n }\n }\n return dataBlocks;\n}\nfunction decodeMatrix(matrix) {\n var version = readVersion(matrix);\n if (!version) {\n return null;\n }\n var formatInfo = readFormatInformation(matrix);\n if (!formatInfo) {\n return null;\n }\n var codewords = readCodewords(matrix, version, formatInfo);\n var dataBlocks = getDataBlocks(codewords, version, formatInfo.errorCorrectionLevel);\n if (!dataBlocks) {\n return null;\n }\n // Count total number of data bytes\n var totalBytes = dataBlocks.reduce(function (a, b) { return a + b.numDataCodewords; }, 0);\n var resultBytes = new Uint8ClampedArray(totalBytes);\n var resultIndex = 0;\n for (var _i = 0, dataBlocks_3 = dataBlocks; _i < dataBlocks_3.length; _i++) {\n var dataBlock = dataBlocks_3[_i];\n var correctedBytes = reedsolomon_1.decode(dataBlock.codewords, dataBlock.codewords.length - dataBlock.numDataCodewords);\n if (!correctedBytes) {\n return null;\n }\n for (var i = 0; i < dataBlock.numDataCodewords; i++) {\n resultBytes[resultIndex++] = correctedBytes[i];\n }\n }\n try {\n return decodeData_1.decode(resultBytes, version.versionNumber);\n }\n catch (_a) {\n return null;\n }\n}\nfunction decode(matrix) {\n if (matrix == null) {\n return null;\n }\n var result = decodeMatrix(matrix);\n if (result) {\n return result;\n }\n // Decoding didn't work, try mirroring the QR across the topLeft -> bottomRight line.\n for (var x = 0; x < matrix.width; x++) {\n for (var y = x + 1; y < matrix.height; y++) {\n if (matrix.get(x, y) !== matrix.get(y, x)) {\n matrix.set(x, y, !matrix.get(x, y));\n matrix.set(y, x, !matrix.get(y, x));\n }\n }\n }\n return decodeMatrix(matrix);\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// tslint:disable:no-bitwise\nvar BitStream_1 = __webpack_require__(7);\nvar shiftJISTable_1 = __webpack_require__(8);\nvar Mode;\n(function (Mode) {\n Mode[\"Numeric\"] = \"numeric\";\n Mode[\"Alphanumeric\"] = \"alphanumeric\";\n Mode[\"Byte\"] = \"byte\";\n Mode[\"Kanji\"] = \"kanji\";\n Mode[\"ECI\"] = \"eci\";\n})(Mode = exports.Mode || (exports.Mode = {}));\nvar ModeByte;\n(function (ModeByte) {\n ModeByte[ModeByte[\"Terminator\"] = 0] = \"Terminator\";\n ModeByte[ModeByte[\"Numeric\"] = 1] = \"Numeric\";\n ModeByte[ModeByte[\"Alphanumeric\"] = 2] = \"Alphanumeric\";\n ModeByte[ModeByte[\"Byte\"] = 4] = \"Byte\";\n ModeByte[ModeByte[\"Kanji\"] = 8] = \"Kanji\";\n ModeByte[ModeByte[\"ECI\"] = 7] = \"ECI\";\n // StructuredAppend = 0x3,\n // FNC1FirstPosition = 0x5,\n // FNC1SecondPosition = 0x9,\n})(ModeByte || (ModeByte = {}));\nfunction decodeNumeric(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [10, 12, 14][size];\n var length = stream.readBits(characterCountSize);\n // Read digits in groups of 3\n while (length >= 3) {\n var num = stream.readBits(10);\n if (num >= 1000) {\n throw new Error(\"Invalid numeric value above 999\");\n }\n var a = Math.floor(num / 100);\n var b = Math.floor(num / 10) % 10;\n var c = num % 10;\n bytes.push(48 + a, 48 + b, 48 + c);\n text += a.toString() + b.toString() + c.toString();\n length -= 3;\n }\n // If the number of digits aren't a multiple of 3, the remaining digits are special cased.\n if (length === 2) {\n var num = stream.readBits(7);\n if (num >= 100) {\n throw new Error(\"Invalid numeric value above 99\");\n }\n var a = Math.floor(num / 10);\n var b = num % 10;\n bytes.push(48 + a, 48 + b);\n text += a.toString() + b.toString();\n }\n else if (length === 1) {\n var num = stream.readBits(4);\n if (num >= 10) {\n throw new Error(\"Invalid numeric value above 9\");\n }\n bytes.push(48 + num);\n text += num.toString();\n }\n return { bytes: bytes, text: text };\n}\nvar AlphanumericCharacterCodes = [\n \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\",\n \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \" \", \"$\", \"%\", \"*\", \"+\", \"-\", \".\", \"/\", \":\",\n];\nfunction decodeAlphanumeric(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [9, 11, 13][size];\n var length = stream.readBits(characterCountSize);\n while (length >= 2) {\n var v = stream.readBits(11);\n var a = Math.floor(v / 45);\n var b = v % 45;\n bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0), AlphanumericCharacterCodes[b].charCodeAt(0));\n text += AlphanumericCharacterCodes[a] + AlphanumericCharacterCodes[b];\n length -= 2;\n }\n if (length === 1) {\n var a = stream.readBits(6);\n bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0));\n text += AlphanumericCharacterCodes[a];\n }\n return { bytes: bytes, text: text };\n}\nfunction decodeByte(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [8, 16, 16][size];\n var length = stream.readBits(characterCountSize);\n for (var i = 0; i < length; i++) {\n var b = stream.readBits(8);\n bytes.push(b);\n }\n try {\n text += decodeURIComponent(bytes.map(function (b) { return \"%\" + (\"0\" + b.toString(16)).substr(-2); }).join(\"\"));\n }\n catch (_a) {\n // failed to decode\n }\n return { bytes: bytes, text: text };\n}\nfunction decodeKanji(stream, size) {\n var bytes = [];\n var text = \"\";\n var characterCountSize = [8, 10, 12][size];\n var length = stream.readBits(characterCountSize);\n for (var i = 0; i < length; i++) {\n var k = stream.readBits(13);\n var c = (Math.floor(k / 0xC0) << 8) | (k % 0xC0);\n if (c < 0x1F00) {\n c += 0x8140;\n }\n else {\n c += 0xC140;\n }\n bytes.push(c >> 8, c & 0xFF);\n text += String.fromCharCode(shiftJISTable_1.shiftJISTable[c]);\n }\n return { bytes: bytes, text: text };\n}\nfunction decode(data, version) {\n var stream = new BitStream_1.BitStream(data);\n // There are 3 'sizes' based on the version. 1-9 is small (0), 10-26 is medium (1) and 27-40 is large (2).\n var size = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n var result = {\n text: \"\",\n bytes: [],\n chunks: [],\n };\n while (stream.available() >= 4) {\n var mode = stream.readBits(4);\n if (mode === ModeByte.Terminator) {\n return result;\n }\n else if (mode === ModeByte.ECI) {\n if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(7),\n });\n }\n else if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(14),\n });\n }\n else if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(21),\n });\n }\n else {\n // ECI data seems corrupted\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: -1,\n });\n }\n }\n else if (mode === ModeByte.Numeric) {\n var numericResult = decodeNumeric(stream, size);\n result.text += numericResult.text;\n (_a = result.bytes).push.apply(_a, numericResult.bytes);\n result.chunks.push({\n type: Mode.Numeric,\n text: numericResult.text,\n });\n }\n else if (mode === ModeByte.Alphanumeric) {\n var alphanumericResult = decodeAlphanumeric(stream, size);\n result.text += alphanumericResult.text;\n (_b = result.bytes).push.apply(_b, alphanumericResult.bytes);\n result.chunks.push({\n type: Mode.Alphanumeric,\n text: alphanumericResult.text,\n });\n }\n else if (mode === ModeByte.Byte) {\n var byteResult = decodeByte(stream, size);\n result.text += byteResult.text;\n (_c = result.bytes).push.apply(_c, byteResult.bytes);\n result.chunks.push({\n type: Mode.Byte,\n bytes: byteResult.bytes,\n text: byteResult.text,\n });\n }\n else if (mode === ModeByte.Kanji) {\n var kanjiResult = decodeKanji(stream, size);\n result.text += kanjiResult.text;\n (_d = result.bytes).push.apply(_d, kanjiResult.bytes);\n result.chunks.push({\n type: Mode.Kanji,\n bytes: kanjiResult.bytes,\n text: kanjiResult.text,\n });\n }\n }\n var _a, _b, _c, _d;\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// tslint:disable:no-bitwise\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitStream = /** @class */ (function () {\n function BitStream(bytes) {\n this.byteOffset = 0;\n this.bitOffset = 0;\n this.bytes = bytes;\n }\n BitStream.prototype.readBits = function (numBits) {\n if (numBits < 1 || numBits > 32 || numBits > this.available()) {\n throw new Error(\"Cannot read \" + numBits.toString() + \" bits\");\n }\n var result = 0;\n // First, read remainder from current byte\n if (this.bitOffset > 0) {\n var bitsLeft = 8 - this.bitOffset;\n var toRead = numBits < bitsLeft ? numBits : bitsLeft;\n var bitsToNotRead = bitsLeft - toRead;\n var mask = (0xFF >> (8 - toRead)) << bitsToNotRead;\n result = (this.bytes[this.byteOffset] & mask) >> bitsToNotRead;\n numBits -= toRead;\n this.bitOffset += toRead;\n if (this.bitOffset === 8) {\n this.bitOffset = 0;\n this.byteOffset++;\n }\n }\n // Next read whole bytes\n if (numBits > 0) {\n while (numBits >= 8) {\n result = (result << 8) | (this.bytes[this.byteOffset] & 0xFF);\n this.byteOffset++;\n numBits -= 8;\n }\n // Finally read a partial byte\n if (numBits > 0) {\n var bitsToNotRead = 8 - numBits;\n var mask = (0xFF >> bitsToNotRead) << bitsToNotRead;\n result = (result << numBits) | ((this.bytes[this.byteOffset] & mask) >> bitsToNotRead);\n this.bitOffset += numBits;\n }\n }\n return result;\n };\n BitStream.prototype.available = function () {\n return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset;\n };\n return BitStream;\n}());\nexports.BitStream = BitStream;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shiftJISTable = {\n 0x20: 0x0020,\n 0x21: 0x0021,\n 0x22: 0x0022,\n 0x23: 0x0023,\n 0x24: 0x0024,\n 0x25: 0x0025,\n 0x26: 0x0026,\n 0x27: 0x0027,\n 0x28: 0x0028,\n 0x29: 0x0029,\n 0x2A: 0x002A,\n 0x2B: 0x002B,\n 0x2C: 0x002C,\n 0x2D: 0x002D,\n 0x2E: 0x002E,\n 0x2F: 0x002F,\n 0x30: 0x0030,\n 0x31: 0x0031,\n 0x32: 0x0032,\n 0x33: 0x0033,\n 0x34: 0x0034,\n 0x35: 0x0035,\n 0x36: 0x0036,\n 0x37: 0x0037,\n 0x38: 0x0038,\n 0x39: 0x0039,\n 0x3A: 0x003A,\n 0x3B: 0x003B,\n 0x3C: 0x003C,\n 0x3D: 0x003D,\n 0x3E: 0x003E,\n 0x3F: 0x003F,\n 0x40: 0x0040,\n 0x41: 0x0041,\n 0x42: 0x0042,\n 0x43: 0x0043,\n 0x44: 0x0044,\n 0x45: 0x0045,\n 0x46: 0x0046,\n 0x47: 0x0047,\n 0x48: 0x0048,\n 0x49: 0x0049,\n 0x4A: 0x004A,\n 0x4B: 0x004B,\n 0x4C: 0x004C,\n 0x4D: 0x004D,\n 0x4E: 0x004E,\n 0x4F: 0x004F,\n 0x50: 0x0050,\n 0x51: 0x0051,\n 0x52: 0x0052,\n 0x53: 0x0053,\n 0x54: 0x0054,\n 0x55: 0x0055,\n 0x56: 0x0056,\n 0x57: 0x0057,\n 0x58: 0x0058,\n 0x59: 0x0059,\n 0x5A: 0x005A,\n 0x5B: 0x005B,\n 0x5C: 0x00A5,\n 0x5D: 0x005D,\n 0x5E: 0x005E,\n 0x5F: 0x005F,\n 0x60: 0x0060,\n 0x61: 0x0061,\n 0x62: 0x0062,\n 0x63: 0x0063,\n 0x64: 0x0064,\n 0x65: 0x0065,\n 0x66: 0x0066,\n 0x67: 0x0067,\n 0x68: 0x0068,\n 0x69: 0x0069,\n 0x6A: 0x006A,\n 0x6B: 0x006B,\n 0x6C: 0x006C,\n 0x6D: 0x006D,\n 0x6E: 0x006E,\n 0x6F: 0x006F,\n 0x70: 0x0070,\n 0x71: 0x0071,\n 0x72: 0x0072,\n 0x73: 0x0073,\n 0x74: 0x0074,\n 0x75: 0x0075,\n 0x76: 0x0076,\n 0x77: 0x0077,\n 0x78: 0x0078,\n 0x79: 0x0079,\n 0x7A: 0x007A,\n 0x7B: 0x007B,\n 0x7C: 0x007C,\n 0x7D: 0x007D,\n 0x7E: 0x203E,\n 0x8140: 0x3000,\n 0x8141: 0x3001,\n 0x8142: 0x3002,\n 0x8143: 0xFF0C,\n 0x8144: 0xFF0E,\n 0x8145: 0x30FB,\n 0x8146: 0xFF1A,\n 0x8147: 0xFF1B,\n 0x8148: 0xFF1F,\n 0x8149: 0xFF01,\n 0x814A: 0x309B,\n 0x814B: 0x309C,\n 0x814C: 0x00B4,\n 0x814D: 0xFF40,\n 0x814E: 0x00A8,\n 0x814F: 0xFF3E,\n 0x8150: 0xFFE3,\n 0x8151: 0xFF3F,\n 0x8152: 0x30FD,\n 0x8153: 0x30FE,\n 0x8154: 0x309D,\n 0x8155: 0x309E,\n 0x8156: 0x3003,\n 0x8157: 0x4EDD,\n 0x8158: 0x3005,\n 0x8159: 0x3006,\n 0x815A: 0x3007,\n 0x815B: 0x30FC,\n 0x815C: 0x2015,\n 0x815D: 0x2010,\n 0x815E: 0xFF0F,\n 0x815F: 0x005C,\n 0x8160: 0x301C,\n 0x8161: 0x2016,\n 0x8162: 0xFF5C,\n 0x8163: 0x2026,\n 0x8164: 0x2025,\n 0x8165: 0x2018,\n 0x8166: 0x2019,\n 0x8167: 0x201C,\n 0x8168: 0x201D,\n 0x8169: 0xFF08,\n 0x816A: 0xFF09,\n 0x816B: 0x3014,\n 0x816C: 0x3015,\n 0x816D: 0xFF3B,\n 0x816E: 0xFF3D,\n 0x816F: 0xFF5B,\n 0x8170: 0xFF5D,\n 0x8171: 0x3008,\n 0x8172: 0x3009,\n 0x8173: 0x300A,\n 0x8174: 0x300B,\n 0x8175: 0x300C,\n 0x8176: 0x300D,\n 0x8177: 0x300E,\n 0x8178: 0x300F,\n 0x8179: 0x3010,\n 0x817A: 0x3011,\n 0x817B: 0xFF0B,\n 0x817C: 0x2212,\n 0x817D: 0x00B1,\n 0x817E: 0x00D7,\n 0x8180: 0x00F7,\n 0x8181: 0xFF1D,\n 0x8182: 0x2260,\n 0x8183: 0xFF1C,\n 0x8184: 0xFF1E,\n 0x8185: 0x2266,\n 0x8186: 0x2267,\n 0x8187: 0x221E,\n 0x8188: 0x2234,\n 0x8189: 0x2642,\n 0x818A: 0x2640,\n 0x818B: 0x00B0,\n 0x818C: 0x2032,\n 0x818D: 0x2033,\n 0x818E: 0x2103,\n 0x818F: 0xFFE5,\n 0x8190: 0xFF04,\n 0x8191: 0x00A2,\n 0x8192: 0x00A3,\n 0x8193: 0xFF05,\n 0x8194: 0xFF03,\n 0x8195: 0xFF06,\n 0x8196: 0xFF0A,\n 0x8197: 0xFF20,\n 0x8198: 0x00A7,\n 0x8199: 0x2606,\n 0x819A: 0x2605,\n 0x819B: 0x25CB,\n 0x819C: 0x25CF,\n 0x819D: 0x25CE,\n 0x819E: 0x25C7,\n 0x819F: 0x25C6,\n 0x81A0: 0x25A1,\n 0x81A1: 0x25A0,\n 0x81A2: 0x25B3,\n 0x81A3: 0x25B2,\n 0x81A4: 0x25BD,\n 0x81A5: 0x25BC,\n 0x81A6: 0x203B,\n 0x81A7: 0x3012,\n 0x81A8: 0x2192,\n 0x81A9: 0x2190,\n 0x81AA: 0x2191,\n 0x81AB: 0x2193,\n 0x81AC: 0x3013,\n 0x81B8: 0x2208,\n 0x81B9: 0x220B,\n 0x81BA: 0x2286,\n 0x81BB: 0x2287,\n 0x81BC: 0x2282,\n 0x81BD: 0x2283,\n 0x81BE: 0x222A,\n 0x81BF: 0x2229,\n 0x81C8: 0x2227,\n 0x81C9: 0x2228,\n 0x81CA: 0x00AC,\n 0x81CB: 0x21D2,\n 0x81CC: 0x21D4,\n 0x81CD: 0x2200,\n 0x81CE: 0x2203,\n 0x81DA: 0x2220,\n 0x81DB: 0x22A5,\n 0x81DC: 0x2312,\n 0x81DD: 0x2202,\n 0x81DE: 0x2207,\n 0x81DF: 0x2261,\n 0x81E0: 0x2252,\n 0x81E1: 0x226A,\n 0x81E2: 0x226B,\n 0x81E3: 0x221A,\n 0x81E4: 0x223D,\n 0x81E5: 0x221D,\n 0x81E6: 0x2235,\n 0x81E7: 0x222B,\n 0x81E8: 0x222C,\n 0x81F0: 0x212B,\n 0x81F1: 0x2030,\n 0x81F2: 0x266F,\n 0x81F3: 0x266D,\n 0x81F4: 0x266A,\n 0x81F5: 0x2020,\n 0x81F6: 0x2021,\n 0x81F7: 0x00B6,\n 0x81FC: 0x25EF,\n 0x824F: 0xFF10,\n 0x8250: 0xFF11,\n 0x8251: 0xFF12,\n 0x8252: 0xFF13,\n 0x8253: 0xFF14,\n 0x8254: 0xFF15,\n 0x8255: 0xFF16,\n 0x8256: 0xFF17,\n 0x8257: 0xFF18,\n 0x8258: 0xFF19,\n 0x8260: 0xFF21,\n 0x8261: 0xFF22,\n 0x8262: 0xFF23,\n 0x8263: 0xFF24,\n 0x8264: 0xFF25,\n 0x8265: 0xFF26,\n 0x8266: 0xFF27,\n 0x8267: 0xFF28,\n 0x8268: 0xFF29,\n 0x8269: 0xFF2A,\n 0x826A: 0xFF2B,\n 0x826B: 0xFF2C,\n 0x826C: 0xFF2D,\n 0x826D: 0xFF2E,\n 0x826E: 0xFF2F,\n 0x826F: 0xFF30,\n 0x8270: 0xFF31,\n 0x8271: 0xFF32,\n 0x8272: 0xFF33,\n 0x8273: 0xFF34,\n 0x8274: 0xFF35,\n 0x8275: 0xFF36,\n 0x8276: 0xFF37,\n 0x8277: 0xFF38,\n 0x8278: 0xFF39,\n 0x8279: 0xFF3A,\n 0x8281: 0xFF41,\n 0x8282: 0xFF42,\n 0x8283: 0xFF43,\n 0x8284: 0xFF44,\n 0x8285: 0xFF45,\n 0x8286: 0xFF46,\n 0x8287: 0xFF47,\n 0x8288: 0xFF48,\n 0x8289: 0xFF49,\n 0x828A: 0xFF4A,\n 0x828B: 0xFF4B,\n 0x828C: 0xFF4C,\n 0x828D: 0xFF4D,\n 0x828E: 0xFF4E,\n 0x828F: 0xFF4F,\n 0x8290: 0xFF50,\n 0x8291: 0xFF51,\n 0x8292: 0xFF52,\n 0x8293: 0xFF53,\n 0x8294: 0xFF54,\n 0x8295: 0xFF55,\n 0x8296: 0xFF56,\n 0x8297: 0xFF57,\n 0x8298: 0xFF58,\n 0x8299: 0xFF59,\n 0x829A: 0xFF5A,\n 0x829F: 0x3041,\n 0x82A0: 0x3042,\n 0x82A1: 0x3043,\n 0x82A2: 0x3044,\n 0x82A3: 0x3045,\n 0x82A4: 0x3046,\n 0x82A5: 0x3047,\n 0x82A6: 0x3048,\n 0x82A7: 0x3049,\n 0x82A8: 0x304A,\n 0x82A9: 0x304B,\n 0x82AA: 0x304C,\n 0x82AB: 0x304D,\n 0x82AC: 0x304E,\n 0x82AD: 0x304F,\n 0x82AE: 0x3050,\n 0x82AF: 0x3051,\n 0x82B0: 0x3052,\n 0x82B1: 0x3053,\n 0x82B2: 0x3054,\n 0x82B3: 0x3055,\n 0x82B4: 0x3056,\n 0x82B5: 0x3057,\n 0x82B6: 0x3058,\n 0x82B7: 0x3059,\n 0x82B8: 0x305A,\n 0x82B9: 0x305B,\n 0x82BA: 0x305C,\n 0x82BB: 0x305D,\n 0x82BC: 0x305E,\n 0x82BD: 0x305F,\n 0x82BE: 0x3060,\n 0x82BF: 0x3061,\n 0x82C0: 0x3062,\n 0x82C1: 0x3063,\n 0x82C2: 0x3064,\n 0x82C3: 0x3065,\n 0x82C4: 0x3066,\n 0x82C5: 0x3067,\n 0x82C6: 0x3068,\n 0x82C7: 0x3069,\n 0x82C8: 0x306A,\n 0x82C9: 0x306B,\n 0x82CA: 0x306C,\n 0x82CB: 0x306D,\n 0x82CC: 0x306E,\n 0x82CD: 0x306F,\n 0x82CE: 0x3070,\n 0x82CF: 0x3071,\n 0x82D0: 0x3072,\n 0x82D1: 0x3073,\n 0x82D2: 0x3074,\n 0x82D3: 0x3075,\n 0x82D4: 0x3076,\n 0x82D5: 0x3077,\n 0x82D6: 0x3078,\n 0x82D7: 0x3079,\n 0x82D8: 0x307A,\n 0x82D9: 0x307B,\n 0x82DA: 0x307C,\n 0x82DB: 0x307D,\n 0x82DC: 0x307E,\n 0x82DD: 0x307F,\n 0x82DE: 0x3080,\n 0x82DF: 0x3081,\n 0x82E0: 0x3082,\n 0x82E1: 0x3083,\n 0x82E2: 0x3084,\n 0x82E3: 0x3085,\n 0x82E4: 0x3086,\n 0x82E5: 0x3087,\n 0x82E6: 0x3088,\n 0x82E7: 0x3089,\n 0x82E8: 0x308A,\n 0x82E9: 0x308B,\n 0x82EA: 0x308C,\n 0x82EB: 0x308D,\n 0x82EC: 0x308E,\n 0x82ED: 0x308F,\n 0x82EE: 0x3090,\n 0x82EF: 0x3091,\n 0x82F0: 0x3092,\n 0x82F1: 0x3093,\n 0x8340: 0x30A1,\n 0x8341: 0x30A2,\n 0x8342: 0x30A3,\n 0x8343: 0x30A4,\n 0x8344: 0x30A5,\n 0x8345: 0x30A6,\n 0x8346: 0x30A7,\n 0x8347: 0x30A8,\n 0x8348: 0x30A9,\n 0x8349: 0x30AA,\n 0x834A: 0x30AB,\n 0x834B: 0x30AC,\n 0x834C: 0x30AD,\n 0x834D: 0x30AE,\n 0x834E: 0x30AF,\n 0x834F: 0x30B0,\n 0x8350: 0x30B1,\n 0x8351: 0x30B2,\n 0x8352: 0x30B3,\n 0x8353: 0x30B4,\n 0x8354: 0x30B5,\n 0x8355: 0x30B6,\n 0x8356: 0x30B7,\n 0x8357: 0x30B8,\n 0x8358: 0x30B9,\n 0x8359: 0x30BA,\n 0x835A: 0x30BB,\n 0x835B: 0x30BC,\n 0x835C: 0x30BD,\n 0x835D: 0x30BE,\n 0x835E: 0x30BF,\n 0x835F: 0x30C0,\n 0x8360: 0x30C1,\n 0x8361: 0x30C2,\n 0x8362: 0x30C3,\n 0x8363: 0x30C4,\n 0x8364: 0x30C5,\n 0x8365: 0x30C6,\n 0x8366: 0x30C7,\n 0x8367: 0x30C8,\n 0x8368: 0x30C9,\n 0x8369: 0x30CA,\n 0x836A: 0x30CB,\n 0x836B: 0x30CC,\n 0x836C: 0x30CD,\n 0x836D: 0x30CE,\n 0x836E: 0x30CF,\n 0x836F: 0x30D0,\n 0x8370: 0x30D1,\n 0x8371: 0x30D2,\n 0x8372: 0x30D3,\n 0x8373: 0x30D4,\n 0x8374: 0x30D5,\n 0x8375: 0x30D6,\n 0x8376: 0x30D7,\n 0x8377: 0x30D8,\n 0x8378: 0x30D9,\n 0x8379: 0x30DA,\n 0x837A: 0x30DB,\n 0x837B: 0x30DC,\n 0x837C: 0x30DD,\n 0x837D: 0x30DE,\n 0x837E: 0x30DF,\n 0x8380: 0x30E0,\n 0x8381: 0x30E1,\n 0x8382: 0x30E2,\n 0x8383: 0x30E3,\n 0x8384: 0x30E4,\n 0x8385: 0x30E5,\n 0x8386: 0x30E6,\n 0x8387: 0x30E7,\n 0x8388: 0x30E8,\n 0x8389: 0x30E9,\n 0x838A: 0x30EA,\n 0x838B: 0x30EB,\n 0x838C: 0x30EC,\n 0x838D: 0x30ED,\n 0x838E: 0x30EE,\n 0x838F: 0x30EF,\n 0x8390: 0x30F0,\n 0x8391: 0x30F1,\n 0x8392: 0x30F2,\n 0x8393: 0x30F3,\n 0x8394: 0x30F4,\n 0x8395: 0x30F5,\n 0x8396: 0x30F6,\n 0x839F: 0x0391,\n 0x83A0: 0x0392,\n 0x83A1: 0x0393,\n 0x83A2: 0x0394,\n 0x83A3: 0x0395,\n 0x83A4: 0x0396,\n 0x83A5: 0x0397,\n 0x83A6: 0x0398,\n 0x83A7: 0x0399,\n 0x83A8: 0x039A,\n 0x83A9: 0x039B,\n 0x83AA: 0x039C,\n 0x83AB: 0x039D,\n 0x83AC: 0x039E,\n 0x83AD: 0x039F,\n 0x83AE: 0x03A0,\n 0x83AF: 0x03A1,\n 0x83B0: 0x03A3,\n 0x83B1: 0x03A4,\n 0x83B2: 0x03A5,\n 0x83B3: 0x03A6,\n 0x83B4: 0x03A7,\n 0x83B5: 0x03A8,\n 0x83B6: 0x03A9,\n 0x83BF: 0x03B1,\n 0x83C0: 0x03B2,\n 0x83C1: 0x03B3,\n 0x83C2: 0x03B4,\n 0x83C3: 0x03B5,\n 0x83C4: 0x03B6,\n 0x83C5: 0x03B7,\n 0x83C6: 0x03B8,\n 0x83C7: 0x03B9,\n 0x83C8: 0x03BA,\n 0x83C9: 0x03BB,\n 0x83CA: 0x03BC,\n 0x83CB: 0x03BD,\n 0x83CC: 0x03BE,\n 0x83CD: 0x03BF,\n 0x83CE: 0x03C0,\n 0x83CF: 0x03C1,\n 0x83D0: 0x03C3,\n 0x83D1: 0x03C4,\n 0x83D2: 0x03C5,\n 0x83D3: 0x03C6,\n 0x83D4: 0x03C7,\n 0x83D5: 0x03C8,\n 0x83D6: 0x03C9,\n 0x8440: 0x0410,\n 0x8441: 0x0411,\n 0x8442: 0x0412,\n 0x8443: 0x0413,\n 0x8444: 0x0414,\n 0x8445: 0x0415,\n 0x8446: 0x0401,\n 0x8447: 0x0416,\n 0x8448: 0x0417,\n 0x8449: 0x0418,\n 0x844A: 0x0419,\n 0x844B: 0x041A,\n 0x844C: 0x041B,\n 0x844D: 0x041C,\n 0x844E: 0x041D,\n 0x844F: 0x041E,\n 0x8450: 0x041F,\n 0x8451: 0x0420,\n 0x8452: 0x0421,\n 0x8453: 0x0422,\n 0x8454: 0x0423,\n 0x8455: 0x0424,\n 0x8456: 0x0425,\n 0x8457: 0x0426,\n 0x8458: 0x0427,\n 0x8459: 0x0428,\n 0x845A: 0x0429,\n 0x845B: 0x042A,\n 0x845C: 0x042B,\n 0x845D: 0x042C,\n 0x845E: 0x042D,\n 0x845F: 0x042E,\n 0x8460: 0x042F,\n 0x8470: 0x0430,\n 0x8471: 0x0431,\n 0x8472: 0x0432,\n 0x8473: 0x0433,\n 0x8474: 0x0434,\n 0x8475: 0x0435,\n 0x8476: 0x0451,\n 0x8477: 0x0436,\n 0x8478: 0x0437,\n 0x8479: 0x0438,\n 0x847A: 0x0439,\n 0x847B: 0x043A,\n 0x847C: 0x043B,\n 0x847D: 0x043C,\n 0x847E: 0x043D,\n 0x8480: 0x043E,\n 0x8481: 0x043F,\n 0x8482: 0x0440,\n 0x8483: 0x0441,\n 0x8484: 0x0442,\n 0x8485: 0x0443,\n 0x8486: 0x0444,\n 0x8487: 0x0445,\n 0x8488: 0x0446,\n 0x8489: 0x0447,\n 0x848A: 0x0448,\n 0x848B: 0x0449,\n 0x848C: 0x044A,\n 0x848D: 0x044B,\n 0x848E: 0x044C,\n 0x848F: 0x044D,\n 0x8490: 0x044E,\n 0x8491: 0x044F,\n 0x849F: 0x2500,\n 0x84A0: 0x2502,\n 0x84A1: 0x250C,\n 0x84A2: 0x2510,\n 0x84A3: 0x2518,\n 0x84A4: 0x2514,\n 0x84A5: 0x251C,\n 0x84A6: 0x252C,\n 0x84A7: 0x2524,\n 0x84A8: 0x2534,\n 0x84A9: 0x253C,\n 0x84AA: 0x2501,\n 0x84AB: 0x2503,\n 0x84AC: 0x250F,\n 0x84AD: 0x2513,\n 0x84AE: 0x251B,\n 0x84AF: 0x2517,\n 0x84B0: 0x2523,\n 0x84B1: 0x2533,\n 0x84B2: 0x252B,\n 0x84B3: 0x253B,\n 0x84B4: 0x254B,\n 0x84B5: 0x2520,\n 0x84B6: 0x252F,\n 0x84B7: 0x2528,\n 0x84B8: 0x2537,\n 0x84B9: 0x253F,\n 0x84BA: 0x251D,\n 0x84BB: 0x2530,\n 0x84BC: 0x2525,\n 0x84BD: 0x2538,\n 0x84BE: 0x2542,\n 0x889F: 0x4E9C,\n 0x88A0: 0x5516,\n 0x88A1: 0x5A03,\n 0x88A2: 0x963F,\n 0x88A3: 0x54C0,\n 0x88A4: 0x611B,\n 0x88A5: 0x6328,\n 0x88A6: 0x59F6,\n 0x88A7: 0x9022,\n 0x88A8: 0x8475,\n 0x88A9: 0x831C,\n 0x88AA: 0x7A50,\n 0x88AB: 0x60AA,\n 0x88AC: 0x63E1,\n 0x88AD: 0x6E25,\n 0x88AE: 0x65ED,\n 0x88AF: 0x8466,\n 0x88B0: 0x82A6,\n 0x88B1: 0x9BF5,\n 0x88B2: 0x6893,\n 0x88B3: 0x5727,\n 0x88B4: 0x65A1,\n 0x88B5: 0x6271,\n 0x88B6: 0x5B9B,\n 0x88B7: 0x59D0,\n 0x88B8: 0x867B,\n 0x88B9: 0x98F4,\n 0x88BA: 0x7D62,\n 0x88BB: 0x7DBE,\n 0x88BC: 0x9B8E,\n 0x88BD: 0x6216,\n 0x88BE: 0x7C9F,\n 0x88BF: 0x88B7,\n 0x88C0: 0x5B89,\n 0x88C1: 0x5EB5,\n 0x88C2: 0x6309,\n 0x88C3: 0x6697,\n 0x88C4: 0x6848,\n 0x88C5: 0x95C7,\n 0x88C6: 0x978D,\n 0x88C7: 0x674F,\n 0x88C8: 0x4EE5,\n 0x88C9: 0x4F0A,\n 0x88CA: 0x4F4D,\n 0x88CB: 0x4F9D,\n 0x88CC: 0x5049,\n 0x88CD: 0x56F2,\n 0x88CE: 0x5937,\n 0x88CF: 0x59D4,\n 0x88D0: 0x5A01,\n 0x88D1: 0x5C09,\n 0x88D2: 0x60DF,\n 0x88D3: 0x610F,\n 0x88D4: 0x6170,\n 0x88D5: 0x6613,\n 0x88D6: 0x6905,\n 0x88D7: 0x70BA,\n 0x88D8: 0x754F,\n 0x88D9: 0x7570,\n 0x88DA: 0x79FB,\n 0x88DB: 0x7DAD,\n 0x88DC: 0x7DEF,\n 0x88DD: 0x80C3,\n 0x88DE: 0x840E,\n 0x88DF: 0x8863,\n 0x88E0: 0x8B02,\n 0x88E1: 0x9055,\n 0x88E2: 0x907A,\n 0x88E3: 0x533B,\n 0x88E4: 0x4E95,\n 0x88E5: 0x4EA5,\n 0x88E6: 0x57DF,\n 0x88E7: 0x80B2,\n 0x88E8: 0x90C1,\n 0x88E9: 0x78EF,\n 0x88EA: 0x4E00,\n 0x88EB: 0x58F1,\n 0x88EC: 0x6EA2,\n 0x88ED: 0x9038,\n 0x88EE: 0x7A32,\n 0x88EF: 0x8328,\n 0x88F0: 0x828B,\n 0x88F1: 0x9C2F,\n 0x88F2: 0x5141,\n 0x88F3: 0x5370,\n 0x88F4: 0x54BD,\n 0x88F5: 0x54E1,\n 0x88F6: 0x56E0,\n 0x88F7: 0x59FB,\n 0x88F8: 0x5F15,\n 0x88F9: 0x98F2,\n 0x88FA: 0x6DEB,\n 0x88FB: 0x80E4,\n 0x88FC: 0x852D,\n 0x8940: 0x9662,\n 0x8941: 0x9670,\n 0x8942: 0x96A0,\n 0x8943: 0x97FB,\n 0x8944: 0x540B,\n 0x8945: 0x53F3,\n 0x8946: 0x5B87,\n 0x8947: 0x70CF,\n 0x8948: 0x7FBD,\n 0x8949: 0x8FC2,\n 0x894A: 0x96E8,\n 0x894B: 0x536F,\n 0x894C: 0x9D5C,\n 0x894D: 0x7ABA,\n 0x894E: 0x4E11,\n 0x894F: 0x7893,\n 0x8950: 0x81FC,\n 0x8951: 0x6E26,\n 0x8952: 0x5618,\n 0x8953: 0x5504,\n 0x8954: 0x6B1D,\n 0x8955: 0x851A,\n 0x8956: 0x9C3B,\n 0x8957: 0x59E5,\n 0x8958: 0x53A9,\n 0x8959: 0x6D66,\n 0x895A: 0x74DC,\n 0x895B: 0x958F,\n 0x895C: 0x5642,\n 0x895D: 0x4E91,\n 0x895E: 0x904B,\n 0x895F: 0x96F2,\n 0x8960: 0x834F,\n 0x8961: 0x990C,\n 0x8962: 0x53E1,\n 0x8963: 0x55B6,\n 0x8964: 0x5B30,\n 0x8965: 0x5F71,\n 0x8966: 0x6620,\n 0x8967: 0x66F3,\n 0x8968: 0x6804,\n 0x8969: 0x6C38,\n 0x896A: 0x6CF3,\n 0x896B: 0x6D29,\n 0x896C: 0x745B,\n 0x896D: 0x76C8,\n 0x896E: 0x7A4E,\n 0x896F: 0x9834,\n 0x8970: 0x82F1,\n 0x8971: 0x885B,\n 0x8972: 0x8A60,\n 0x8973: 0x92ED,\n 0x8974: 0x6DB2,\n 0x8975: 0x75AB,\n 0x8976: 0x76CA,\n 0x8977: 0x99C5,\n 0x8978: 0x60A6,\n 0x8979: 0x8B01,\n 0x897A: 0x8D8A,\n 0x897B: 0x95B2,\n 0x897C: 0x698E,\n 0x897D: 0x53AD,\n 0x897E: 0x5186,\n 0x8980: 0x5712,\n 0x8981: 0x5830,\n 0x8982: 0x5944,\n 0x8983: 0x5BB4,\n 0x8984: 0x5EF6,\n 0x8985: 0x6028,\n 0x8986: 0x63A9,\n 0x8987: 0x63F4,\n 0x8988: 0x6CBF,\n 0x8989: 0x6F14,\n 0x898A: 0x708E,\n 0x898B: 0x7114,\n 0x898C: 0x7159,\n 0x898D: 0x71D5,\n 0x898E: 0x733F,\n 0x898F: 0x7E01,\n 0x8990: 0x8276,\n 0x8991: 0x82D1,\n 0x8992: 0x8597,\n 0x8993: 0x9060,\n 0x8994: 0x925B,\n 0x8995: 0x9D1B,\n 0x8996: 0x5869,\n 0x8997: 0x65BC,\n 0x8998: 0x6C5A,\n 0x8999: 0x7525,\n 0x899A: 0x51F9,\n 0x899B: 0x592E,\n 0x899C: 0x5965,\n 0x899D: 0x5F80,\n 0x899E: 0x5FDC,\n 0x899F: 0x62BC,\n 0x89A0: 0x65FA,\n 0x89A1: 0x6A2A,\n 0x89A2: 0x6B27,\n 0x89A3: 0x6BB4,\n 0x89A4: 0x738B,\n 0x89A5: 0x7FC1,\n 0x89A6: 0x8956,\n 0x89A7: 0x9D2C,\n 0x89A8: 0x9D0E,\n 0x89A9: 0x9EC4,\n 0x89AA: 0x5CA1,\n 0x89AB: 0x6C96,\n 0x89AC: 0x837B,\n 0x89AD: 0x5104,\n 0x89AE: 0x5C4B,\n 0x89AF: 0x61B6,\n 0x89B0: 0x81C6,\n 0x89B1: 0x6876,\n 0x89B2: 0x7261,\n 0x89B3: 0x4E59,\n 0x89B4: 0x4FFA,\n 0x89B5: 0x5378,\n 0x89B6: 0x6069,\n 0x89B7: 0x6E29,\n 0x89B8: 0x7A4F,\n 0x89B9: 0x97F3,\n 0x89BA: 0x4E0B,\n 0x89BB: 0x5316,\n 0x89BC: 0x4EEE,\n 0x89BD: 0x4F55,\n 0x89BE: 0x4F3D,\n 0x89BF: 0x4FA1,\n 0x89C0: 0x4F73,\n 0x89C1: 0x52A0,\n 0x89C2: 0x53EF,\n 0x89C3: 0x5609,\n 0x89C4: 0x590F,\n 0x89C5: 0x5AC1,\n 0x89C6: 0x5BB6,\n 0x89C7: 0x5BE1,\n 0x89C8: 0x79D1,\n 0x89C9: 0x6687,\n 0x89CA: 0x679C,\n 0x89CB: 0x67B6,\n 0x89CC: 0x6B4C,\n 0x89CD: 0x6CB3,\n 0x89CE: 0x706B,\n 0x89CF: 0x73C2,\n 0x89D0: 0x798D,\n 0x89D1: 0x79BE,\n 0x89D2: 0x7A3C,\n 0x89D3: 0x7B87,\n 0x89D4: 0x82B1,\n 0x89D5: 0x82DB,\n 0x89D6: 0x8304,\n 0x89D7: 0x8377,\n 0x89D8: 0x83EF,\n 0x89D9: 0x83D3,\n 0x89DA: 0x8766,\n 0x89DB: 0x8AB2,\n 0x89DC: 0x5629,\n 0x89DD: 0x8CA8,\n 0x89DE: 0x8FE6,\n 0x89DF: 0x904E,\n 0x89E0: 0x971E,\n 0x89E1: 0x868A,\n 0x89E2: 0x4FC4,\n 0x89E3: 0x5CE8,\n 0x89E4: 0x6211,\n 0x89E5: 0x7259,\n 0x89E6: 0x753B,\n 0x89E7: 0x81E5,\n 0x89E8: 0x82BD,\n 0x89E9: 0x86FE,\n 0x89EA: 0x8CC0,\n 0x89EB: 0x96C5,\n 0x89EC: 0x9913,\n 0x89ED: 0x99D5,\n 0x89EE: 0x4ECB,\n 0x89EF: 0x4F1A,\n 0x89F0: 0x89E3,\n 0x89F1: 0x56DE,\n 0x89F2: 0x584A,\n 0x89F3: 0x58CA,\n 0x89F4: 0x5EFB,\n 0x89F5: 0x5FEB,\n 0x89F6: 0x602A,\n 0x89F7: 0x6094,\n 0x89F8: 0x6062,\n 0x89F9: 0x61D0,\n 0x89FA: 0x6212,\n 0x89FB: 0x62D0,\n 0x89FC: 0x6539,\n 0x8A40: 0x9B41,\n 0x8A41: 0x6666,\n 0x8A42: 0x68B0,\n 0x8A43: 0x6D77,\n 0x8A44: 0x7070,\n 0x8A45: 0x754C,\n 0x8A46: 0x7686,\n 0x8A47: 0x7D75,\n 0x8A48: 0x82A5,\n 0x8A49: 0x87F9,\n 0x8A4A: 0x958B,\n 0x8A4B: 0x968E,\n 0x8A4C: 0x8C9D,\n 0x8A4D: 0x51F1,\n 0x8A4E: 0x52BE,\n 0x8A4F: 0x5916,\n 0x8A50: 0x54B3,\n 0x8A51: 0x5BB3,\n 0x8A52: 0x5D16,\n 0x8A53: 0x6168,\n 0x8A54: 0x6982,\n 0x8A55: 0x6DAF,\n 0x8A56: 0x788D,\n 0x8A57: 0x84CB,\n 0x8A58: 0x8857,\n 0x8A59: 0x8A72,\n 0x8A5A: 0x93A7,\n 0x8A5B: 0x9AB8,\n 0x8A5C: 0x6D6C,\n 0x8A5D: 0x99A8,\n 0x8A5E: 0x86D9,\n 0x8A5F: 0x57A3,\n 0x8A60: 0x67FF,\n 0x8A61: 0x86CE,\n 0x8A62: 0x920E,\n 0x8A63: 0x5283,\n 0x8A64: 0x5687,\n 0x8A65: 0x5404,\n 0x8A66: 0x5ED3,\n 0x8A67: 0x62E1,\n 0x8A68: 0x64B9,\n 0x8A69: 0x683C,\n 0x8A6A: 0x6838,\n 0x8A6B: 0x6BBB,\n 0x8A6C: 0x7372,\n 0x8A6D: 0x78BA,\n 0x8A6E: 0x7A6B,\n 0x8A6F: 0x899A,\n 0x8A70: 0x89D2,\n 0x8A71: 0x8D6B,\n 0x8A72: 0x8F03,\n 0x8A73: 0x90ED,\n 0x8A74: 0x95A3,\n 0x8A75: 0x9694,\n 0x8A76: 0x9769,\n 0x8A77: 0x5B66,\n 0x8A78: 0x5CB3,\n 0x8A79: 0x697D,\n 0x8A7A: 0x984D,\n 0x8A7B: 0x984E,\n 0x8A7C: 0x639B,\n 0x8A7D: 0x7B20,\n 0x8A7E: 0x6A2B,\n 0x8A80: 0x6A7F,\n 0x8A81: 0x68B6,\n 0x8A82: 0x9C0D,\n 0x8A83: 0x6F5F,\n 0x8A84: 0x5272,\n 0x8A85: 0x559D,\n 0x8A86: 0x6070,\n 0x8A87: 0x62EC,\n 0x8A88: 0x6D3B,\n 0x8A89: 0x6E07,\n 0x8A8A: 0x6ED1,\n 0x8A8B: 0x845B,\n 0x8A8C: 0x8910,\n 0x8A8D: 0x8F44,\n 0x8A8E: 0x4E14,\n 0x8A8F: 0x9C39,\n 0x8A90: 0x53F6,\n 0x8A91: 0x691B,\n 0x8A92: 0x6A3A,\n 0x8A93: 0x9784,\n 0x8A94: 0x682A,\n 0x8A95: 0x515C,\n 0x8A96: 0x7AC3,\n 0x8A97: 0x84B2,\n 0x8A98: 0x91DC,\n 0x8A99: 0x938C,\n 0x8A9A: 0x565B,\n 0x8A9B: 0x9D28,\n 0x8A9C: 0x6822,\n 0x8A9D: 0x8305,\n 0x8A9E: 0x8431,\n 0x8A9F: 0x7CA5,\n 0x8AA0: 0x5208,\n 0x8AA1: 0x82C5,\n 0x8AA2: 0x74E6,\n 0x8AA3: 0x4E7E,\n 0x8AA4: 0x4F83,\n 0x8AA5: 0x51A0,\n 0x8AA6: 0x5BD2,\n 0x8AA7: 0x520A,\n 0x8AA8: 0x52D8,\n 0x8AA9: 0x52E7,\n 0x8AAA: 0x5DFB,\n 0x8AAB: 0x559A,\n 0x8AAC: 0x582A,\n 0x8AAD: 0x59E6,\n 0x8AAE: 0x5B8C,\n 0x8AAF: 0x5B98,\n 0x8AB0: 0x5BDB,\n 0x8AB1: 0x5E72,\n 0x8AB2: 0x5E79,\n 0x8AB3: 0x60A3,\n 0x8AB4: 0x611F,\n 0x8AB5: 0x6163,\n 0x8AB6: 0x61BE,\n 0x8AB7: 0x63DB,\n 0x8AB8: 0x6562,\n 0x8AB9: 0x67D1,\n 0x8ABA: 0x6853,\n 0x8ABB: 0x68FA,\n 0x8ABC: 0x6B3E,\n 0x8ABD: 0x6B53,\n 0x8ABE: 0x6C57,\n 0x8ABF: 0x6F22,\n 0x8AC0: 0x6F97,\n 0x8AC1: 0x6F45,\n 0x8AC2: 0x74B0,\n 0x8AC3: 0x7518,\n 0x8AC4: 0x76E3,\n 0x8AC5: 0x770B,\n 0x8AC6: 0x7AFF,\n 0x8AC7: 0x7BA1,\n 0x8AC8: 0x7C21,\n 0x8AC9: 0x7DE9,\n 0x8ACA: 0x7F36,\n 0x8ACB: 0x7FF0,\n 0x8ACC: 0x809D,\n 0x8ACD: 0x8266,\n 0x8ACE: 0x839E,\n 0x8ACF: 0x89B3,\n 0x8AD0: 0x8ACC,\n 0x8AD1: 0x8CAB,\n 0x8AD2: 0x9084,\n 0x8AD3: 0x9451,\n 0x8AD4: 0x9593,\n 0x8AD5: 0x9591,\n 0x8AD6: 0x95A2,\n 0x8AD7: 0x9665,\n 0x8AD8: 0x97D3,\n 0x8AD9: 0x9928,\n 0x8ADA: 0x8218,\n 0x8ADB: 0x4E38,\n 0x8ADC: 0x542B,\n 0x8ADD: 0x5CB8,\n 0x8ADE: 0x5DCC,\n 0x8ADF: 0x73A9,\n 0x8AE0: 0x764C,\n 0x8AE1: 0x773C,\n 0x8AE2: 0x5CA9,\n 0x8AE3: 0x7FEB,\n 0x8AE4: 0x8D0B,\n 0x8AE5: 0x96C1,\n 0x8AE6: 0x9811,\n 0x8AE7: 0x9854,\n 0x8AE8: 0x9858,\n 0x8AE9: 0x4F01,\n 0x8AEA: 0x4F0E,\n 0x8AEB: 0x5371,\n 0x8AEC: 0x559C,\n 0x8AED: 0x5668,\n 0x8AEE: 0x57FA,\n 0x8AEF: 0x5947,\n 0x8AF0: 0x5B09,\n 0x8AF1: 0x5BC4,\n 0x8AF2: 0x5C90,\n 0x8AF3: 0x5E0C,\n 0x8AF4: 0x5E7E,\n 0x8AF5: 0x5FCC,\n 0x8AF6: 0x63EE,\n 0x8AF7: 0x673A,\n 0x8AF8: 0x65D7,\n 0x8AF9: 0x65E2,\n 0x8AFA: 0x671F,\n 0x8AFB: 0x68CB,\n 0x8AFC: 0x68C4,\n 0x8B40: 0x6A5F,\n 0x8B41: 0x5E30,\n 0x8B42: 0x6BC5,\n 0x8B43: 0x6C17,\n 0x8B44: 0x6C7D,\n 0x8B45: 0x757F,\n 0x8B46: 0x7948,\n 0x8B47: 0x5B63,\n 0x8B48: 0x7A00,\n 0x8B49: 0x7D00,\n 0x8B4A: 0x5FBD,\n 0x8B4B: 0x898F,\n 0x8B4C: 0x8A18,\n 0x8B4D: 0x8CB4,\n 0x8B4E: 0x8D77,\n 0x8B4F: 0x8ECC,\n 0x8B50: 0x8F1D,\n 0x8B51: 0x98E2,\n 0x8B52: 0x9A0E,\n 0x8B53: 0x9B3C,\n 0x8B54: 0x4E80,\n 0x8B55: 0x507D,\n 0x8B56: 0x5100,\n 0x8B57: 0x5993,\n 0x8B58: 0x5B9C,\n 0x8B59: 0x622F,\n 0x8B5A: 0x6280,\n 0x8B5B: 0x64EC,\n 0x8B5C: 0x6B3A,\n 0x8B5D: 0x72A0,\n 0x8B5E: 0x7591,\n 0x8B5F: 0x7947,\n 0x8B60: 0x7FA9,\n 0x8B61: 0x87FB,\n 0x8B62: 0x8ABC,\n 0x8B63: 0x8B70,\n 0x8B64: 0x63AC,\n 0x8B65: 0x83CA,\n 0x8B66: 0x97A0,\n 0x8B67: 0x5409,\n 0x8B68: 0x5403,\n 0x8B69: 0x55AB,\n 0x8B6A: 0x6854,\n 0x8B6B: 0x6A58,\n 0x8B6C: 0x8A70,\n 0x8B6D: 0x7827,\n 0x8B6E: 0x6775,\n 0x8B6F: 0x9ECD,\n 0x8B70: 0x5374,\n 0x8B71: 0x5BA2,\n 0x8B72: 0x811A,\n 0x8B73: 0x8650,\n 0x8B74: 0x9006,\n 0x8B75: 0x4E18,\n 0x8B76: 0x4E45,\n 0x8B77: 0x4EC7,\n 0x8B78: 0x4F11,\n 0x8B79: 0x53CA,\n 0x8B7A: 0x5438,\n 0x8B7B: 0x5BAE,\n 0x8B7C: 0x5F13,\n 0x8B7D: 0x6025,\n 0x8B7E: 0x6551,\n 0x8B80: 0x673D,\n 0x8B81: 0x6C42,\n 0x8B82: 0x6C72,\n 0x8B83: 0x6CE3,\n 0x8B84: 0x7078,\n 0x8B85: 0x7403,\n 0x8B86: 0x7A76,\n 0x8B87: 0x7AAE,\n 0x8B88: 0x7B08,\n 0x8B89: 0x7D1A,\n 0x8B8A: 0x7CFE,\n 0x8B8B: 0x7D66,\n 0x8B8C: 0x65E7,\n 0x8B8D: 0x725B,\n 0x8B8E: 0x53BB,\n 0x8B8F: 0x5C45,\n 0x8B90: 0x5DE8,\n 0x8B91: 0x62D2,\n 0x8B92: 0x62E0,\n 0x8B93: 0x6319,\n 0x8B94: 0x6E20,\n 0x8B95: 0x865A,\n 0x8B96: 0x8A31,\n 0x8B97: 0x8DDD,\n 0x8B98: 0x92F8,\n 0x8B99: 0x6F01,\n 0x8B9A: 0x79A6,\n 0x8B9B: 0x9B5A,\n 0x8B9C: 0x4EA8,\n 0x8B9D: 0x4EAB,\n 0x8B9E: 0x4EAC,\n 0x8B9F: 0x4F9B,\n 0x8BA0: 0x4FA0,\n 0x8BA1: 0x50D1,\n 0x8BA2: 0x5147,\n 0x8BA3: 0x7AF6,\n 0x8BA4: 0x5171,\n 0x8BA5: 0x51F6,\n 0x8BA6: 0x5354,\n 0x8BA7: 0x5321,\n 0x8BA8: 0x537F,\n 0x8BA9: 0x53EB,\n 0x8BAA: 0x55AC,\n 0x8BAB: 0x5883,\n 0x8BAC: 0x5CE1,\n 0x8BAD: 0x5F37,\n 0x8BAE: 0x5F4A,\n 0x8BAF: 0x602F,\n 0x8BB0: 0x6050,\n 0x8BB1: 0x606D,\n 0x8BB2: 0x631F,\n 0x8BB3: 0x6559,\n 0x8BB4: 0x6A4B,\n 0x8BB5: 0x6CC1,\n 0x8BB6: 0x72C2,\n 0x8BB7: 0x72ED,\n 0x8BB8: 0x77EF,\n 0x8BB9: 0x80F8,\n 0x8BBA: 0x8105,\n 0x8BBB: 0x8208,\n 0x8BBC: 0x854E,\n 0x8BBD: 0x90F7,\n 0x8BBE: 0x93E1,\n 0x8BBF: 0x97FF,\n 0x8BC0: 0x9957,\n 0x8BC1: 0x9A5A,\n 0x8BC2: 0x4EF0,\n 0x8BC3: 0x51DD,\n 0x8BC4: 0x5C2D,\n 0x8BC5: 0x6681,\n 0x8BC6: 0x696D,\n 0x8BC7: 0x5C40,\n 0x8BC8: 0x66F2,\n 0x8BC9: 0x6975,\n 0x8BCA: 0x7389,\n 0x8BCB: 0x6850,\n 0x8BCC: 0x7C81,\n 0x8BCD: 0x50C5,\n 0x8BCE: 0x52E4,\n 0x8BCF: 0x5747,\n 0x8BD0: 0x5DFE,\n 0x8BD1: 0x9326,\n 0x8BD2: 0x65A4,\n 0x8BD3: 0x6B23,\n 0x8BD4: 0x6B3D,\n 0x8BD5: 0x7434,\n 0x8BD6: 0x7981,\n 0x8BD7: 0x79BD,\n 0x8BD8: 0x7B4B,\n 0x8BD9: 0x7DCA,\n 0x8BDA: 0x82B9,\n 0x8BDB: 0x83CC,\n 0x8BDC: 0x887F,\n 0x8BDD: 0x895F,\n 0x8BDE: 0x8B39,\n 0x8BDF: 0x8FD1,\n 0x8BE0: 0x91D1,\n 0x8BE1: 0x541F,\n 0x8BE2: 0x9280,\n 0x8BE3: 0x4E5D,\n 0x8BE4: 0x5036,\n 0x8BE5: 0x53E5,\n 0x8BE6: 0x533A,\n 0x8BE7: 0x72D7,\n 0x8BE8: 0x7396,\n 0x8BE9: 0x77E9,\n 0x8BEA: 0x82E6,\n 0x8BEB: 0x8EAF,\n 0x8BEC: 0x99C6,\n 0x8BED: 0x99C8,\n 0x8BEE: 0x99D2,\n 0x8BEF: 0x5177,\n 0x8BF0: 0x611A,\n 0x8BF1: 0x865E,\n 0x8BF2: 0x55B0,\n 0x8BF3: 0x7A7A,\n 0x8BF4: 0x5076,\n 0x8BF5: 0x5BD3,\n 0x8BF6: 0x9047,\n 0x8BF7: 0x9685,\n 0x8BF8: 0x4E32,\n 0x8BF9: 0x6ADB,\n 0x8BFA: 0x91E7,\n 0x8BFB: 0x5C51,\n 0x8BFC: 0x5C48,\n 0x8C40: 0x6398,\n 0x8C41: 0x7A9F,\n 0x8C42: 0x6C93,\n 0x8C43: 0x9774,\n 0x8C44: 0x8F61,\n 0x8C45: 0x7AAA,\n 0x8C46: 0x718A,\n 0x8C47: 0x9688,\n 0x8C48: 0x7C82,\n 0x8C49: 0x6817,\n 0x8C4A: 0x7E70,\n 0x8C4B: 0x6851,\n 0x8C4C: 0x936C,\n 0x8C4D: 0x52F2,\n 0x8C4E: 0x541B,\n 0x8C4F: 0x85AB,\n 0x8C50: 0x8A13,\n 0x8C51: 0x7FA4,\n 0x8C52: 0x8ECD,\n 0x8C53: 0x90E1,\n 0x8C54: 0x5366,\n 0x8C55: 0x8888,\n 0x8C56: 0x7941,\n 0x8C57: 0x4FC2,\n 0x8C58: 0x50BE,\n 0x8C59: 0x5211,\n 0x8C5A: 0x5144,\n 0x8C5B: 0x5553,\n 0x8C5C: 0x572D,\n 0x8C5D: 0x73EA,\n 0x8C5E: 0x578B,\n 0x8C5F: 0x5951,\n 0x8C60: 0x5F62,\n 0x8C61: 0x5F84,\n 0x8C62: 0x6075,\n 0x8C63: 0x6176,\n 0x8C64: 0x6167,\n 0x8C65: 0x61A9,\n 0x8C66: 0x63B2,\n 0x8C67: 0x643A,\n 0x8C68: 0x656C,\n 0x8C69: 0x666F,\n 0x8C6A: 0x6842,\n 0x8C6B: 0x6E13,\n 0x8C6C: 0x7566,\n 0x8C6D: 0x7A3D,\n 0x8C6E: 0x7CFB,\n 0x8C6F: 0x7D4C,\n 0x8C70: 0x7D99,\n 0x8C71: 0x7E4B,\n 0x8C72: 0x7F6B,\n 0x8C73: 0x830E,\n 0x8C74: 0x834A,\n 0x8C75: 0x86CD,\n 0x8C76: 0x8A08,\n 0x8C77: 0x8A63,\n 0x8C78: 0x8B66,\n 0x8C79: 0x8EFD,\n 0x8C7A: 0x981A,\n 0x8C7B: 0x9D8F,\n 0x8C7C: 0x82B8,\n 0x8C7D: 0x8FCE,\n 0x8C7E: 0x9BE8,\n 0x8C80: 0x5287,\n 0x8C81: 0x621F,\n 0x8C82: 0x6483,\n 0x8C83: 0x6FC0,\n 0x8C84: 0x9699,\n 0x8C85: 0x6841,\n 0x8C86: 0x5091,\n 0x8C87: 0x6B20,\n 0x8C88: 0x6C7A,\n 0x8C89: 0x6F54,\n 0x8C8A: 0x7A74,\n 0x8C8B: 0x7D50,\n 0x8C8C: 0x8840,\n 0x8C8D: 0x8A23,\n 0x8C8E: 0x6708,\n 0x8C8F: 0x4EF6,\n 0x8C90: 0x5039,\n 0x8C91: 0x5026,\n 0x8C92: 0x5065,\n 0x8C93: 0x517C,\n 0x8C94: 0x5238,\n 0x8C95: 0x5263,\n 0x8C96: 0x55A7,\n 0x8C97: 0x570F,\n 0x8C98: 0x5805,\n 0x8C99: 0x5ACC,\n 0x8C9A: 0x5EFA,\n 0x8C9B: 0x61B2,\n 0x8C9C: 0x61F8,\n 0x8C9D: 0x62F3,\n 0x8C9E: 0x6372,\n 0x8C9F: 0x691C,\n 0x8CA0: 0x6A29,\n 0x8CA1: 0x727D,\n 0x8CA2: 0x72AC,\n 0x8CA3: 0x732E,\n 0x8CA4: 0x7814,\n 0x8CA5: 0x786F,\n 0x8CA6: 0x7D79,\n 0x8CA7: 0x770C,\n 0x8CA8: 0x80A9,\n 0x8CA9: 0x898B,\n 0x8CAA: 0x8B19,\n 0x8CAB: 0x8CE2,\n 0x8CAC: 0x8ED2,\n 0x8CAD: 0x9063,\n 0x8CAE: 0x9375,\n 0x8CAF: 0x967A,\n 0x8CB0: 0x9855,\n 0x8CB1: 0x9A13,\n 0x8CB2: 0x9E78,\n 0x8CB3: 0x5143,\n 0x8CB4: 0x539F,\n 0x8CB5: 0x53B3,\n 0x8CB6: 0x5E7B,\n 0x8CB7: 0x5F26,\n 0x8CB8: 0x6E1B,\n 0x8CB9: 0x6E90,\n 0x8CBA: 0x7384,\n 0x8CBB: 0x73FE,\n 0x8CBC: 0x7D43,\n 0x8CBD: 0x8237,\n 0x8CBE: 0x8A00,\n 0x8CBF: 0x8AFA,\n 0x8CC0: 0x9650,\n 0x8CC1: 0x4E4E,\n 0x8CC2: 0x500B,\n 0x8CC3: 0x53E4,\n 0x8CC4: 0x547C,\n 0x8CC5: 0x56FA,\n 0x8CC6: 0x59D1,\n 0x8CC7: 0x5B64,\n 0x8CC8: 0x5DF1,\n 0x8CC9: 0x5EAB,\n 0x8CCA: 0x5F27,\n 0x8CCB: 0x6238,\n 0x8CCC: 0x6545,\n 0x8CCD: 0x67AF,\n 0x8CCE: 0x6E56,\n 0x8CCF: 0x72D0,\n 0x8CD0: 0x7CCA,\n 0x8CD1: 0x88B4,\n 0x8CD2: 0x80A1,\n 0x8CD3: 0x80E1,\n 0x8CD4: 0x83F0,\n 0x8CD5: 0x864E,\n 0x8CD6: 0x8A87,\n 0x8CD7: 0x8DE8,\n 0x8CD8: 0x9237,\n 0x8CD9: 0x96C7,\n 0x8CDA: 0x9867,\n 0x8CDB: 0x9F13,\n 0x8CDC: 0x4E94,\n 0x8CDD: 0x4E92,\n 0x8CDE: 0x4F0D,\n 0x8CDF: 0x5348,\n 0x8CE0: 0x5449,\n 0x8CE1: 0x543E,\n 0x8CE2: 0x5A2F,\n 0x8CE3: 0x5F8C,\n 0x8CE4: 0x5FA1,\n 0x8CE5: 0x609F,\n 0x8CE6: 0x68A7,\n 0x8CE7: 0x6A8E,\n 0x8CE8: 0x745A,\n 0x8CE9: 0x7881,\n 0x8CEA: 0x8A9E,\n 0x8CEB: 0x8AA4,\n 0x8CEC: 0x8B77,\n 0x8CED: 0x9190,\n 0x8CEE: 0x4E5E,\n 0x8CEF: 0x9BC9,\n 0x8CF0: 0x4EA4,\n 0x8CF1: 0x4F7C,\n 0x8CF2: 0x4FAF,\n 0x8CF3: 0x5019,\n 0x8CF4: 0x5016,\n 0x8CF5: 0x5149,\n 0x8CF6: 0x516C,\n 0x8CF7: 0x529F,\n 0x8CF8: 0x52B9,\n 0x8CF9: 0x52FE,\n 0x8CFA: 0x539A,\n 0x8CFB: 0x53E3,\n 0x8CFC: 0x5411,\n 0x8D40: 0x540E,\n 0x8D41: 0x5589,\n 0x8D42: 0x5751,\n 0x8D43: 0x57A2,\n 0x8D44: 0x597D,\n 0x8D45: 0x5B54,\n 0x8D46: 0x5B5D,\n 0x8D47: 0x5B8F,\n 0x8D48: 0x5DE5,\n 0x8D49: 0x5DE7,\n 0x8D4A: 0x5DF7,\n 0x8D4B: 0x5E78,\n 0x8D4C: 0x5E83,\n 0x8D4D: 0x5E9A,\n 0x8D4E: 0x5EB7,\n 0x8D4F: 0x5F18,\n 0x8D50: 0x6052,\n 0x8D51: 0x614C,\n 0x8D52: 0x6297,\n 0x8D53: 0x62D8,\n 0x8D54: 0x63A7,\n 0x8D55: 0x653B,\n 0x8D56: 0x6602,\n 0x8D57: 0x6643,\n 0x8D58: 0x66F4,\n 0x8D59: 0x676D,\n 0x8D5A: 0x6821,\n 0x8D5B: 0x6897,\n 0x8D5C: 0x69CB,\n 0x8D5D: 0x6C5F,\n 0x8D5E: 0x6D2A,\n 0x8D5F: 0x6D69,\n 0x8D60: 0x6E2F,\n 0x8D61: 0x6E9D,\n 0x8D62: 0x7532,\n 0x8D63: 0x7687,\n 0x8D64: 0x786C,\n 0x8D65: 0x7A3F,\n 0x8D66: 0x7CE0,\n 0x8D67: 0x7D05,\n 0x8D68: 0x7D18,\n 0x8D69: 0x7D5E,\n 0x8D6A: 0x7DB1,\n 0x8D6B: 0x8015,\n 0x8D6C: 0x8003,\n 0x8D6D: 0x80AF,\n 0x8D6E: 0x80B1,\n 0x8D6F: 0x8154,\n 0x8D70: 0x818F,\n 0x8D71: 0x822A,\n 0x8D72: 0x8352,\n 0x8D73: 0x884C,\n 0x8D74: 0x8861,\n 0x8D75: 0x8B1B,\n 0x8D76: 0x8CA2,\n 0x8D77: 0x8CFC,\n 0x8D78: 0x90CA,\n 0x8D79: 0x9175,\n 0x8D7A: 0x9271,\n 0x8D7B: 0x783F,\n 0x8D7C: 0x92FC,\n 0x8D7D: 0x95A4,\n 0x8D7E: 0x964D,\n 0x8D80: 0x9805,\n 0x8D81: 0x9999,\n 0x8D82: 0x9AD8,\n 0x8D83: 0x9D3B,\n 0x8D84: 0x525B,\n 0x8D85: 0x52AB,\n 0x8D86: 0x53F7,\n 0x8D87: 0x5408,\n 0x8D88: 0x58D5,\n 0x8D89: 0x62F7,\n 0x8D8A: 0x6FE0,\n 0x8D8B: 0x8C6A,\n 0x8D8C: 0x8F5F,\n 0x8D8D: 0x9EB9,\n 0x8D8E: 0x514B,\n 0x8D8F: 0x523B,\n 0x8D90: 0x544A,\n 0x8D91: 0x56FD,\n 0x8D92: 0x7A40,\n 0x8D93: 0x9177,\n 0x8D94: 0x9D60,\n 0x8D95: 0x9ED2,\n 0x8D96: 0x7344,\n 0x8D97: 0x6F09,\n 0x8D98: 0x8170,\n 0x8D99: 0x7511,\n 0x8D9A: 0x5FFD,\n 0x8D9B: 0x60DA,\n 0x8D9C: 0x9AA8,\n 0x8D9D: 0x72DB,\n 0x8D9E: 0x8FBC,\n 0x8D9F: 0x6B64,\n 0x8DA0: 0x9803,\n 0x8DA1: 0x4ECA,\n 0x8DA2: 0x56F0,\n 0x8DA3: 0x5764,\n 0x8DA4: 0x58BE,\n 0x8DA5: 0x5A5A,\n 0x8DA6: 0x6068,\n 0x8DA7: 0x61C7,\n 0x8DA8: 0x660F,\n 0x8DA9: 0x6606,\n 0x8DAA: 0x6839,\n 0x8DAB: 0x68B1,\n 0x8DAC: 0x6DF7,\n 0x8DAD: 0x75D5,\n 0x8DAE: 0x7D3A,\n 0x8DAF: 0x826E,\n 0x8DB0: 0x9B42,\n 0x8DB1: 0x4E9B,\n 0x8DB2: 0x4F50,\n 0x8DB3: 0x53C9,\n 0x8DB4: 0x5506,\n 0x8DB5: 0x5D6F,\n 0x8DB6: 0x5DE6,\n 0x8DB7: 0x5DEE,\n 0x8DB8: 0x67FB,\n 0x8DB9: 0x6C99,\n 0x8DBA: 0x7473,\n 0x8DBB: 0x7802,\n 0x8DBC: 0x8A50,\n 0x8DBD: 0x9396,\n 0x8DBE: 0x88DF,\n 0x8DBF: 0x5750,\n 0x8DC0: 0x5EA7,\n 0x8DC1: 0x632B,\n 0x8DC2: 0x50B5,\n 0x8DC3: 0x50AC,\n 0x8DC4: 0x518D,\n 0x8DC5: 0x6700,\n 0x8DC6: 0x54C9,\n 0x8DC7: 0x585E,\n 0x8DC8: 0x59BB,\n 0x8DC9: 0x5BB0,\n 0x8DCA: 0x5F69,\n 0x8DCB: 0x624D,\n 0x8DCC: 0x63A1,\n 0x8DCD: 0x683D,\n 0x8DCE: 0x6B73,\n 0x8DCF: 0x6E08,\n 0x8DD0: 0x707D,\n 0x8DD1: 0x91C7,\n 0x8DD2: 0x7280,\n 0x8DD3: 0x7815,\n 0x8DD4: 0x7826,\n 0x8DD5: 0x796D,\n 0x8DD6: 0x658E,\n 0x8DD7: 0x7D30,\n 0x8DD8: 0x83DC,\n 0x8DD9: 0x88C1,\n 0x8DDA: 0x8F09,\n 0x8DDB: 0x969B,\n 0x8DDC: 0x5264,\n 0x8DDD: 0x5728,\n 0x8DDE: 0x6750,\n 0x8DDF: 0x7F6A,\n 0x8DE0: 0x8CA1,\n 0x8DE1: 0x51B4,\n 0x8DE2: 0x5742,\n 0x8DE3: 0x962A,\n 0x8DE4: 0x583A,\n 0x8DE5: 0x698A,\n 0x8DE6: 0x80B4,\n 0x8DE7: 0x54B2,\n 0x8DE8: 0x5D0E,\n 0x8DE9: 0x57FC,\n 0x8DEA: 0x7895,\n 0x8DEB: 0x9DFA,\n 0x8DEC: 0x4F5C,\n 0x8DED: 0x524A,\n 0x8DEE: 0x548B,\n 0x8DEF: 0x643E,\n 0x8DF0: 0x6628,\n 0x8DF1: 0x6714,\n 0x8DF2: 0x67F5,\n 0x8DF3: 0x7A84,\n 0x8DF4: 0x7B56,\n 0x8DF5: 0x7D22,\n 0x8DF6: 0x932F,\n 0x8DF7: 0x685C,\n 0x8DF8: 0x9BAD,\n 0x8DF9: 0x7B39,\n 0x8DFA: 0x5319,\n 0x8DFB: 0x518A,\n 0x8DFC: 0x5237,\n 0x8E40: 0x5BDF,\n 0x8E41: 0x62F6,\n 0x8E42: 0x64AE,\n 0x8E43: 0x64E6,\n 0x8E44: 0x672D,\n 0x8E45: 0x6BBA,\n 0x8E46: 0x85A9,\n 0x8E47: 0x96D1,\n 0x8E48: 0x7690,\n 0x8E49: 0x9BD6,\n 0x8E4A: 0x634C,\n 0x8E4B: 0x9306,\n 0x8E4C: 0x9BAB,\n 0x8E4D: 0x76BF,\n 0x8E4E: 0x6652,\n 0x8E4F: 0x4E09,\n 0x8E50: 0x5098,\n 0x8E51: 0x53C2,\n 0x8E52: 0x5C71,\n 0x8E53: 0x60E8,\n 0x8E54: 0x6492,\n 0x8E55: 0x6563,\n 0x8E56: 0x685F,\n 0x8E57: 0x71E6,\n 0x8E58: 0x73CA,\n 0x8E59: 0x7523,\n 0x8E5A: 0x7B97,\n 0x8E5B: 0x7E82,\n 0x8E5C: 0x8695,\n 0x8E5D: 0x8B83,\n 0x8E5E: 0x8CDB,\n 0x8E5F: 0x9178,\n 0x8E60: 0x9910,\n 0x8E61: 0x65AC,\n 0x8E62: 0x66AB,\n 0x8E63: 0x6B8B,\n 0x8E64: 0x4ED5,\n 0x8E65: 0x4ED4,\n 0x8E66: 0x4F3A,\n 0x8E67: 0x4F7F,\n 0x8E68: 0x523A,\n 0x8E69: 0x53F8,\n 0x8E6A: 0x53F2,\n 0x8E6B: 0x55E3,\n 0x8E6C: 0x56DB,\n 0x8E6D: 0x58EB,\n 0x8E6E: 0x59CB,\n 0x8E6F: 0x59C9,\n 0x8E70: 0x59FF,\n 0x8E71: 0x5B50,\n 0x8E72: 0x5C4D,\n 0x8E73: 0x5E02,\n 0x8E74: 0x5E2B,\n 0x8E75: 0x5FD7,\n 0x8E76: 0x601D,\n 0x8E77: 0x6307,\n 0x8E78: 0x652F,\n 0x8E79: 0x5B5C,\n 0x8E7A: 0x65AF,\n 0x8E7B: 0x65BD,\n 0x8E7C: 0x65E8,\n 0x8E7D: 0x679D,\n 0x8E7E: 0x6B62,\n 0x8E80: 0x6B7B,\n 0x8E81: 0x6C0F,\n 0x8E82: 0x7345,\n 0x8E83: 0x7949,\n 0x8E84: 0x79C1,\n 0x8E85: 0x7CF8,\n 0x8E86: 0x7D19,\n 0x8E87: 0x7D2B,\n 0x8E88: 0x80A2,\n 0x8E89: 0x8102,\n 0x8E8A: 0x81F3,\n 0x8E8B: 0x8996,\n 0x8E8C: 0x8A5E,\n 0x8E8D: 0x8A69,\n 0x8E8E: 0x8A66,\n 0x8E8F: 0x8A8C,\n 0x8E90: 0x8AEE,\n 0x8E91: 0x8CC7,\n 0x8E92: 0x8CDC,\n 0x8E93: 0x96CC,\n 0x8E94: 0x98FC,\n 0x8E95: 0x6B6F,\n 0x8E96: 0x4E8B,\n 0x8E97: 0x4F3C,\n 0x8E98: 0x4F8D,\n 0x8E99: 0x5150,\n 0x8E9A: 0x5B57,\n 0x8E9B: 0x5BFA,\n 0x8E9C: 0x6148,\n 0x8E9D: 0x6301,\n 0x8E9E: 0x6642,\n 0x8E9F: 0x6B21,\n 0x8EA0: 0x6ECB,\n 0x8EA1: 0x6CBB,\n 0x8EA2: 0x723E,\n 0x8EA3: 0x74BD,\n 0x8EA4: 0x75D4,\n 0x8EA5: 0x78C1,\n 0x8EA6: 0x793A,\n 0x8EA7: 0x800C,\n 0x8EA8: 0x8033,\n 0x8EA9: 0x81EA,\n 0x8EAA: 0x8494,\n 0x8EAB: 0x8F9E,\n 0x8EAC: 0x6C50,\n 0x8EAD: 0x9E7F,\n 0x8EAE: 0x5F0F,\n 0x8EAF: 0x8B58,\n 0x8EB0: 0x9D2B,\n 0x8EB1: 0x7AFA,\n 0x8EB2: 0x8EF8,\n 0x8EB3: 0x5B8D,\n 0x8EB4: 0x96EB,\n 0x8EB5: 0x4E03,\n 0x8EB6: 0x53F1,\n 0x8EB7: 0x57F7,\n 0x8EB8: 0x5931,\n 0x8EB9: 0x5AC9,\n 0x8EBA: 0x5BA4,\n 0x8EBB: 0x6089,\n 0x8EBC: 0x6E7F,\n 0x8EBD: 0x6F06,\n 0x8EBE: 0x75BE,\n 0x8EBF: 0x8CEA,\n 0x8EC0: 0x5B9F,\n 0x8EC1: 0x8500,\n 0x8EC2: 0x7BE0,\n 0x8EC3: 0x5072,\n 0x8EC4: 0x67F4,\n 0x8EC5: 0x829D,\n 0x8EC6: 0x5C61,\n 0x8EC7: 0x854A,\n 0x8EC8: 0x7E1E,\n 0x8EC9: 0x820E,\n 0x8ECA: 0x5199,\n 0x8ECB: 0x5C04,\n 0x8ECC: 0x6368,\n 0x8ECD: 0x8D66,\n 0x8ECE: 0x659C,\n 0x8ECF: 0x716E,\n 0x8ED0: 0x793E,\n 0x8ED1: 0x7D17,\n 0x8ED2: 0x8005,\n 0x8ED3: 0x8B1D,\n 0x8ED4: 0x8ECA,\n 0x8ED5: 0x906E,\n 0x8ED6: 0x86C7,\n 0x8ED7: 0x90AA,\n 0x8ED8: 0x501F,\n 0x8ED9: 0x52FA,\n 0x8EDA: 0x5C3A,\n 0x8EDB: 0x6753,\n 0x8EDC: 0x707C,\n 0x8EDD: 0x7235,\n 0x8EDE: 0x914C,\n 0x8EDF: 0x91C8,\n 0x8EE0: 0x932B,\n 0x8EE1: 0x82E5,\n 0x8EE2: 0x5BC2,\n 0x8EE3: 0x5F31,\n 0x8EE4: 0x60F9,\n 0x8EE5: 0x4E3B,\n 0x8EE6: 0x53D6,\n 0x8EE7: 0x5B88,\n 0x8EE8: 0x624B,\n 0x8EE9: 0x6731,\n 0x8EEA: 0x6B8A,\n 0x8EEB: 0x72E9,\n 0x8EEC: 0x73E0,\n 0x8EED: 0x7A2E,\n 0x8EEE: 0x816B,\n 0x8EEF: 0x8DA3,\n 0x8EF0: 0x9152,\n 0x8EF1: 0x9996,\n 0x8EF2: 0x5112,\n 0x8EF3: 0x53D7,\n 0x8EF4: 0x546A,\n 0x8EF5: 0x5BFF,\n 0x8EF6: 0x6388,\n 0x8EF7: 0x6A39,\n 0x8EF8: 0x7DAC,\n 0x8EF9: 0x9700,\n 0x8EFA: 0x56DA,\n 0x8EFB: 0x53CE,\n 0x8EFC: 0x5468,\n 0x8F40: 0x5B97,\n 0x8F41: 0x5C31,\n 0x8F42: 0x5DDE,\n 0x8F43: 0x4FEE,\n 0x8F44: 0x6101,\n 0x8F45: 0x62FE,\n 0x8F46: 0x6D32,\n 0x8F47: 0x79C0,\n 0x8F48: 0x79CB,\n 0x8F49: 0x7D42,\n 0x8F4A: 0x7E4D,\n 0x8F4B: 0x7FD2,\n 0x8F4C: 0x81ED,\n 0x8F4D: 0x821F,\n 0x8F4E: 0x8490,\n 0x8F4F: 0x8846,\n 0x8F50: 0x8972,\n 0x8F51: 0x8B90,\n 0x8F52: 0x8E74,\n 0x8F53: 0x8F2F,\n 0x8F54: 0x9031,\n 0x8F55: 0x914B,\n 0x8F56: 0x916C,\n 0x8F57: 0x96C6,\n 0x8F58: 0x919C,\n 0x8F59: 0x4EC0,\n 0x8F5A: 0x4F4F,\n 0x8F5B: 0x5145,\n 0x8F5C: 0x5341,\n 0x8F5D: 0x5F93,\n 0x8F5E: 0x620E,\n 0x8F5F: 0x67D4,\n 0x8F60: 0x6C41,\n 0x8F61: 0x6E0B,\n 0x8F62: 0x7363,\n 0x8F63: 0x7E26,\n 0x8F64: 0x91CD,\n 0x8F65: 0x9283,\n 0x8F66: 0x53D4,\n 0x8F67: 0x5919,\n 0x8F68: 0x5BBF,\n 0x8F69: 0x6DD1,\n 0x8F6A: 0x795D,\n 0x8F6B: 0x7E2E,\n 0x8F6C: 0x7C9B,\n 0x8F6D: 0x587E,\n 0x8F6E: 0x719F,\n 0x8F6F: 0x51FA,\n 0x8F70: 0x8853,\n 0x8F71: 0x8FF0,\n 0x8F72: 0x4FCA,\n 0x8F73: 0x5CFB,\n 0x8F74: 0x6625,\n 0x8F75: 0x77AC,\n 0x8F76: 0x7AE3,\n 0x8F77: 0x821C,\n 0x8F78: 0x99FF,\n 0x8F79: 0x51C6,\n 0x8F7A: 0x5FAA,\n 0x8F7B: 0x65EC,\n 0x8F7C: 0x696F,\n 0x8F7D: 0x6B89,\n 0x8F7E: 0x6DF3,\n 0x8F80: 0x6E96,\n 0x8F81: 0x6F64,\n 0x8F82: 0x76FE,\n 0x8F83: 0x7D14,\n 0x8F84: 0x5DE1,\n 0x8F85: 0x9075,\n 0x8F86: 0x9187,\n 0x8F87: 0x9806,\n 0x8F88: 0x51E6,\n 0x8F89: 0x521D,\n 0x8F8A: 0x6240,\n 0x8F8B: 0x6691,\n 0x8F8C: 0x66D9,\n 0x8F8D: 0x6E1A,\n 0x8F8E: 0x5EB6,\n 0x8F8F: 0x7DD2,\n 0x8F90: 0x7F72,\n 0x8F91: 0x66F8,\n 0x8F92: 0x85AF,\n 0x8F93: 0x85F7,\n 0x8F94: 0x8AF8,\n 0x8F95: 0x52A9,\n 0x8F96: 0x53D9,\n 0x8F97: 0x5973,\n 0x8F98: 0x5E8F,\n 0x8F99: 0x5F90,\n 0x8F9A: 0x6055,\n 0x8F9B: 0x92E4,\n 0x8F9C: 0x9664,\n 0x8F9D: 0x50B7,\n 0x8F9E: 0x511F,\n 0x8F9F: 0x52DD,\n 0x8FA0: 0x5320,\n 0x8FA1: 0x5347,\n 0x8FA2: 0x53EC,\n 0x8FA3: 0x54E8,\n 0x8FA4: 0x5546,\n 0x8FA5: 0x5531,\n 0x8FA6: 0x5617,\n 0x8FA7: 0x5968,\n 0x8FA8: 0x59BE,\n 0x8FA9: 0x5A3C,\n 0x8FAA: 0x5BB5,\n 0x8FAB: 0x5C06,\n 0x8FAC: 0x5C0F,\n 0x8FAD: 0x5C11,\n 0x8FAE: 0x5C1A,\n 0x8FAF: 0x5E84,\n 0x8FB0: 0x5E8A,\n 0x8FB1: 0x5EE0,\n 0x8FB2: 0x5F70,\n 0x8FB3: 0x627F,\n 0x8FB4: 0x6284,\n 0x8FB5: 0x62DB,\n 0x8FB6: 0x638C,\n 0x8FB7: 0x6377,\n 0x8FB8: 0x6607,\n 0x8FB9: 0x660C,\n 0x8FBA: 0x662D,\n 0x8FBB: 0x6676,\n 0x8FBC: 0x677E,\n 0x8FBD: 0x68A2,\n 0x8FBE: 0x6A1F,\n 0x8FBF: 0x6A35,\n 0x8FC0: 0x6CBC,\n 0x8FC1: 0x6D88,\n 0x8FC2: 0x6E09,\n 0x8FC3: 0x6E58,\n 0x8FC4: 0x713C,\n 0x8FC5: 0x7126,\n 0x8FC6: 0x7167,\n 0x8FC7: 0x75C7,\n 0x8FC8: 0x7701,\n 0x8FC9: 0x785D,\n 0x8FCA: 0x7901,\n 0x8FCB: 0x7965,\n 0x8FCC: 0x79F0,\n 0x8FCD: 0x7AE0,\n 0x8FCE: 0x7B11,\n 0x8FCF: 0x7CA7,\n 0x8FD0: 0x7D39,\n 0x8FD1: 0x8096,\n 0x8FD2: 0x83D6,\n 0x8FD3: 0x848B,\n 0x8FD4: 0x8549,\n 0x8FD5: 0x885D,\n 0x8FD6: 0x88F3,\n 0x8FD7: 0x8A1F,\n 0x8FD8: 0x8A3C,\n 0x8FD9: 0x8A54,\n 0x8FDA: 0x8A73,\n 0x8FDB: 0x8C61,\n 0x8FDC: 0x8CDE,\n 0x8FDD: 0x91A4,\n 0x8FDE: 0x9266,\n 0x8FDF: 0x937E,\n 0x8FE0: 0x9418,\n 0x8FE1: 0x969C,\n 0x8FE2: 0x9798,\n 0x8FE3: 0x4E0A,\n 0x8FE4: 0x4E08,\n 0x8FE5: 0x4E1E,\n 0x8FE6: 0x4E57,\n 0x8FE7: 0x5197,\n 0x8FE8: 0x5270,\n 0x8FE9: 0x57CE,\n 0x8FEA: 0x5834,\n 0x8FEB: 0x58CC,\n 0x8FEC: 0x5B22,\n 0x8FED: 0x5E38,\n 0x8FEE: 0x60C5,\n 0x8FEF: 0x64FE,\n 0x8FF0: 0x6761,\n 0x8FF1: 0x6756,\n 0x8FF2: 0x6D44,\n 0x8FF3: 0x72B6,\n 0x8FF4: 0x7573,\n 0x8FF5: 0x7A63,\n 0x8FF6: 0x84B8,\n 0x8FF7: 0x8B72,\n 0x8FF8: 0x91B8,\n 0x8FF9: 0x9320,\n 0x8FFA: 0x5631,\n 0x8FFB: 0x57F4,\n 0x8FFC: 0x98FE,\n 0x9040: 0x62ED,\n 0x9041: 0x690D,\n 0x9042: 0x6B96,\n 0x9043: 0x71ED,\n 0x9044: 0x7E54,\n 0x9045: 0x8077,\n 0x9046: 0x8272,\n 0x9047: 0x89E6,\n 0x9048: 0x98DF,\n 0x9049: 0x8755,\n 0x904A: 0x8FB1,\n 0x904B: 0x5C3B,\n 0x904C: 0x4F38,\n 0x904D: 0x4FE1,\n 0x904E: 0x4FB5,\n 0x904F: 0x5507,\n 0x9050: 0x5A20,\n 0x9051: 0x5BDD,\n 0x9052: 0x5BE9,\n 0x9053: 0x5FC3,\n 0x9054: 0x614E,\n 0x9055: 0x632F,\n 0x9056: 0x65B0,\n 0x9057: 0x664B,\n 0x9058: 0x68EE,\n 0x9059: 0x699B,\n 0x905A: 0x6D78,\n 0x905B: 0x6DF1,\n 0x905C: 0x7533,\n 0x905D: 0x75B9,\n 0x905E: 0x771F,\n 0x905F: 0x795E,\n 0x9060: 0x79E6,\n 0x9061: 0x7D33,\n 0x9062: 0x81E3,\n 0x9063: 0x82AF,\n 0x9064: 0x85AA,\n 0x9065: 0x89AA,\n 0x9066: 0x8A3A,\n 0x9067: 0x8EAB,\n 0x9068: 0x8F9B,\n 0x9069: 0x9032,\n 0x906A: 0x91DD,\n 0x906B: 0x9707,\n 0x906C: 0x4EBA,\n 0x906D: 0x4EC1,\n 0x906E: 0x5203,\n 0x906F: 0x5875,\n 0x9070: 0x58EC,\n 0x9071: 0x5C0B,\n 0x9072: 0x751A,\n 0x9073: 0x5C3D,\n 0x9074: 0x814E,\n 0x9075: 0x8A0A,\n 0x9076: 0x8FC5,\n 0x9077: 0x9663,\n 0x9078: 0x976D,\n 0x9079: 0x7B25,\n 0x907A: 0x8ACF,\n 0x907B: 0x9808,\n 0x907C: 0x9162,\n 0x907D: 0x56F3,\n 0x907E: 0x53A8,\n 0x9080: 0x9017,\n 0x9081: 0x5439,\n 0x9082: 0x5782,\n 0x9083: 0x5E25,\n 0x9084: 0x63A8,\n 0x9085: 0x6C34,\n 0x9086: 0x708A,\n 0x9087: 0x7761,\n 0x9088: 0x7C8B,\n 0x9089: 0x7FE0,\n 0x908A: 0x8870,\n 0x908B: 0x9042,\n 0x908C: 0x9154,\n 0x908D: 0x9310,\n 0x908E: 0x9318,\n 0x908F: 0x968F,\n 0x9090: 0x745E,\n 0x9091: 0x9AC4,\n 0x9092: 0x5D07,\n 0x9093: 0x5D69,\n 0x9094: 0x6570,\n 0x9095: 0x67A2,\n 0x9096: 0x8DA8,\n 0x9097: 0x96DB,\n 0x9098: 0x636E,\n 0x9099: 0x6749,\n 0x909A: 0x6919,\n 0x909B: 0x83C5,\n 0x909C: 0x9817,\n 0x909D: 0x96C0,\n 0x909E: 0x88FE,\n 0x909F: 0x6F84,\n 0x90A0: 0x647A,\n 0x90A1: 0x5BF8,\n 0x90A2: 0x4E16,\n 0x90A3: 0x702C,\n 0x90A4: 0x755D,\n 0x90A5: 0x662F,\n 0x90A6: 0x51C4,\n 0x90A7: 0x5236,\n 0x90A8: 0x52E2,\n 0x90A9: 0x59D3,\n 0x90AA: 0x5F81,\n 0x90AB: 0x6027,\n 0x90AC: 0x6210,\n 0x90AD: 0x653F,\n 0x90AE: 0x6574,\n 0x90AF: 0x661F,\n 0x90B0: 0x6674,\n 0x90B1: 0x68F2,\n 0x90B2: 0x6816,\n 0x90B3: 0x6B63,\n 0x90B4: 0x6E05,\n 0x90B5: 0x7272,\n 0x90B6: 0x751F,\n 0x90B7: 0x76DB,\n 0x90B8: 0x7CBE,\n 0x90B9: 0x8056,\n 0x90BA: 0x58F0,\n 0x90BB: 0x88FD,\n 0x90BC: 0x897F,\n 0x90BD: 0x8AA0,\n 0x90BE: 0x8A93,\n 0x90BF: 0x8ACB,\n 0x90C0: 0x901D,\n 0x90C1: 0x9192,\n 0x90C2: 0x9752,\n 0x90C3: 0x9759,\n 0x90C4: 0x6589,\n 0x90C5: 0x7A0E,\n 0x90C6: 0x8106,\n 0x90C7: 0x96BB,\n 0x90C8: 0x5E2D,\n 0x90C9: 0x60DC,\n 0x90CA: 0x621A,\n 0x90CB: 0x65A5,\n 0x90CC: 0x6614,\n 0x90CD: 0x6790,\n 0x90CE: 0x77F3,\n 0x90CF: 0x7A4D,\n 0x90D0: 0x7C4D,\n 0x90D1: 0x7E3E,\n 0x90D2: 0x810A,\n 0x90D3: 0x8CAC,\n 0x90D4: 0x8D64,\n 0x90D5: 0x8DE1,\n 0x90D6: 0x8E5F,\n 0x90D7: 0x78A9,\n 0x90D8: 0x5207,\n 0x90D9: 0x62D9,\n 0x90DA: 0x63A5,\n 0x90DB: 0x6442,\n 0x90DC: 0x6298,\n 0x90DD: 0x8A2D,\n 0x90DE: 0x7A83,\n 0x90DF: 0x7BC0,\n 0x90E0: 0x8AAC,\n 0x90E1: 0x96EA,\n 0x90E2: 0x7D76,\n 0x90E3: 0x820C,\n 0x90E4: 0x8749,\n 0x90E5: 0x4ED9,\n 0x90E6: 0x5148,\n 0x90E7: 0x5343,\n 0x90E8: 0x5360,\n 0x90E9: 0x5BA3,\n 0x90EA: 0x5C02,\n 0x90EB: 0x5C16,\n 0x90EC: 0x5DDD,\n 0x90ED: 0x6226,\n 0x90EE: 0x6247,\n 0x90EF: 0x64B0,\n 0x90F0: 0x6813,\n 0x90F1: 0x6834,\n 0x90F2: 0x6CC9,\n 0x90F3: 0x6D45,\n 0x90F4: 0x6D17,\n 0x90F5: 0x67D3,\n 0x90F6: 0x6F5C,\n 0x90F7: 0x714E,\n 0x90F8: 0x717D,\n 0x90F9: 0x65CB,\n 0x90FA: 0x7A7F,\n 0x90FB: 0x7BAD,\n 0x90FC: 0x7DDA,\n 0x9140: 0x7E4A,\n 0x9141: 0x7FA8,\n 0x9142: 0x817A,\n 0x9143: 0x821B,\n 0x9144: 0x8239,\n 0x9145: 0x85A6,\n 0x9146: 0x8A6E,\n 0x9147: 0x8CCE,\n 0x9148: 0x8DF5,\n 0x9149: 0x9078,\n 0x914A: 0x9077,\n 0x914B: 0x92AD,\n 0x914C: 0x9291,\n 0x914D: 0x9583,\n 0x914E: 0x9BAE,\n 0x914F: 0x524D,\n 0x9150: 0x5584,\n 0x9151: 0x6F38,\n 0x9152: 0x7136,\n 0x9153: 0x5168,\n 0x9154: 0x7985,\n 0x9155: 0x7E55,\n 0x9156: 0x81B3,\n 0x9157: 0x7CCE,\n 0x9158: 0x564C,\n 0x9159: 0x5851,\n 0x915A: 0x5CA8,\n 0x915B: 0x63AA,\n 0x915C: 0x66FE,\n 0x915D: 0x66FD,\n 0x915E: 0x695A,\n 0x915F: 0x72D9,\n 0x9160: 0x758F,\n 0x9161: 0x758E,\n 0x9162: 0x790E,\n 0x9163: 0x7956,\n 0x9164: 0x79DF,\n 0x9165: 0x7C97,\n 0x9166: 0x7D20,\n 0x9167: 0x7D44,\n 0x9168: 0x8607,\n 0x9169: 0x8A34,\n 0x916A: 0x963B,\n 0x916B: 0x9061,\n 0x916C: 0x9F20,\n 0x916D: 0x50E7,\n 0x916E: 0x5275,\n 0x916F: 0x53CC,\n 0x9170: 0x53E2,\n 0x9171: 0x5009,\n 0x9172: 0x55AA,\n 0x9173: 0x58EE,\n 0x9174: 0x594F,\n 0x9175: 0x723D,\n 0x9176: 0x5B8B,\n 0x9177: 0x5C64,\n 0x9178: 0x531D,\n 0x9179: 0x60E3,\n 0x917A: 0x60F3,\n 0x917B: 0x635C,\n 0x917C: 0x6383,\n 0x917D: 0x633F,\n 0x917E: 0x63BB,\n 0x9180: 0x64CD,\n 0x9181: 0x65E9,\n 0x9182: 0x66F9,\n 0x9183: 0x5DE3,\n 0x9184: 0x69CD,\n 0x9185: 0x69FD,\n 0x9186: 0x6F15,\n 0x9187: 0x71E5,\n 0x9188: 0x4E89,\n 0x9189: 0x75E9,\n 0x918A: 0x76F8,\n 0x918B: 0x7A93,\n 0x918C: 0x7CDF,\n 0x918D: 0x7DCF,\n 0x918E: 0x7D9C,\n 0x918F: 0x8061,\n 0x9190: 0x8349,\n 0x9191: 0x8358,\n 0x9192: 0x846C,\n 0x9193: 0x84BC,\n 0x9194: 0x85FB,\n 0x9195: 0x88C5,\n 0x9196: 0x8D70,\n 0x9197: 0x9001,\n 0x9198: 0x906D,\n 0x9199: 0x9397,\n 0x919A: 0x971C,\n 0x919B: 0x9A12,\n 0x919C: 0x50CF,\n 0x919D: 0x5897,\n 0x919E: 0x618E,\n 0x919F: 0x81D3,\n 0x91A0: 0x8535,\n 0x91A1: 0x8D08,\n 0x91A2: 0x9020,\n 0x91A3: 0x4FC3,\n 0x91A4: 0x5074,\n 0x91A5: 0x5247,\n 0x91A6: 0x5373,\n 0x91A7: 0x606F,\n 0x91A8: 0x6349,\n 0x91A9: 0x675F,\n 0x91AA: 0x6E2C,\n 0x91AB: 0x8DB3,\n 0x91AC: 0x901F,\n 0x91AD: 0x4FD7,\n 0x91AE: 0x5C5E,\n 0x91AF: 0x8CCA,\n 0x91B0: 0x65CF,\n 0x91B1: 0x7D9A,\n 0x91B2: 0x5352,\n 0x91B3: 0x8896,\n 0x91B4: 0x5176,\n 0x91B5: 0x63C3,\n 0x91B6: 0x5B58,\n 0x91B7: 0x5B6B,\n 0x91B8: 0x5C0A,\n 0x91B9: 0x640D,\n 0x91BA: 0x6751,\n 0x91BB: 0x905C,\n 0x91BC: 0x4ED6,\n 0x91BD: 0x591A,\n 0x91BE: 0x592A,\n 0x91BF: 0x6C70,\n 0x91C0: 0x8A51,\n 0x91C1: 0x553E,\n 0x91C2: 0x5815,\n 0x91C3: 0x59A5,\n 0x91C4: 0x60F0,\n 0x91C5: 0x6253,\n 0x91C6: 0x67C1,\n 0x91C7: 0x8235,\n 0x91C8: 0x6955,\n 0x91C9: 0x9640,\n 0x91CA: 0x99C4,\n 0x91CB: 0x9A28,\n 0x91CC: 0x4F53,\n 0x91CD: 0x5806,\n 0x91CE: 0x5BFE,\n 0x91CF: 0x8010,\n 0x91D0: 0x5CB1,\n 0x91D1: 0x5E2F,\n 0x91D2: 0x5F85,\n 0x91D3: 0x6020,\n 0x91D4: 0x614B,\n 0x91D5: 0x6234,\n 0x91D6: 0x66FF,\n 0x91D7: 0x6CF0,\n 0x91D8: 0x6EDE,\n 0x91D9: 0x80CE,\n 0x91DA: 0x817F,\n 0x91DB: 0x82D4,\n 0x91DC: 0x888B,\n 0x91DD: 0x8CB8,\n 0x91DE: 0x9000,\n 0x91DF: 0x902E,\n 0x91E0: 0x968A,\n 0x91E1: 0x9EDB,\n 0x91E2: 0x9BDB,\n 0x91E3: 0x4EE3,\n 0x91E4: 0x53F0,\n 0x91E5: 0x5927,\n 0x91E6: 0x7B2C,\n 0x91E7: 0x918D,\n 0x91E8: 0x984C,\n 0x91E9: 0x9DF9,\n 0x91EA: 0x6EDD,\n 0x91EB: 0x7027,\n 0x91EC: 0x5353,\n 0x91ED: 0x5544,\n 0x91EE: 0x5B85,\n 0x91EF: 0x6258,\n 0x91F0: 0x629E,\n 0x91F1: 0x62D3,\n 0x91F2: 0x6CA2,\n 0x91F3: 0x6FEF,\n 0x91F4: 0x7422,\n 0x91F5: 0x8A17,\n 0x91F6: 0x9438,\n 0x91F7: 0x6FC1,\n 0x91F8: 0x8AFE,\n 0x91F9: 0x8338,\n 0x91FA: 0x51E7,\n 0x91FB: 0x86F8,\n 0x91FC: 0x53EA,\n 0x9240: 0x53E9,\n 0x9241: 0x4F46,\n 0x9242: 0x9054,\n 0x9243: 0x8FB0,\n 0x9244: 0x596A,\n 0x9245: 0x8131,\n 0x9246: 0x5DFD,\n 0x9247: 0x7AEA,\n 0x9248: 0x8FBF,\n 0x9249: 0x68DA,\n 0x924A: 0x8C37,\n 0x924B: 0x72F8,\n 0x924C: 0x9C48,\n 0x924D: 0x6A3D,\n 0x924E: 0x8AB0,\n 0x924F: 0x4E39,\n 0x9250: 0x5358,\n 0x9251: 0x5606,\n 0x9252: 0x5766,\n 0x9253: 0x62C5,\n 0x9254: 0x63A2,\n 0x9255: 0x65E6,\n 0x9256: 0x6B4E,\n 0x9257: 0x6DE1,\n 0x9258: 0x6E5B,\n 0x9259: 0x70AD,\n 0x925A: 0x77ED,\n 0x925B: 0x7AEF,\n 0x925C: 0x7BAA,\n 0x925D: 0x7DBB,\n 0x925E: 0x803D,\n 0x925F: 0x80C6,\n 0x9260: 0x86CB,\n 0x9261: 0x8A95,\n 0x9262: 0x935B,\n 0x9263: 0x56E3,\n 0x9264: 0x58C7,\n 0x9265: 0x5F3E,\n 0x9266: 0x65AD,\n 0x9267: 0x6696,\n 0x9268: 0x6A80,\n 0x9269: 0x6BB5,\n 0x926A: 0x7537,\n 0x926B: 0x8AC7,\n 0x926C: 0x5024,\n 0x926D: 0x77E5,\n 0x926E: 0x5730,\n 0x926F: 0x5F1B,\n 0x9270: 0x6065,\n 0x9271: 0x667A,\n 0x9272: 0x6C60,\n 0x9273: 0x75F4,\n 0x9274: 0x7A1A,\n 0x9275: 0x7F6E,\n 0x9276: 0x81F4,\n 0x9277: 0x8718,\n 0x9278: 0x9045,\n 0x9279: 0x99B3,\n 0x927A: 0x7BC9,\n 0x927B: 0x755C,\n 0x927C: 0x7AF9,\n 0x927D: 0x7B51,\n 0x927E: 0x84C4,\n 0x9280: 0x9010,\n 0x9281: 0x79E9,\n 0x9282: 0x7A92,\n 0x9283: 0x8336,\n 0x9284: 0x5AE1,\n 0x9285: 0x7740,\n 0x9286: 0x4E2D,\n 0x9287: 0x4EF2,\n 0x9288: 0x5B99,\n 0x9289: 0x5FE0,\n 0x928A: 0x62BD,\n 0x928B: 0x663C,\n 0x928C: 0x67F1,\n 0x928D: 0x6CE8,\n 0x928E: 0x866B,\n 0x928F: 0x8877,\n 0x9290: 0x8A3B,\n 0x9291: 0x914E,\n 0x9292: 0x92F3,\n 0x9293: 0x99D0,\n 0x9294: 0x6A17,\n 0x9295: 0x7026,\n 0x9296: 0x732A,\n 0x9297: 0x82E7,\n 0x9298: 0x8457,\n 0x9299: 0x8CAF,\n 0x929A: 0x4E01,\n 0x929B: 0x5146,\n 0x929C: 0x51CB,\n 0x929D: 0x558B,\n 0x929E: 0x5BF5,\n 0x929F: 0x5E16,\n 0x92A0: 0x5E33,\n 0x92A1: 0x5E81,\n 0x92A2: 0x5F14,\n 0x92A3: 0x5F35,\n 0x92A4: 0x5F6B,\n 0x92A5: 0x5FB4,\n 0x92A6: 0x61F2,\n 0x92A7: 0x6311,\n 0x92A8: 0x66A2,\n 0x92A9: 0x671D,\n 0x92AA: 0x6F6E,\n 0x92AB: 0x7252,\n 0x92AC: 0x753A,\n 0x92AD: 0x773A,\n 0x92AE: 0x8074,\n 0x92AF: 0x8139,\n 0x92B0: 0x8178,\n 0x92B1: 0x8776,\n 0x92B2: 0x8ABF,\n 0x92B3: 0x8ADC,\n 0x92B4: 0x8D85,\n 0x92B5: 0x8DF3,\n 0x92B6: 0x929A,\n 0x92B7: 0x9577,\n 0x92B8: 0x9802,\n 0x92B9: 0x9CE5,\n 0x92BA: 0x52C5,\n 0x92BB: 0x6357,\n 0x92BC: 0x76F4,\n 0x92BD: 0x6715,\n 0x92BE: 0x6C88,\n 0x92BF: 0x73CD,\n 0x92C0: 0x8CC3,\n 0x92C1: 0x93AE,\n 0x92C2: 0x9673,\n 0x92C3: 0x6D25,\n 0x92C4: 0x589C,\n 0x92C5: 0x690E,\n 0x92C6: 0x69CC,\n 0x92C7: 0x8FFD,\n 0x92C8: 0x939A,\n 0x92C9: 0x75DB,\n 0x92CA: 0x901A,\n 0x92CB: 0x585A,\n 0x92CC: 0x6802,\n 0x92CD: 0x63B4,\n 0x92CE: 0x69FB,\n 0x92CF: 0x4F43,\n 0x92D0: 0x6F2C,\n 0x92D1: 0x67D8,\n 0x92D2: 0x8FBB,\n 0x92D3: 0x8526,\n 0x92D4: 0x7DB4,\n 0x92D5: 0x9354,\n 0x92D6: 0x693F,\n 0x92D7: 0x6F70,\n 0x92D8: 0x576A,\n 0x92D9: 0x58F7,\n 0x92DA: 0x5B2C,\n 0x92DB: 0x7D2C,\n 0x92DC: 0x722A,\n 0x92DD: 0x540A,\n 0x92DE: 0x91E3,\n 0x92DF: 0x9DB4,\n 0x92E0: 0x4EAD,\n 0x92E1: 0x4F4E,\n 0x92E2: 0x505C,\n 0x92E3: 0x5075,\n 0x92E4: 0x5243,\n 0x92E5: 0x8C9E,\n 0x92E6: 0x5448,\n 0x92E7: 0x5824,\n 0x92E8: 0x5B9A,\n 0x92E9: 0x5E1D,\n 0x92EA: 0x5E95,\n 0x92EB: 0x5EAD,\n 0x92EC: 0x5EF7,\n 0x92ED: 0x5F1F,\n 0x92EE: 0x608C,\n 0x92EF: 0x62B5,\n 0x92F0: 0x633A,\n 0x92F1: 0x63D0,\n 0x92F2: 0x68AF,\n 0x92F3: 0x6C40,\n 0x92F4: 0x7887,\n 0x92F5: 0x798E,\n 0x92F6: 0x7A0B,\n 0x92F7: 0x7DE0,\n 0x92F8: 0x8247,\n 0x92F9: 0x8A02,\n 0x92FA: 0x8AE6,\n 0x92FB: 0x8E44,\n 0x92FC: 0x9013,\n 0x9340: 0x90B8,\n 0x9341: 0x912D,\n 0x9342: 0x91D8,\n 0x9343: 0x9F0E,\n 0x9344: 0x6CE5,\n 0x9345: 0x6458,\n 0x9346: 0x64E2,\n 0x9347: 0x6575,\n 0x9348: 0x6EF4,\n 0x9349: 0x7684,\n 0x934A: 0x7B1B,\n 0x934B: 0x9069,\n 0x934C: 0x93D1,\n 0x934D: 0x6EBA,\n 0x934E: 0x54F2,\n 0x934F: 0x5FB9,\n 0x9350: 0x64A4,\n 0x9351: 0x8F4D,\n 0x9352: 0x8FED,\n 0x9353: 0x9244,\n 0x9354: 0x5178,\n 0x9355: 0x586B,\n 0x9356: 0x5929,\n 0x9357: 0x5C55,\n 0x9358: 0x5E97,\n 0x9359: 0x6DFB,\n 0x935A: 0x7E8F,\n 0x935B: 0x751C,\n 0x935C: 0x8CBC,\n 0x935D: 0x8EE2,\n 0x935E: 0x985B,\n 0x935F: 0x70B9,\n 0x9360: 0x4F1D,\n 0x9361: 0x6BBF,\n 0x9362: 0x6FB1,\n 0x9363: 0x7530,\n 0x9364: 0x96FB,\n 0x9365: 0x514E,\n 0x9366: 0x5410,\n 0x9367: 0x5835,\n 0x9368: 0x5857,\n 0x9369: 0x59AC,\n 0x936A: 0x5C60,\n 0x936B: 0x5F92,\n 0x936C: 0x6597,\n 0x936D: 0x675C,\n 0x936E: 0x6E21,\n 0x936F: 0x767B,\n 0x9370: 0x83DF,\n 0x9371: 0x8CED,\n 0x9372: 0x9014,\n 0x9373: 0x90FD,\n 0x9374: 0x934D,\n 0x9375: 0x7825,\n 0x9376: 0x783A,\n 0x9377: 0x52AA,\n 0x9378: 0x5EA6,\n 0x9379: 0x571F,\n 0x937A: 0x5974,\n 0x937B: 0x6012,\n 0x937C: 0x5012,\n 0x937D: 0x515A,\n 0x937E: 0x51AC,\n 0x9380: 0x51CD,\n 0x9381: 0x5200,\n 0x9382: 0x5510,\n 0x9383: 0x5854,\n 0x9384: 0x5858,\n 0x9385: 0x5957,\n 0x9386: 0x5B95,\n 0x9387: 0x5CF6,\n 0x9388: 0x5D8B,\n 0x9389: 0x60BC,\n 0x938A: 0x6295,\n 0x938B: 0x642D,\n 0x938C: 0x6771,\n 0x938D: 0x6843,\n 0x938E: 0x68BC,\n 0x938F: 0x68DF,\n 0x9390: 0x76D7,\n 0x9391: 0x6DD8,\n 0x9392: 0x6E6F,\n 0x9393: 0x6D9B,\n 0x9394: 0x706F,\n 0x9395: 0x71C8,\n 0x9396: 0x5F53,\n 0x9397: 0x75D8,\n 0x9398: 0x7977,\n 0x9399: 0x7B49,\n 0x939A: 0x7B54,\n 0x939B: 0x7B52,\n 0x939C: 0x7CD6,\n 0x939D: 0x7D71,\n 0x939E: 0x5230,\n 0x939F: 0x8463,\n 0x93A0: 0x8569,\n 0x93A1: 0x85E4,\n 0x93A2: 0x8A0E,\n 0x93A3: 0x8B04,\n 0x93A4: 0x8C46,\n 0x93A5: 0x8E0F,\n 0x93A6: 0x9003,\n 0x93A7: 0x900F,\n 0x93A8: 0x9419,\n 0x93A9: 0x9676,\n 0x93AA: 0x982D,\n 0x93AB: 0x9A30,\n 0x93AC: 0x95D8,\n 0x93AD: 0x50CD,\n 0x93AE: 0x52D5,\n 0x93AF: 0x540C,\n 0x93B0: 0x5802,\n 0x93B1: 0x5C0E,\n 0x93B2: 0x61A7,\n 0x93B3: 0x649E,\n 0x93B4: 0x6D1E,\n 0x93B5: 0x77B3,\n 0x93B6: 0x7AE5,\n 0x93B7: 0x80F4,\n 0x93B8: 0x8404,\n 0x93B9: 0x9053,\n 0x93BA: 0x9285,\n 0x93BB: 0x5CE0,\n 0x93BC: 0x9D07,\n 0x93BD: 0x533F,\n 0x93BE: 0x5F97,\n 0x93BF: 0x5FB3,\n 0x93C0: 0x6D9C,\n 0x93C1: 0x7279,\n 0x93C2: 0x7763,\n 0x93C3: 0x79BF,\n 0x93C4: 0x7BE4,\n 0x93C5: 0x6BD2,\n 0x93C6: 0x72EC,\n 0x93C7: 0x8AAD,\n 0x93C8: 0x6803,\n 0x93C9: 0x6A61,\n 0x93CA: 0x51F8,\n 0x93CB: 0x7A81,\n 0x93CC: 0x6934,\n 0x93CD: 0x5C4A,\n 0x93CE: 0x9CF6,\n 0x93CF: 0x82EB,\n 0x93D0: 0x5BC5,\n 0x93D1: 0x9149,\n 0x93D2: 0x701E,\n 0x93D3: 0x5678,\n 0x93D4: 0x5C6F,\n 0x93D5: 0x60C7,\n 0x93D6: 0x6566,\n 0x93D7: 0x6C8C,\n 0x93D8: 0x8C5A,\n 0x93D9: 0x9041,\n 0x93DA: 0x9813,\n 0x93DB: 0x5451,\n 0x93DC: 0x66C7,\n 0x93DD: 0x920D,\n 0x93DE: 0x5948,\n 0x93DF: 0x90A3,\n 0x93E0: 0x5185,\n 0x93E1: 0x4E4D,\n 0x93E2: 0x51EA,\n 0x93E3: 0x8599,\n 0x93E4: 0x8B0E,\n 0x93E5: 0x7058,\n 0x93E6: 0x637A,\n 0x93E7: 0x934B,\n 0x93E8: 0x6962,\n 0x93E9: 0x99B4,\n 0x93EA: 0x7E04,\n 0x93EB: 0x7577,\n 0x93EC: 0x5357,\n 0x93ED: 0x6960,\n 0x93EE: 0x8EDF,\n 0x93EF: 0x96E3,\n 0x93F0: 0x6C5D,\n 0x93F1: 0x4E8C,\n 0x93F2: 0x5C3C,\n 0x93F3: 0x5F10,\n 0x93F4: 0x8FE9,\n 0x93F5: 0x5302,\n 0x93F6: 0x8CD1,\n 0x93F7: 0x8089,\n 0x93F8: 0x8679,\n 0x93F9: 0x5EFF,\n 0x93FA: 0x65E5,\n 0x93FB: 0x4E73,\n 0x93FC: 0x5165,\n 0x9440: 0x5982,\n 0x9441: 0x5C3F,\n 0x9442: 0x97EE,\n 0x9443: 0x4EFB,\n 0x9444: 0x598A,\n 0x9445: 0x5FCD,\n 0x9446: 0x8A8D,\n 0x9447: 0x6FE1,\n 0x9448: 0x79B0,\n 0x9449: 0x7962,\n 0x944A: 0x5BE7,\n 0x944B: 0x8471,\n 0x944C: 0x732B,\n 0x944D: 0x71B1,\n 0x944E: 0x5E74,\n 0x944F: 0x5FF5,\n 0x9450: 0x637B,\n 0x9451: 0x649A,\n 0x9452: 0x71C3,\n 0x9453: 0x7C98,\n 0x9454: 0x4E43,\n 0x9455: 0x5EFC,\n 0x9456: 0x4E4B,\n 0x9457: 0x57DC,\n 0x9458: 0x56A2,\n 0x9459: 0x60A9,\n 0x945A: 0x6FC3,\n 0x945B: 0x7D0D,\n 0x945C: 0x80FD,\n 0x945D: 0x8133,\n 0x945E: 0x81BF,\n 0x945F: 0x8FB2,\n 0x9460: 0x8997,\n 0x9461: 0x86A4,\n 0x9462: 0x5DF4,\n 0x9463: 0x628A,\n 0x9464: 0x64AD,\n 0x9465: 0x8987,\n 0x9466: 0x6777,\n 0x9467: 0x6CE2,\n 0x9468: 0x6D3E,\n 0x9469: 0x7436,\n 0x946A: 0x7834,\n 0x946B: 0x5A46,\n 0x946C: 0x7F75,\n 0x946D: 0x82AD,\n 0x946E: 0x99AC,\n 0x946F: 0x4FF3,\n 0x9470: 0x5EC3,\n 0x9471: 0x62DD,\n 0x9472: 0x6392,\n 0x9473: 0x6557,\n 0x9474: 0x676F,\n 0x9475: 0x76C3,\n 0x9476: 0x724C,\n 0x9477: 0x80CC,\n 0x9478: 0x80BA,\n 0x9479: 0x8F29,\n 0x947A: 0x914D,\n 0x947B: 0x500D,\n 0x947C: 0x57F9,\n 0x947D: 0x5A92,\n 0x947E: 0x6885,\n 0x9480: 0x6973,\n 0x9481: 0x7164,\n 0x9482: 0x72FD,\n 0x9483: 0x8CB7,\n 0x9484: 0x58F2,\n 0x9485: 0x8CE0,\n 0x9486: 0x966A,\n 0x9487: 0x9019,\n 0x9488: 0x877F,\n 0x9489: 0x79E4,\n 0x948A: 0x77E7,\n 0x948B: 0x8429,\n 0x948C: 0x4F2F,\n 0x948D: 0x5265,\n 0x948E: 0x535A,\n 0x948F: 0x62CD,\n 0x9490: 0x67CF,\n 0x9491: 0x6CCA,\n 0x9492: 0x767D,\n 0x9493: 0x7B94,\n 0x9494: 0x7C95,\n 0x9495: 0x8236,\n 0x9496: 0x8584,\n 0x9497: 0x8FEB,\n 0x9498: 0x66DD,\n 0x9499: 0x6F20,\n 0x949A: 0x7206,\n 0x949B: 0x7E1B,\n 0x949C: 0x83AB,\n 0x949D: 0x99C1,\n 0x949E: 0x9EA6,\n 0x949F: 0x51FD,\n 0x94A0: 0x7BB1,\n 0x94A1: 0x7872,\n 0x94A2: 0x7BB8,\n 0x94A3: 0x8087,\n 0x94A4: 0x7B48,\n 0x94A5: 0x6AE8,\n 0x94A6: 0x5E61,\n 0x94A7: 0x808C,\n 0x94A8: 0x7551,\n 0x94A9: 0x7560,\n 0x94AA: 0x516B,\n 0x94AB: 0x9262,\n 0x94AC: 0x6E8C,\n 0x94AD: 0x767A,\n 0x94AE: 0x9197,\n 0x94AF: 0x9AEA,\n 0x94B0: 0x4F10,\n 0x94B1: 0x7F70,\n 0x94B2: 0x629C,\n 0x94B3: 0x7B4F,\n 0x94B4: 0x95A5,\n 0x94B5: 0x9CE9,\n 0x94B6: 0x567A,\n 0x94B7: 0x5859,\n 0x94B8: 0x86E4,\n 0x94B9: 0x96BC,\n 0x94BA: 0x4F34,\n 0x94BB: 0x5224,\n 0x94BC: 0x534A,\n 0x94BD: 0x53CD,\n 0x94BE: 0x53DB,\n 0x94BF: 0x5E06,\n 0x94C0: 0x642C,\n 0x94C1: 0x6591,\n 0x94C2: 0x677F,\n 0x94C3: 0x6C3E,\n 0x94C4: 0x6C4E,\n 0x94C5: 0x7248,\n 0x94C6: 0x72AF,\n 0x94C7: 0x73ED,\n 0x94C8: 0x7554,\n 0x94C9: 0x7E41,\n 0x94CA: 0x822C,\n 0x94CB: 0x85E9,\n 0x94CC: 0x8CA9,\n 0x94CD: 0x7BC4,\n 0x94CE: 0x91C6,\n 0x94CF: 0x7169,\n 0x94D0: 0x9812,\n 0x94D1: 0x98EF,\n 0x94D2: 0x633D,\n 0x94D3: 0x6669,\n 0x94D4: 0x756A,\n 0x94D5: 0x76E4,\n 0x94D6: 0x78D0,\n 0x94D7: 0x8543,\n 0x94D8: 0x86EE,\n 0x94D9: 0x532A,\n 0x94DA: 0x5351,\n 0x94DB: 0x5426,\n 0x94DC: 0x5983,\n 0x94DD: 0x5E87,\n 0x94DE: 0x5F7C,\n 0x94DF: 0x60B2,\n 0x94E0: 0x6249,\n 0x94E1: 0x6279,\n 0x94E2: 0x62AB,\n 0x94E3: 0x6590,\n 0x94E4: 0x6BD4,\n 0x94E5: 0x6CCC,\n 0x94E6: 0x75B2,\n 0x94E7: 0x76AE,\n 0x94E8: 0x7891,\n 0x94E9: 0x79D8,\n 0x94EA: 0x7DCB,\n 0x94EB: 0x7F77,\n 0x94EC: 0x80A5,\n 0x94ED: 0x88AB,\n 0x94EE: 0x8AB9,\n 0x94EF: 0x8CBB,\n 0x94F0: 0x907F,\n 0x94F1: 0x975E,\n 0x94F2: 0x98DB,\n 0x94F3: 0x6A0B,\n 0x94F4: 0x7C38,\n 0x94F5: 0x5099,\n 0x94F6: 0x5C3E,\n 0x94F7: 0x5FAE,\n 0x94F8: 0x6787,\n 0x94F9: 0x6BD8,\n 0x94FA: 0x7435,\n 0x94FB: 0x7709,\n 0x94FC: 0x7F8E,\n 0x9540: 0x9F3B,\n 0x9541: 0x67CA,\n 0x9542: 0x7A17,\n 0x9543: 0x5339,\n 0x9544: 0x758B,\n 0x9545: 0x9AED,\n 0x9546: 0x5F66,\n 0x9547: 0x819D,\n 0x9548: 0x83F1,\n 0x9549: 0x8098,\n 0x954A: 0x5F3C,\n 0x954B: 0x5FC5,\n 0x954C: 0x7562,\n 0x954D: 0x7B46,\n 0x954E: 0x903C,\n 0x954F: 0x6867,\n 0x9550: 0x59EB,\n 0x9551: 0x5A9B,\n 0x9552: 0x7D10,\n 0x9553: 0x767E,\n 0x9554: 0x8B2C,\n 0x9555: 0x4FF5,\n 0x9556: 0x5F6A,\n 0x9557: 0x6A19,\n 0x9558: 0x6C37,\n 0x9559: 0x6F02,\n 0x955A: 0x74E2,\n 0x955B: 0x7968,\n 0x955C: 0x8868,\n 0x955D: 0x8A55,\n 0x955E: 0x8C79,\n 0x955F: 0x5EDF,\n 0x9560: 0x63CF,\n 0x9561: 0x75C5,\n 0x9562: 0x79D2,\n 0x9563: 0x82D7,\n 0x9564: 0x9328,\n 0x9565: 0x92F2,\n 0x9566: 0x849C,\n 0x9567: 0x86ED,\n 0x9568: 0x9C2D,\n 0x9569: 0x54C1,\n 0x956A: 0x5F6C,\n 0x956B: 0x658C,\n 0x956C: 0x6D5C,\n 0x956D: 0x7015,\n 0x956E: 0x8CA7,\n 0x956F: 0x8CD3,\n 0x9570: 0x983B,\n 0x9571: 0x654F,\n 0x9572: 0x74F6,\n 0x9573: 0x4E0D,\n 0x9574: 0x4ED8,\n 0x9575: 0x57E0,\n 0x9576: 0x592B,\n 0x9577: 0x5A66,\n 0x9578: 0x5BCC,\n 0x9579: 0x51A8,\n 0x957A: 0x5E03,\n 0x957B: 0x5E9C,\n 0x957C: 0x6016,\n 0x957D: 0x6276,\n 0x957E: 0x6577,\n 0x9580: 0x65A7,\n 0x9581: 0x666E,\n 0x9582: 0x6D6E,\n 0x9583: 0x7236,\n 0x9584: 0x7B26,\n 0x9585: 0x8150,\n 0x9586: 0x819A,\n 0x9587: 0x8299,\n 0x9588: 0x8B5C,\n 0x9589: 0x8CA0,\n 0x958A: 0x8CE6,\n 0x958B: 0x8D74,\n 0x958C: 0x961C,\n 0x958D: 0x9644,\n 0x958E: 0x4FAE,\n 0x958F: 0x64AB,\n 0x9590: 0x6B66,\n 0x9591: 0x821E,\n 0x9592: 0x8461,\n 0x9593: 0x856A,\n 0x9594: 0x90E8,\n 0x9595: 0x5C01,\n 0x9596: 0x6953,\n 0x9597: 0x98A8,\n 0x9598: 0x847A,\n 0x9599: 0x8557,\n 0x959A: 0x4F0F,\n 0x959B: 0x526F,\n 0x959C: 0x5FA9,\n 0x959D: 0x5E45,\n 0x959E: 0x670D,\n 0x959F: 0x798F,\n 0x95A0: 0x8179,\n 0x95A1: 0x8907,\n 0x95A2: 0x8986,\n 0x95A3: 0x6DF5,\n 0x95A4: 0x5F17,\n 0x95A5: 0x6255,\n 0x95A6: 0x6CB8,\n 0x95A7: 0x4ECF,\n 0x95A8: 0x7269,\n 0x95A9: 0x9B92,\n 0x95AA: 0x5206,\n 0x95AB: 0x543B,\n 0x95AC: 0x5674,\n 0x95AD: 0x58B3,\n 0x95AE: 0x61A4,\n 0x95AF: 0x626E,\n 0x95B0: 0x711A,\n 0x95B1: 0x596E,\n 0x95B2: 0x7C89,\n 0x95B3: 0x7CDE,\n 0x95B4: 0x7D1B,\n 0x95B5: 0x96F0,\n 0x95B6: 0x6587,\n 0x95B7: 0x805E,\n 0x95B8: 0x4E19,\n 0x95B9: 0x4F75,\n 0x95BA: 0x5175,\n 0x95BB: 0x5840,\n 0x95BC: 0x5E63,\n 0x95BD: 0x5E73,\n 0x95BE: 0x5F0A,\n 0x95BF: 0x67C4,\n 0x95C0: 0x4E26,\n 0x95C1: 0x853D,\n 0x95C2: 0x9589,\n 0x95C3: 0x965B,\n 0x95C4: 0x7C73,\n 0x95C5: 0x9801,\n 0x95C6: 0x50FB,\n 0x95C7: 0x58C1,\n 0x95C8: 0x7656,\n 0x95C9: 0x78A7,\n 0x95CA: 0x5225,\n 0x95CB: 0x77A5,\n 0x95CC: 0x8511,\n 0x95CD: 0x7B86,\n 0x95CE: 0x504F,\n 0x95CF: 0x5909,\n 0x95D0: 0x7247,\n 0x95D1: 0x7BC7,\n 0x95D2: 0x7DE8,\n 0x95D3: 0x8FBA,\n 0x95D4: 0x8FD4,\n 0x95D5: 0x904D,\n 0x95D6: 0x4FBF,\n 0x95D7: 0x52C9,\n 0x95D8: 0x5A29,\n 0x95D9: 0x5F01,\n 0x95DA: 0x97AD,\n 0x95DB: 0x4FDD,\n 0x95DC: 0x8217,\n 0x95DD: 0x92EA,\n 0x95DE: 0x5703,\n 0x95DF: 0x6355,\n 0x95E0: 0x6B69,\n 0x95E1: 0x752B,\n 0x95E2: 0x88DC,\n 0x95E3: 0x8F14,\n 0x95E4: 0x7A42,\n 0x95E5: 0x52DF,\n 0x95E6: 0x5893,\n 0x95E7: 0x6155,\n 0x95E8: 0x620A,\n 0x95E9: 0x66AE,\n 0x95EA: 0x6BCD,\n 0x95EB: 0x7C3F,\n 0x95EC: 0x83E9,\n 0x95ED: 0x5023,\n 0x95EE: 0x4FF8,\n 0x95EF: 0x5305,\n 0x95F0: 0x5446,\n 0x95F1: 0x5831,\n 0x95F2: 0x5949,\n 0x95F3: 0x5B9D,\n 0x95F4: 0x5CF0,\n 0x95F5: 0x5CEF,\n 0x95F6: 0x5D29,\n 0x95F7: 0x5E96,\n 0x95F8: 0x62B1,\n 0x95F9: 0x6367,\n 0x95FA: 0x653E,\n 0x95FB: 0x65B9,\n 0x95FC: 0x670B,\n 0x9640: 0x6CD5,\n 0x9641: 0x6CE1,\n 0x9642: 0x70F9,\n 0x9643: 0x7832,\n 0x9644: 0x7E2B,\n 0x9645: 0x80DE,\n 0x9646: 0x82B3,\n 0x9647: 0x840C,\n 0x9648: 0x84EC,\n 0x9649: 0x8702,\n 0x964A: 0x8912,\n 0x964B: 0x8A2A,\n 0x964C: 0x8C4A,\n 0x964D: 0x90A6,\n 0x964E: 0x92D2,\n 0x964F: 0x98FD,\n 0x9650: 0x9CF3,\n 0x9651: 0x9D6C,\n 0x9652: 0x4E4F,\n 0x9653: 0x4EA1,\n 0x9654: 0x508D,\n 0x9655: 0x5256,\n 0x9656: 0x574A,\n 0x9657: 0x59A8,\n 0x9658: 0x5E3D,\n 0x9659: 0x5FD8,\n 0x965A: 0x5FD9,\n 0x965B: 0x623F,\n 0x965C: 0x66B4,\n 0x965D: 0x671B,\n 0x965E: 0x67D0,\n 0x965F: 0x68D2,\n 0x9660: 0x5192,\n 0x9661: 0x7D21,\n 0x9662: 0x80AA,\n 0x9663: 0x81A8,\n 0x9664: 0x8B00,\n 0x9665: 0x8C8C,\n 0x9666: 0x8CBF,\n 0x9667: 0x927E,\n 0x9668: 0x9632,\n 0x9669: 0x5420,\n 0x966A: 0x982C,\n 0x966B: 0x5317,\n 0x966C: 0x50D5,\n 0x966D: 0x535C,\n 0x966E: 0x58A8,\n 0x966F: 0x64B2,\n 0x9670: 0x6734,\n 0x9671: 0x7267,\n 0x9672: 0x7766,\n 0x9673: 0x7A46,\n 0x9674: 0x91E6,\n 0x9675: 0x52C3,\n 0x9676: 0x6CA1,\n 0x9677: 0x6B86,\n 0x9678: 0x5800,\n 0x9679: 0x5E4C,\n 0x967A: 0x5954,\n 0x967B: 0x672C,\n 0x967C: 0x7FFB,\n 0x967D: 0x51E1,\n 0x967E: 0x76C6,\n 0x9680: 0x6469,\n 0x9681: 0x78E8,\n 0x9682: 0x9B54,\n 0x9683: 0x9EBB,\n 0x9684: 0x57CB,\n 0x9685: 0x59B9,\n 0x9686: 0x6627,\n 0x9687: 0x679A,\n 0x9688: 0x6BCE,\n 0x9689: 0x54E9,\n 0x968A: 0x69D9,\n 0x968B: 0x5E55,\n 0x968C: 0x819C,\n 0x968D: 0x6795,\n 0x968E: 0x9BAA,\n 0x968F: 0x67FE,\n 0x9690: 0x9C52,\n 0x9691: 0x685D,\n 0x9692: 0x4EA6,\n 0x9693: 0x4FE3,\n 0x9694: 0x53C8,\n 0x9695: 0x62B9,\n 0x9696: 0x672B,\n 0x9697: 0x6CAB,\n 0x9698: 0x8FC4,\n 0x9699: 0x4FAD,\n 0x969A: 0x7E6D,\n 0x969B: 0x9EBF,\n 0x969C: 0x4E07,\n 0x969D: 0x6162,\n 0x969E: 0x6E80,\n 0x969F: 0x6F2B,\n 0x96A0: 0x8513,\n 0x96A1: 0x5473,\n 0x96A2: 0x672A,\n 0x96A3: 0x9B45,\n 0x96A4: 0x5DF3,\n 0x96A5: 0x7B95,\n 0x96A6: 0x5CAC,\n 0x96A7: 0x5BC6,\n 0x96A8: 0x871C,\n 0x96A9: 0x6E4A,\n 0x96AA: 0x84D1,\n 0x96AB: 0x7A14,\n 0x96AC: 0x8108,\n 0x96AD: 0x5999,\n 0x96AE: 0x7C8D,\n 0x96AF: 0x6C11,\n 0x96B0: 0x7720,\n 0x96B1: 0x52D9,\n 0x96B2: 0x5922,\n 0x96B3: 0x7121,\n 0x96B4: 0x725F,\n 0x96B5: 0x77DB,\n 0x96B6: 0x9727,\n 0x96B7: 0x9D61,\n 0x96B8: 0x690B,\n 0x96B9: 0x5A7F,\n 0x96BA: 0x5A18,\n 0x96BB: 0x51A5,\n 0x96BC: 0x540D,\n 0x96BD: 0x547D,\n 0x96BE: 0x660E,\n 0x96BF: 0x76DF,\n 0x96C0: 0x8FF7,\n 0x96C1: 0x9298,\n 0x96C2: 0x9CF4,\n 0x96C3: 0x59EA,\n 0x96C4: 0x725D,\n 0x96C5: 0x6EC5,\n 0x96C6: 0x514D,\n 0x96C7: 0x68C9,\n 0x96C8: 0x7DBF,\n 0x96C9: 0x7DEC,\n 0x96CA: 0x9762,\n 0x96CB: 0x9EBA,\n 0x96CC: 0x6478,\n 0x96CD: 0x6A21,\n 0x96CE: 0x8302,\n 0x96CF: 0x5984,\n 0x96D0: 0x5B5F,\n 0x96D1: 0x6BDB,\n 0x96D2: 0x731B,\n 0x96D3: 0x76F2,\n 0x96D4: 0x7DB2,\n 0x96D5: 0x8017,\n 0x96D6: 0x8499,\n 0x96D7: 0x5132,\n 0x96D8: 0x6728,\n 0x96D9: 0x9ED9,\n 0x96DA: 0x76EE,\n 0x96DB: 0x6762,\n 0x96DC: 0x52FF,\n 0x96DD: 0x9905,\n 0x96DE: 0x5C24,\n 0x96DF: 0x623B,\n 0x96E0: 0x7C7E,\n 0x96E1: 0x8CB0,\n 0x96E2: 0x554F,\n 0x96E3: 0x60B6,\n 0x96E4: 0x7D0B,\n 0x96E5: 0x9580,\n 0x96E6: 0x5301,\n 0x96E7: 0x4E5F,\n 0x96E8: 0x51B6,\n 0x96E9: 0x591C,\n 0x96EA: 0x723A,\n 0x96EB: 0x8036,\n 0x96EC: 0x91CE,\n 0x96ED: 0x5F25,\n 0x96EE: 0x77E2,\n 0x96EF: 0x5384,\n 0x96F0: 0x5F79,\n 0x96F1: 0x7D04,\n 0x96F2: 0x85AC,\n 0x96F3: 0x8A33,\n 0x96F4: 0x8E8D,\n 0x96F5: 0x9756,\n 0x96F6: 0x67F3,\n 0x96F7: 0x85AE,\n 0x96F8: 0x9453,\n 0x96F9: 0x6109,\n 0x96FA: 0x6108,\n 0x96FB: 0x6CB9,\n 0x96FC: 0x7652,\n 0x9740: 0x8AED,\n 0x9741: 0x8F38,\n 0x9742: 0x552F,\n 0x9743: 0x4F51,\n 0x9744: 0x512A,\n 0x9745: 0x52C7,\n 0x9746: 0x53CB,\n 0x9747: 0x5BA5,\n 0x9748: 0x5E7D,\n 0x9749: 0x60A0,\n 0x974A: 0x6182,\n 0x974B: 0x63D6,\n 0x974C: 0x6709,\n 0x974D: 0x67DA,\n 0x974E: 0x6E67,\n 0x974F: 0x6D8C,\n 0x9750: 0x7336,\n 0x9751: 0x7337,\n 0x9752: 0x7531,\n 0x9753: 0x7950,\n 0x9754: 0x88D5,\n 0x9755: 0x8A98,\n 0x9756: 0x904A,\n 0x9757: 0x9091,\n 0x9758: 0x90F5,\n 0x9759: 0x96C4,\n 0x975A: 0x878D,\n 0x975B: 0x5915,\n 0x975C: 0x4E88,\n 0x975D: 0x4F59,\n 0x975E: 0x4E0E,\n 0x975F: 0x8A89,\n 0x9760: 0x8F3F,\n 0x9761: 0x9810,\n 0x9762: 0x50AD,\n 0x9763: 0x5E7C,\n 0x9764: 0x5996,\n 0x9765: 0x5BB9,\n 0x9766: 0x5EB8,\n 0x9767: 0x63DA,\n 0x9768: 0x63FA,\n 0x9769: 0x64C1,\n 0x976A: 0x66DC,\n 0x976B: 0x694A,\n 0x976C: 0x69D8,\n 0x976D: 0x6D0B,\n 0x976E: 0x6EB6,\n 0x976F: 0x7194,\n 0x9770: 0x7528,\n 0x9771: 0x7AAF,\n 0x9772: 0x7F8A,\n 0x9773: 0x8000,\n 0x9774: 0x8449,\n 0x9775: 0x84C9,\n 0x9776: 0x8981,\n 0x9777: 0x8B21,\n 0x9778: 0x8E0A,\n 0x9779: 0x9065,\n 0x977A: 0x967D,\n 0x977B: 0x990A,\n 0x977C: 0x617E,\n 0x977D: 0x6291,\n 0x977E: 0x6B32,\n 0x9780: 0x6C83,\n 0x9781: 0x6D74,\n 0x9782: 0x7FCC,\n 0x9783: 0x7FFC,\n 0x9784: 0x6DC0,\n 0x9785: 0x7F85,\n 0x9786: 0x87BA,\n 0x9787: 0x88F8,\n 0x9788: 0x6765,\n 0x9789: 0x83B1,\n 0x978A: 0x983C,\n 0x978B: 0x96F7,\n 0x978C: 0x6D1B,\n 0x978D: 0x7D61,\n 0x978E: 0x843D,\n 0x978F: 0x916A,\n 0x9790: 0x4E71,\n 0x9791: 0x5375,\n 0x9792: 0x5D50,\n 0x9793: 0x6B04,\n 0x9794: 0x6FEB,\n 0x9795: 0x85CD,\n 0x9796: 0x862D,\n 0x9797: 0x89A7,\n 0x9798: 0x5229,\n 0x9799: 0x540F,\n 0x979A: 0x5C65,\n 0x979B: 0x674E,\n 0x979C: 0x68A8,\n 0x979D: 0x7406,\n 0x979E: 0x7483,\n 0x979F: 0x75E2,\n 0x97A0: 0x88CF,\n 0x97A1: 0x88E1,\n 0x97A2: 0x91CC,\n 0x97A3: 0x96E2,\n 0x97A4: 0x9678,\n 0x97A5: 0x5F8B,\n 0x97A6: 0x7387,\n 0x97A7: 0x7ACB,\n 0x97A8: 0x844E,\n 0x97A9: 0x63A0,\n 0x97AA: 0x7565,\n 0x97AB: 0x5289,\n 0x97AC: 0x6D41,\n 0x97AD: 0x6E9C,\n 0x97AE: 0x7409,\n 0x97AF: 0x7559,\n 0x97B0: 0x786B,\n 0x97B1: 0x7C92,\n 0x97B2: 0x9686,\n 0x97B3: 0x7ADC,\n 0x97B4: 0x9F8D,\n 0x97B5: 0x4FB6,\n 0x97B6: 0x616E,\n 0x97B7: 0x65C5,\n 0x97B8: 0x865C,\n 0x97B9: 0x4E86,\n 0x97BA: 0x4EAE,\n 0x97BB: 0x50DA,\n 0x97BC: 0x4E21,\n 0x97BD: 0x51CC,\n 0x97BE: 0x5BEE,\n 0x97BF: 0x6599,\n 0x97C0: 0x6881,\n 0x97C1: 0x6DBC,\n 0x97C2: 0x731F,\n 0x97C3: 0x7642,\n 0x97C4: 0x77AD,\n 0x97C5: 0x7A1C,\n 0x97C6: 0x7CE7,\n 0x97C7: 0x826F,\n 0x97C8: 0x8AD2,\n 0x97C9: 0x907C,\n 0x97CA: 0x91CF,\n 0x97CB: 0x9675,\n 0x97CC: 0x9818,\n 0x97CD: 0x529B,\n 0x97CE: 0x7DD1,\n 0x97CF: 0x502B,\n 0x97D0: 0x5398,\n 0x97D1: 0x6797,\n 0x97D2: 0x6DCB,\n 0x97D3: 0x71D0,\n 0x97D4: 0x7433,\n 0x97D5: 0x81E8,\n 0x97D6: 0x8F2A,\n 0x97D7: 0x96A3,\n 0x97D8: 0x9C57,\n 0x97D9: 0x9E9F,\n 0x97DA: 0x7460,\n 0x97DB: 0x5841,\n 0x97DC: 0x6D99,\n 0x97DD: 0x7D2F,\n 0x97DE: 0x985E,\n 0x97DF: 0x4EE4,\n 0x97E0: 0x4F36,\n 0x97E1: 0x4F8B,\n 0x97E2: 0x51B7,\n 0x97E3: 0x52B1,\n 0x97E4: 0x5DBA,\n 0x97E5: 0x601C,\n 0x97E6: 0x73B2,\n 0x97E7: 0x793C,\n 0x97E8: 0x82D3,\n 0x97E9: 0x9234,\n 0x97EA: 0x96B7,\n 0x97EB: 0x96F6,\n 0x97EC: 0x970A,\n 0x97ED: 0x9E97,\n 0x97EE: 0x9F62,\n 0x97EF: 0x66A6,\n 0x97F0: 0x6B74,\n 0x97F1: 0x5217,\n 0x97F2: 0x52A3,\n 0x97F3: 0x70C8,\n 0x97F4: 0x88C2,\n 0x97F5: 0x5EC9,\n 0x97F6: 0x604B,\n 0x97F7: 0x6190,\n 0x97F8: 0x6F23,\n 0x97F9: 0x7149,\n 0x97FA: 0x7C3E,\n 0x97FB: 0x7DF4,\n 0x97FC: 0x806F,\n 0x9840: 0x84EE,\n 0x9841: 0x9023,\n 0x9842: 0x932C,\n 0x9843: 0x5442,\n 0x9844: 0x9B6F,\n 0x9845: 0x6AD3,\n 0x9846: 0x7089,\n 0x9847: 0x8CC2,\n 0x9848: 0x8DEF,\n 0x9849: 0x9732,\n 0x984A: 0x52B4,\n 0x984B: 0x5A41,\n 0x984C: 0x5ECA,\n 0x984D: 0x5F04,\n 0x984E: 0x6717,\n 0x984F: 0x697C,\n 0x9850: 0x6994,\n 0x9851: 0x6D6A,\n 0x9852: 0x6F0F,\n 0x9853: 0x7262,\n 0x9854: 0x72FC,\n 0x9855: 0x7BED,\n 0x9856: 0x8001,\n 0x9857: 0x807E,\n 0x9858: 0x874B,\n 0x9859: 0x90CE,\n 0x985A: 0x516D,\n 0x985B: 0x9E93,\n 0x985C: 0x7984,\n 0x985D: 0x808B,\n 0x985E: 0x9332,\n 0x985F: 0x8AD6,\n 0x9860: 0x502D,\n 0x9861: 0x548C,\n 0x9862: 0x8A71,\n 0x9863: 0x6B6A,\n 0x9864: 0x8CC4,\n 0x9865: 0x8107,\n 0x9866: 0x60D1,\n 0x9867: 0x67A0,\n 0x9868: 0x9DF2,\n 0x9869: 0x4E99,\n 0x986A: 0x4E98,\n 0x986B: 0x9C10,\n 0x986C: 0x8A6B,\n 0x986D: 0x85C1,\n 0x986E: 0x8568,\n 0x986F: 0x6900,\n 0x9870: 0x6E7E,\n 0x9871: 0x7897,\n 0x9872: 0x8155,\n 0x989F: 0x5F0C,\n 0x98A0: 0x4E10,\n 0x98A1: 0x4E15,\n 0x98A2: 0x4E2A,\n 0x98A3: 0x4E31,\n 0x98A4: 0x4E36,\n 0x98A5: 0x4E3C,\n 0x98A6: 0x4E3F,\n 0x98A7: 0x4E42,\n 0x98A8: 0x4E56,\n 0x98A9: 0x4E58,\n 0x98AA: 0x4E82,\n 0x98AB: 0x4E85,\n 0x98AC: 0x8C6B,\n 0x98AD: 0x4E8A,\n 0x98AE: 0x8212,\n 0x98AF: 0x5F0D,\n 0x98B0: 0x4E8E,\n 0x98B1: 0x4E9E,\n 0x98B2: 0x4E9F,\n 0x98B3: 0x4EA0,\n 0x98B4: 0x4EA2,\n 0x98B5: 0x4EB0,\n 0x98B6: 0x4EB3,\n 0x98B7: 0x4EB6,\n 0x98B8: 0x4ECE,\n 0x98B9: 0x4ECD,\n 0x98BA: 0x4EC4,\n 0x98BB: 0x4EC6,\n 0x98BC: 0x4EC2,\n 0x98BD: 0x4ED7,\n 0x98BE: 0x4EDE,\n 0x98BF: 0x4EED,\n 0x98C0: 0x4EDF,\n 0x98C1: 0x4EF7,\n 0x98C2: 0x4F09,\n 0x98C3: 0x4F5A,\n 0x98C4: 0x4F30,\n 0x98C5: 0x4F5B,\n 0x98C6: 0x4F5D,\n 0x98C7: 0x4F57,\n 0x98C8: 0x4F47,\n 0x98C9: 0x4F76,\n 0x98CA: 0x4F88,\n 0x98CB: 0x4F8F,\n 0x98CC: 0x4F98,\n 0x98CD: 0x4F7B,\n 0x98CE: 0x4F69,\n 0x98CF: 0x4F70,\n 0x98D0: 0x4F91,\n 0x98D1: 0x4F6F,\n 0x98D2: 0x4F86,\n 0x98D3: 0x4F96,\n 0x98D4: 0x5118,\n 0x98D5: 0x4FD4,\n 0x98D6: 0x4FDF,\n 0x98D7: 0x4FCE,\n 0x98D8: 0x4FD8,\n 0x98D9: 0x4FDB,\n 0x98DA: 0x4FD1,\n 0x98DB: 0x4FDA,\n 0x98DC: 0x4FD0,\n 0x98DD: 0x4FE4,\n 0x98DE: 0x4FE5,\n 0x98DF: 0x501A,\n 0x98E0: 0x5028,\n 0x98E1: 0x5014,\n 0x98E2: 0x502A,\n 0x98E3: 0x5025,\n 0x98E4: 0x5005,\n 0x98E5: 0x4F1C,\n 0x98E6: 0x4FF6,\n 0x98E7: 0x5021,\n 0x98E8: 0x5029,\n 0x98E9: 0x502C,\n 0x98EA: 0x4FFE,\n 0x98EB: 0x4FEF,\n 0x98EC: 0x5011,\n 0x98ED: 0x5006,\n 0x98EE: 0x5043,\n 0x98EF: 0x5047,\n 0x98F0: 0x6703,\n 0x98F1: 0x5055,\n 0x98F2: 0x5050,\n 0x98F3: 0x5048,\n 0x98F4: 0x505A,\n 0x98F5: 0x5056,\n 0x98F6: 0x506C,\n 0x98F7: 0x5078,\n 0x98F8: 0x5080,\n 0x98F9: 0x509A,\n 0x98FA: 0x5085,\n 0x98FB: 0x50B4,\n 0x98FC: 0x50B2,\n 0x9940: 0x50C9,\n 0x9941: 0x50CA,\n 0x9942: 0x50B3,\n 0x9943: 0x50C2,\n 0x9944: 0x50D6,\n 0x9945: 0x50DE,\n 0x9946: 0x50E5,\n 0x9947: 0x50ED,\n 0x9948: 0x50E3,\n 0x9949: 0x50EE,\n 0x994A: 0x50F9,\n 0x994B: 0x50F5,\n 0x994C: 0x5109,\n 0x994D: 0x5101,\n 0x994E: 0x5102,\n 0x994F: 0x5116,\n 0x9950: 0x5115,\n 0x9951: 0x5114,\n 0x9952: 0x511A,\n 0x9953: 0x5121,\n 0x9954: 0x513A,\n 0x9955: 0x5137,\n 0x9956: 0x513C,\n 0x9957: 0x513B,\n 0x9958: 0x513F,\n 0x9959: 0x5140,\n 0x995A: 0x5152,\n 0x995B: 0x514C,\n 0x995C: 0x5154,\n 0x995D: 0x5162,\n 0x995E: 0x7AF8,\n 0x995F: 0x5169,\n 0x9960: 0x516A,\n 0x9961: 0x516E,\n 0x9962: 0x5180,\n 0x9963: 0x5182,\n 0x9964: 0x56D8,\n 0x9965: 0x518C,\n 0x9966: 0x5189,\n 0x9967: 0x518F,\n 0x9968: 0x5191,\n 0x9969: 0x5193,\n 0x996A: 0x5195,\n 0x996B: 0x5196,\n 0x996C: 0x51A4,\n 0x996D: 0x51A6,\n 0x996E: 0x51A2,\n 0x996F: 0x51A9,\n 0x9970: 0x51AA,\n 0x9971: 0x51AB,\n 0x9972: 0x51B3,\n 0x9973: 0x51B1,\n 0x9974: 0x51B2,\n 0x9975: 0x51B0,\n 0x9976: 0x51B5,\n 0x9977: 0x51BD,\n 0x9978: 0x51C5,\n 0x9979: 0x51C9,\n 0x997A: 0x51DB,\n 0x997B: 0x51E0,\n 0x997C: 0x8655,\n 0x997D: 0x51E9,\n 0x997E: 0x51ED,\n 0x9980: 0x51F0,\n 0x9981: 0x51F5,\n 0x9982: 0x51FE,\n 0x9983: 0x5204,\n 0x9984: 0x520B,\n 0x9985: 0x5214,\n 0x9986: 0x520E,\n 0x9987: 0x5227,\n 0x9988: 0x522A,\n 0x9989: 0x522E,\n 0x998A: 0x5233,\n 0x998B: 0x5239,\n 0x998C: 0x524F,\n 0x998D: 0x5244,\n 0x998E: 0x524B,\n 0x998F: 0x524C,\n 0x9990: 0x525E,\n 0x9991: 0x5254,\n 0x9992: 0x526A,\n 0x9993: 0x5274,\n 0x9994: 0x5269,\n 0x9995: 0x5273,\n 0x9996: 0x527F,\n 0x9997: 0x527D,\n 0x9998: 0x528D,\n 0x9999: 0x5294,\n 0x999A: 0x5292,\n 0x999B: 0x5271,\n 0x999C: 0x5288,\n 0x999D: 0x5291,\n 0x999E: 0x8FA8,\n 0x999F: 0x8FA7,\n 0x99A0: 0x52AC,\n 0x99A1: 0x52AD,\n 0x99A2: 0x52BC,\n 0x99A3: 0x52B5,\n 0x99A4: 0x52C1,\n 0x99A5: 0x52CD,\n 0x99A6: 0x52D7,\n 0x99A7: 0x52DE,\n 0x99A8: 0x52E3,\n 0x99A9: 0x52E6,\n 0x99AA: 0x98ED,\n 0x99AB: 0x52E0,\n 0x99AC: 0x52F3,\n 0x99AD: 0x52F5,\n 0x99AE: 0x52F8,\n 0x99AF: 0x52F9,\n 0x99B0: 0x5306,\n 0x99B1: 0x5308,\n 0x99B2: 0x7538,\n 0x99B3: 0x530D,\n 0x99B4: 0x5310,\n 0x99B5: 0x530F,\n 0x99B6: 0x5315,\n 0x99B7: 0x531A,\n 0x99B8: 0x5323,\n 0x99B9: 0x532F,\n 0x99BA: 0x5331,\n 0x99BB: 0x5333,\n 0x99BC: 0x5338,\n 0x99BD: 0x5340,\n 0x99BE: 0x5346,\n 0x99BF: 0x5345,\n 0x99C0: 0x4E17,\n 0x99C1: 0x5349,\n 0x99C2: 0x534D,\n 0x99C3: 0x51D6,\n 0x99C4: 0x535E,\n 0x99C5: 0x5369,\n 0x99C6: 0x536E,\n 0x99C7: 0x5918,\n 0x99C8: 0x537B,\n 0x99C9: 0x5377,\n 0x99CA: 0x5382,\n 0x99CB: 0x5396,\n 0x99CC: 0x53A0,\n 0x99CD: 0x53A6,\n 0x99CE: 0x53A5,\n 0x99CF: 0x53AE,\n 0x99D0: 0x53B0,\n 0x99D1: 0x53B6,\n 0x99D2: 0x53C3,\n 0x99D3: 0x7C12,\n 0x99D4: 0x96D9,\n 0x99D5: 0x53DF,\n 0x99D6: 0x66FC,\n 0x99D7: 0x71EE,\n 0x99D8: 0x53EE,\n 0x99D9: 0x53E8,\n 0x99DA: 0x53ED,\n 0x99DB: 0x53FA,\n 0x99DC: 0x5401,\n 0x99DD: 0x543D,\n 0x99DE: 0x5440,\n 0x99DF: 0x542C,\n 0x99E0: 0x542D,\n 0x99E1: 0x543C,\n 0x99E2: 0x542E,\n 0x99E3: 0x5436,\n 0x99E4: 0x5429,\n 0x99E5: 0x541D,\n 0x99E6: 0x544E,\n 0x99E7: 0x548F,\n 0x99E8: 0x5475,\n 0x99E9: 0x548E,\n 0x99EA: 0x545F,\n 0x99EB: 0x5471,\n 0x99EC: 0x5477,\n 0x99ED: 0x5470,\n 0x99EE: 0x5492,\n 0x99EF: 0x547B,\n 0x99F0: 0x5480,\n 0x99F1: 0x5476,\n 0x99F2: 0x5484,\n 0x99F3: 0x5490,\n 0x99F4: 0x5486,\n 0x99F5: 0x54C7,\n 0x99F6: 0x54A2,\n 0x99F7: 0x54B8,\n 0x99F8: 0x54A5,\n 0x99F9: 0x54AC,\n 0x99FA: 0x54C4,\n 0x99FB: 0x54C8,\n 0x99FC: 0x54A8,\n 0x9A40: 0x54AB,\n 0x9A41: 0x54C2,\n 0x9A42: 0x54A4,\n 0x9A43: 0x54BE,\n 0x9A44: 0x54BC,\n 0x9A45: 0x54D8,\n 0x9A46: 0x54E5,\n 0x9A47: 0x54E6,\n 0x9A48: 0x550F,\n 0x9A49: 0x5514,\n 0x9A4A: 0x54FD,\n 0x9A4B: 0x54EE,\n 0x9A4C: 0x54ED,\n 0x9A4D: 0x54FA,\n 0x9A4E: 0x54E2,\n 0x9A4F: 0x5539,\n 0x9A50: 0x5540,\n 0x9A51: 0x5563,\n 0x9A52: 0x554C,\n 0x9A53: 0x552E,\n 0x9A54: 0x555C,\n 0x9A55: 0x5545,\n 0x9A56: 0x5556,\n 0x9A57: 0x5557,\n 0x9A58: 0x5538,\n 0x9A59: 0x5533,\n 0x9A5A: 0x555D,\n 0x9A5B: 0x5599,\n 0x9A5C: 0x5580,\n 0x9A5D: 0x54AF,\n 0x9A5E: 0x558A,\n 0x9A5F: 0x559F,\n 0x9A60: 0x557B,\n 0x9A61: 0x557E,\n 0x9A62: 0x5598,\n 0x9A63: 0x559E,\n 0x9A64: 0x55AE,\n 0x9A65: 0x557C,\n 0x9A66: 0x5583,\n 0x9A67: 0x55A9,\n 0x9A68: 0x5587,\n 0x9A69: 0x55A8,\n 0x9A6A: 0x55DA,\n 0x9A6B: 0x55C5,\n 0x9A6C: 0x55DF,\n 0x9A6D: 0x55C4,\n 0x9A6E: 0x55DC,\n 0x9A6F: 0x55E4,\n 0x9A70: 0x55D4,\n 0x9A71: 0x5614,\n 0x9A72: 0x55F7,\n 0x9A73: 0x5616,\n 0x9A74: 0x55FE,\n 0x9A75: 0x55FD,\n 0x9A76: 0x561B,\n 0x9A77: 0x55F9,\n 0x9A78: 0x564E,\n 0x9A79: 0x5650,\n 0x9A7A: 0x71DF,\n 0x9A7B: 0x5634,\n 0x9A7C: 0x5636,\n 0x9A7D: 0x5632,\n 0x9A7E: 0x5638,\n 0x9A80: 0x566B,\n 0x9A81: 0x5664,\n 0x9A82: 0x562F,\n 0x9A83: 0x566C,\n 0x9A84: 0x566A,\n 0x9A85: 0x5686,\n 0x9A86: 0x5680,\n 0x9A87: 0x568A,\n 0x9A88: 0x56A0,\n 0x9A89: 0x5694,\n 0x9A8A: 0x568F,\n 0x9A8B: 0x56A5,\n 0x9A8C: 0x56AE,\n 0x9A8D: 0x56B6,\n 0x9A8E: 0x56B4,\n 0x9A8F: 0x56C2,\n 0x9A90: 0x56BC,\n 0x9A91: 0x56C1,\n 0x9A92: 0x56C3,\n 0x9A93: 0x56C0,\n 0x9A94: 0x56C8,\n 0x9A95: 0x56CE,\n 0x9A96: 0x56D1,\n 0x9A97: 0x56D3,\n 0x9A98: 0x56D7,\n 0x9A99: 0x56EE,\n 0x9A9A: 0x56F9,\n 0x9A9B: 0x5700,\n 0x9A9C: 0x56FF,\n 0x9A9D: 0x5704,\n 0x9A9E: 0x5709,\n 0x9A9F: 0x5708,\n 0x9AA0: 0x570B,\n 0x9AA1: 0x570D,\n 0x9AA2: 0x5713,\n 0x9AA3: 0x5718,\n 0x9AA4: 0x5716,\n 0x9AA5: 0x55C7,\n 0x9AA6: 0x571C,\n 0x9AA7: 0x5726,\n 0x9AA8: 0x5737,\n 0x9AA9: 0x5738,\n 0x9AAA: 0x574E,\n 0x9AAB: 0x573B,\n 0x9AAC: 0x5740,\n 0x9AAD: 0x574F,\n 0x9AAE: 0x5769,\n 0x9AAF: 0x57C0,\n 0x9AB0: 0x5788,\n 0x9AB1: 0x5761,\n 0x9AB2: 0x577F,\n 0x9AB3: 0x5789,\n 0x9AB4: 0x5793,\n 0x9AB5: 0x57A0,\n 0x9AB6: 0x57B3,\n 0x9AB7: 0x57A4,\n 0x9AB8: 0x57AA,\n 0x9AB9: 0x57B0,\n 0x9ABA: 0x57C3,\n 0x9ABB: 0x57C6,\n 0x9ABC: 0x57D4,\n 0x9ABD: 0x57D2,\n 0x9ABE: 0x57D3,\n 0x9ABF: 0x580A,\n 0x9AC0: 0x57D6,\n 0x9AC1: 0x57E3,\n 0x9AC2: 0x580B,\n 0x9AC3: 0x5819,\n 0x9AC4: 0x581D,\n 0x9AC5: 0x5872,\n 0x9AC6: 0x5821,\n 0x9AC7: 0x5862,\n 0x9AC8: 0x584B,\n 0x9AC9: 0x5870,\n 0x9ACA: 0x6BC0,\n 0x9ACB: 0x5852,\n 0x9ACC: 0x583D,\n 0x9ACD: 0x5879,\n 0x9ACE: 0x5885,\n 0x9ACF: 0x58B9,\n 0x9AD0: 0x589F,\n 0x9AD1: 0x58AB,\n 0x9AD2: 0x58BA,\n 0x9AD3: 0x58DE,\n 0x9AD4: 0x58BB,\n 0x9AD5: 0x58B8,\n 0x9AD6: 0x58AE,\n 0x9AD7: 0x58C5,\n 0x9AD8: 0x58D3,\n 0x9AD9: 0x58D1,\n 0x9ADA: 0x58D7,\n 0x9ADB: 0x58D9,\n 0x9ADC: 0x58D8,\n 0x9ADD: 0x58E5,\n 0x9ADE: 0x58DC,\n 0x9ADF: 0x58E4,\n 0x9AE0: 0x58DF,\n 0x9AE1: 0x58EF,\n 0x9AE2: 0x58FA,\n 0x9AE3: 0x58F9,\n 0x9AE4: 0x58FB,\n 0x9AE5: 0x58FC,\n 0x9AE6: 0x58FD,\n 0x9AE7: 0x5902,\n 0x9AE8: 0x590A,\n 0x9AE9: 0x5910,\n 0x9AEA: 0x591B,\n 0x9AEB: 0x68A6,\n 0x9AEC: 0x5925,\n 0x9AED: 0x592C,\n 0x9AEE: 0x592D,\n 0x9AEF: 0x5932,\n 0x9AF0: 0x5938,\n 0x9AF1: 0x593E,\n 0x9AF2: 0x7AD2,\n 0x9AF3: 0x5955,\n 0x9AF4: 0x5950,\n 0x9AF5: 0x594E,\n 0x9AF6: 0x595A,\n 0x9AF7: 0x5958,\n 0x9AF8: 0x5962,\n 0x9AF9: 0x5960,\n 0x9AFA: 0x5967,\n 0x9AFB: 0x596C,\n 0x9AFC: 0x5969,\n 0x9B40: 0x5978,\n 0x9B41: 0x5981,\n 0x9B42: 0x599D,\n 0x9B43: 0x4F5E,\n 0x9B44: 0x4FAB,\n 0x9B45: 0x59A3,\n 0x9B46: 0x59B2,\n 0x9B47: 0x59C6,\n 0x9B48: 0x59E8,\n 0x9B49: 0x59DC,\n 0x9B4A: 0x598D,\n 0x9B4B: 0x59D9,\n 0x9B4C: 0x59DA,\n 0x9B4D: 0x5A25,\n 0x9B4E: 0x5A1F,\n 0x9B4F: 0x5A11,\n 0x9B50: 0x5A1C,\n 0x9B51: 0x5A09,\n 0x9B52: 0x5A1A,\n 0x9B53: 0x5A40,\n 0x9B54: 0x5A6C,\n 0x9B55: 0x5A49,\n 0x9B56: 0x5A35,\n 0x9B57: 0x5A36,\n 0x9B58: 0x5A62,\n 0x9B59: 0x5A6A,\n 0x9B5A: 0x5A9A,\n 0x9B5B: 0x5ABC,\n 0x9B5C: 0x5ABE,\n 0x9B5D: 0x5ACB,\n 0x9B5E: 0x5AC2,\n 0x9B5F: 0x5ABD,\n 0x9B60: 0x5AE3,\n 0x9B61: 0x5AD7,\n 0x9B62: 0x5AE6,\n 0x9B63: 0x5AE9,\n 0x9B64: 0x5AD6,\n 0x9B65: 0x5AFA,\n 0x9B66: 0x5AFB,\n 0x9B67: 0x5B0C,\n 0x9B68: 0x5B0B,\n 0x9B69: 0x5B16,\n 0x9B6A: 0x5B32,\n 0x9B6B: 0x5AD0,\n 0x9B6C: 0x5B2A,\n 0x9B6D: 0x5B36,\n 0x9B6E: 0x5B3E,\n 0x9B6F: 0x5B43,\n 0x9B70: 0x5B45,\n 0x9B71: 0x5B40,\n 0x9B72: 0x5B51,\n 0x9B73: 0x5B55,\n 0x9B74: 0x5B5A,\n 0x9B75: 0x5B5B,\n 0x9B76: 0x5B65,\n 0x9B77: 0x5B69,\n 0x9B78: 0x5B70,\n 0x9B79: 0x5B73,\n 0x9B7A: 0x5B75,\n 0x9B7B: 0x5B78,\n 0x9B7C: 0x6588,\n 0x9B7D: 0x5B7A,\n 0x9B7E: 0x5B80,\n 0x9B80: 0x5B83,\n 0x9B81: 0x5BA6,\n 0x9B82: 0x5BB8,\n 0x9B83: 0x5BC3,\n 0x9B84: 0x5BC7,\n 0x9B85: 0x5BC9,\n 0x9B86: 0x5BD4,\n 0x9B87: 0x5BD0,\n 0x9B88: 0x5BE4,\n 0x9B89: 0x5BE6,\n 0x9B8A: 0x5BE2,\n 0x9B8B: 0x5BDE,\n 0x9B8C: 0x5BE5,\n 0x9B8D: 0x5BEB,\n 0x9B8E: 0x5BF0,\n 0x9B8F: 0x5BF6,\n 0x9B90: 0x5BF3,\n 0x9B91: 0x5C05,\n 0x9B92: 0x5C07,\n 0x9B93: 0x5C08,\n 0x9B94: 0x5C0D,\n 0x9B95: 0x5C13,\n 0x9B96: 0x5C20,\n 0x9B97: 0x5C22,\n 0x9B98: 0x5C28,\n 0x9B99: 0x5C38,\n 0x9B9A: 0x5C39,\n 0x9B9B: 0x5C41,\n 0x9B9C: 0x5C46,\n 0x9B9D: 0x5C4E,\n 0x9B9E: 0x5C53,\n 0x9B9F: 0x5C50,\n 0x9BA0: 0x5C4F,\n 0x9BA1: 0x5B71,\n 0x9BA2: 0x5C6C,\n 0x9BA3: 0x5C6E,\n 0x9BA4: 0x4E62,\n 0x9BA5: 0x5C76,\n 0x9BA6: 0x5C79,\n 0x9BA7: 0x5C8C,\n 0x9BA8: 0x5C91,\n 0x9BA9: 0x5C94,\n 0x9BAA: 0x599B,\n 0x9BAB: 0x5CAB,\n 0x9BAC: 0x5CBB,\n 0x9BAD: 0x5CB6,\n 0x9BAE: 0x5CBC,\n 0x9BAF: 0x5CB7,\n 0x9BB0: 0x5CC5,\n 0x9BB1: 0x5CBE,\n 0x9BB2: 0x5CC7,\n 0x9BB3: 0x5CD9,\n 0x9BB4: 0x5CE9,\n 0x9BB5: 0x5CFD,\n 0x9BB6: 0x5CFA,\n 0x9BB7: 0x5CED,\n 0x9BB8: 0x5D8C,\n 0x9BB9: 0x5CEA,\n 0x9BBA: 0x5D0B,\n 0x9BBB: 0x5D15,\n 0x9BBC: 0x5D17,\n 0x9BBD: 0x5D5C,\n 0x9BBE: 0x5D1F,\n 0x9BBF: 0x5D1B,\n 0x9BC0: 0x5D11,\n 0x9BC1: 0x5D14,\n 0x9BC2: 0x5D22,\n 0x9BC3: 0x5D1A,\n 0x9BC4: 0x5D19,\n 0x9BC5: 0x5D18,\n 0x9BC6: 0x5D4C,\n 0x9BC7: 0x5D52,\n 0x9BC8: 0x5D4E,\n 0x9BC9: 0x5D4B,\n 0x9BCA: 0x5D6C,\n 0x9BCB: 0x5D73,\n 0x9BCC: 0x5D76,\n 0x9BCD: 0x5D87,\n 0x9BCE: 0x5D84,\n 0x9BCF: 0x5D82,\n 0x9BD0: 0x5DA2,\n 0x9BD1: 0x5D9D,\n 0x9BD2: 0x5DAC,\n 0x9BD3: 0x5DAE,\n 0x9BD4: 0x5DBD,\n 0x9BD5: 0x5D90,\n 0x9BD6: 0x5DB7,\n 0x9BD7: 0x5DBC,\n 0x9BD8: 0x5DC9,\n 0x9BD9: 0x5DCD,\n 0x9BDA: 0x5DD3,\n 0x9BDB: 0x5DD2,\n 0x9BDC: 0x5DD6,\n 0x9BDD: 0x5DDB,\n 0x9BDE: 0x5DEB,\n 0x9BDF: 0x5DF2,\n 0x9BE0: 0x5DF5,\n 0x9BE1: 0x5E0B,\n 0x9BE2: 0x5E1A,\n 0x9BE3: 0x5E19,\n 0x9BE4: 0x5E11,\n 0x9BE5: 0x5E1B,\n 0x9BE6: 0x5E36,\n 0x9BE7: 0x5E37,\n 0x9BE8: 0x5E44,\n 0x9BE9: 0x5E43,\n 0x9BEA: 0x5E40,\n 0x9BEB: 0x5E4E,\n 0x9BEC: 0x5E57,\n 0x9BED: 0x5E54,\n 0x9BEE: 0x5E5F,\n 0x9BEF: 0x5E62,\n 0x9BF0: 0x5E64,\n 0x9BF1: 0x5E47,\n 0x9BF2: 0x5E75,\n 0x9BF3: 0x5E76,\n 0x9BF4: 0x5E7A,\n 0x9BF5: 0x9EBC,\n 0x9BF6: 0x5E7F,\n 0x9BF7: 0x5EA0,\n 0x9BF8: 0x5EC1,\n 0x9BF9: 0x5EC2,\n 0x9BFA: 0x5EC8,\n 0x9BFB: 0x5ED0,\n 0x9BFC: 0x5ECF,\n 0x9C40: 0x5ED6,\n 0x9C41: 0x5EE3,\n 0x9C42: 0x5EDD,\n 0x9C43: 0x5EDA,\n 0x9C44: 0x5EDB,\n 0x9C45: 0x5EE2,\n 0x9C46: 0x5EE1,\n 0x9C47: 0x5EE8,\n 0x9C48: 0x5EE9,\n 0x9C49: 0x5EEC,\n 0x9C4A: 0x5EF1,\n 0x9C4B: 0x5EF3,\n 0x9C4C: 0x5EF0,\n 0x9C4D: 0x5EF4,\n 0x9C4E: 0x5EF8,\n 0x9C4F: 0x5EFE,\n 0x9C50: 0x5F03,\n 0x9C51: 0x5F09,\n 0x9C52: 0x5F5D,\n 0x9C53: 0x5F5C,\n 0x9C54: 0x5F0B,\n 0x9C55: 0x5F11,\n 0x9C56: 0x5F16,\n 0x9C57: 0x5F29,\n 0x9C58: 0x5F2D,\n 0x9C59: 0x5F38,\n 0x9C5A: 0x5F41,\n 0x9C5B: 0x5F48,\n 0x9C5C: 0x5F4C,\n 0x9C5D: 0x5F4E,\n 0x9C5E: 0x5F2F,\n 0x9C5F: 0x5F51,\n 0x9C60: 0x5F56,\n 0x9C61: 0x5F57,\n 0x9C62: 0x5F59,\n 0x9C63: 0x5F61,\n 0x9C64: 0x5F6D,\n 0x9C65: 0x5F73,\n 0x9C66: 0x5F77,\n 0x9C67: 0x5F83,\n 0x9C68: 0x5F82,\n 0x9C69: 0x5F7F,\n 0x9C6A: 0x5F8A,\n 0x9C6B: 0x5F88,\n 0x9C6C: 0x5F91,\n 0x9C6D: 0x5F87,\n 0x9C6E: 0x5F9E,\n 0x9C6F: 0x5F99,\n 0x9C70: 0x5F98,\n 0x9C71: 0x5FA0,\n 0x9C72: 0x5FA8,\n 0x9C73: 0x5FAD,\n 0x9C74: 0x5FBC,\n 0x9C75: 0x5FD6,\n 0x9C76: 0x5FFB,\n 0x9C77: 0x5FE4,\n 0x9C78: 0x5FF8,\n 0x9C79: 0x5FF1,\n 0x9C7A: 0x5FDD,\n 0x9C7B: 0x60B3,\n 0x9C7C: 0x5FFF,\n 0x9C7D: 0x6021,\n 0x9C7E: 0x6060,\n 0x9C80: 0x6019,\n 0x9C81: 0x6010,\n 0x9C82: 0x6029,\n 0x9C83: 0x600E,\n 0x9C84: 0x6031,\n 0x9C85: 0x601B,\n 0x9C86: 0x6015,\n 0x9C87: 0x602B,\n 0x9C88: 0x6026,\n 0x9C89: 0x600F,\n 0x9C8A: 0x603A,\n 0x9C8B: 0x605A,\n 0x9C8C: 0x6041,\n 0x9C8D: 0x606A,\n 0x9C8E: 0x6077,\n 0x9C8F: 0x605F,\n 0x9C90: 0x604A,\n 0x9C91: 0x6046,\n 0x9C92: 0x604D,\n 0x9C93: 0x6063,\n 0x9C94: 0x6043,\n 0x9C95: 0x6064,\n 0x9C96: 0x6042,\n 0x9C97: 0x606C,\n 0x9C98: 0x606B,\n 0x9C99: 0x6059,\n 0x9C9A: 0x6081,\n 0x9C9B: 0x608D,\n 0x9C9C: 0x60E7,\n 0x9C9D: 0x6083,\n 0x9C9E: 0x609A,\n 0x9C9F: 0x6084,\n 0x9CA0: 0x609B,\n 0x9CA1: 0x6096,\n 0x9CA2: 0x6097,\n 0x9CA3: 0x6092,\n 0x9CA4: 0x60A7,\n 0x9CA5: 0x608B,\n 0x9CA6: 0x60E1,\n 0x9CA7: 0x60B8,\n 0x9CA8: 0x60E0,\n 0x9CA9: 0x60D3,\n 0x9CAA: 0x60B4,\n 0x9CAB: 0x5FF0,\n 0x9CAC: 0x60BD,\n 0x9CAD: 0x60C6,\n 0x9CAE: 0x60B5,\n 0x9CAF: 0x60D8,\n 0x9CB0: 0x614D,\n 0x9CB1: 0x6115,\n 0x9CB2: 0x6106,\n 0x9CB3: 0x60F6,\n 0x9CB4: 0x60F7,\n 0x9CB5: 0x6100,\n 0x9CB6: 0x60F4,\n 0x9CB7: 0x60FA,\n 0x9CB8: 0x6103,\n 0x9CB9: 0x6121,\n 0x9CBA: 0x60FB,\n 0x9CBB: 0x60F1,\n 0x9CBC: 0x610D,\n 0x9CBD: 0x610E,\n 0x9CBE: 0x6147,\n 0x9CBF: 0x613E,\n 0x9CC0: 0x6128,\n 0x9CC1: 0x6127,\n 0x9CC2: 0x614A,\n 0x9CC3: 0x613F,\n 0x9CC4: 0x613C,\n 0x9CC5: 0x612C,\n 0x9CC6: 0x6134,\n 0x9CC7: 0x613D,\n 0x9CC8: 0x6142,\n 0x9CC9: 0x6144,\n 0x9CCA: 0x6173,\n 0x9CCB: 0x6177,\n 0x9CCC: 0x6158,\n 0x9CCD: 0x6159,\n 0x9CCE: 0x615A,\n 0x9CCF: 0x616B,\n 0x9CD0: 0x6174,\n 0x9CD1: 0x616F,\n 0x9CD2: 0x6165,\n 0x9CD3: 0x6171,\n 0x9CD4: 0x615F,\n 0x9CD5: 0x615D,\n 0x9CD6: 0x6153,\n 0x9CD7: 0x6175,\n 0x9CD8: 0x6199,\n 0x9CD9: 0x6196,\n 0x9CDA: 0x6187,\n 0x9CDB: 0x61AC,\n 0x9CDC: 0x6194,\n 0x9CDD: 0x619A,\n 0x9CDE: 0x618A,\n 0x9CDF: 0x6191,\n 0x9CE0: 0x61AB,\n 0x9CE1: 0x61AE,\n 0x9CE2: 0x61CC,\n 0x9CE3: 0x61CA,\n 0x9CE4: 0x61C9,\n 0x9CE5: 0x61F7,\n 0x9CE6: 0x61C8,\n 0x9CE7: 0x61C3,\n 0x9CE8: 0x61C6,\n 0x9CE9: 0x61BA,\n 0x9CEA: 0x61CB,\n 0x9CEB: 0x7F79,\n 0x9CEC: 0x61CD,\n 0x9CED: 0x61E6,\n 0x9CEE: 0x61E3,\n 0x9CEF: 0x61F6,\n 0x9CF0: 0x61FA,\n 0x9CF1: 0x61F4,\n 0x9CF2: 0x61FF,\n 0x9CF3: 0x61FD,\n 0x9CF4: 0x61FC,\n 0x9CF5: 0x61FE,\n 0x9CF6: 0x6200,\n 0x9CF7: 0x6208,\n 0x9CF8: 0x6209,\n 0x9CF9: 0x620D,\n 0x9CFA: 0x620C,\n 0x9CFB: 0x6214,\n 0x9CFC: 0x621B,\n 0x9D40: 0x621E,\n 0x9D41: 0x6221,\n 0x9D42: 0x622A,\n 0x9D43: 0x622E,\n 0x9D44: 0x6230,\n 0x9D45: 0x6232,\n 0x9D46: 0x6233,\n 0x9D47: 0x6241,\n 0x9D48: 0x624E,\n 0x9D49: 0x625E,\n 0x9D4A: 0x6263,\n 0x9D4B: 0x625B,\n 0x9D4C: 0x6260,\n 0x9D4D: 0x6268,\n 0x9D4E: 0x627C,\n 0x9D4F: 0x6282,\n 0x9D50: 0x6289,\n 0x9D51: 0x627E,\n 0x9D52: 0x6292,\n 0x9D53: 0x6293,\n 0x9D54: 0x6296,\n 0x9D55: 0x62D4,\n 0x9D56: 0x6283,\n 0x9D57: 0x6294,\n 0x9D58: 0x62D7,\n 0x9D59: 0x62D1,\n 0x9D5A: 0x62BB,\n 0x9D5B: 0x62CF,\n 0x9D5C: 0x62FF,\n 0x9D5D: 0x62C6,\n 0x9D5E: 0x64D4,\n 0x9D5F: 0x62C8,\n 0x9D60: 0x62DC,\n 0x9D61: 0x62CC,\n 0x9D62: 0x62CA,\n 0x9D63: 0x62C2,\n 0x9D64: 0x62C7,\n 0x9D65: 0x629B,\n 0x9D66: 0x62C9,\n 0x9D67: 0x630C,\n 0x9D68: 0x62EE,\n 0x9D69: 0x62F1,\n 0x9D6A: 0x6327,\n 0x9D6B: 0x6302,\n 0x9D6C: 0x6308,\n 0x9D6D: 0x62EF,\n 0x9D6E: 0x62F5,\n 0x9D6F: 0x6350,\n 0x9D70: 0x633E,\n 0x9D71: 0x634D,\n 0x9D72: 0x641C,\n 0x9D73: 0x634F,\n 0x9D74: 0x6396,\n 0x9D75: 0x638E,\n 0x9D76: 0x6380,\n 0x9D77: 0x63AB,\n 0x9D78: 0x6376,\n 0x9D79: 0x63A3,\n 0x9D7A: 0x638F,\n 0x9D7B: 0x6389,\n 0x9D7C: 0x639F,\n 0x9D7D: 0x63B5,\n 0x9D7E: 0x636B,\n 0x9D80: 0x6369,\n 0x9D81: 0x63BE,\n 0x9D82: 0x63E9,\n 0x9D83: 0x63C0,\n 0x9D84: 0x63C6,\n 0x9D85: 0x63E3,\n 0x9D86: 0x63C9,\n 0x9D87: 0x63D2,\n 0x9D88: 0x63F6,\n 0x9D89: 0x63C4,\n 0x9D8A: 0x6416,\n 0x9D8B: 0x6434,\n 0x9D8C: 0x6406,\n 0x9D8D: 0x6413,\n 0x9D8E: 0x6426,\n 0x9D8F: 0x6436,\n 0x9D90: 0x651D,\n 0x9D91: 0x6417,\n 0x9D92: 0x6428,\n 0x9D93: 0x640F,\n 0x9D94: 0x6467,\n 0x9D95: 0x646F,\n 0x9D96: 0x6476,\n 0x9D97: 0x644E,\n 0x9D98: 0x652A,\n 0x9D99: 0x6495,\n 0x9D9A: 0x6493,\n 0x9D9B: 0x64A5,\n 0x9D9C: 0x64A9,\n 0x9D9D: 0x6488,\n 0x9D9E: 0x64BC,\n 0x9D9F: 0x64DA,\n 0x9DA0: 0x64D2,\n 0x9DA1: 0x64C5,\n 0x9DA2: 0x64C7,\n 0x9DA3: 0x64BB,\n 0x9DA4: 0x64D8,\n 0x9DA5: 0x64C2,\n 0x9DA6: 0x64F1,\n 0x9DA7: 0x64E7,\n 0x9DA8: 0x8209,\n 0x9DA9: 0x64E0,\n 0x9DAA: 0x64E1,\n 0x9DAB: 0x62AC,\n 0x9DAC: 0x64E3,\n 0x9DAD: 0x64EF,\n 0x9DAE: 0x652C,\n 0x9DAF: 0x64F6,\n 0x9DB0: 0x64F4,\n 0x9DB1: 0x64F2,\n 0x9DB2: 0x64FA,\n 0x9DB3: 0x6500,\n 0x9DB4: 0x64FD,\n 0x9DB5: 0x6518,\n 0x9DB6: 0x651C,\n 0x9DB7: 0x6505,\n 0x9DB8: 0x6524,\n 0x9DB9: 0x6523,\n 0x9DBA: 0x652B,\n 0x9DBB: 0x6534,\n 0x9DBC: 0x6535,\n 0x9DBD: 0x6537,\n 0x9DBE: 0x6536,\n 0x9DBF: 0x6538,\n 0x9DC0: 0x754B,\n 0x9DC1: 0x6548,\n 0x9DC2: 0x6556,\n 0x9DC3: 0x6555,\n 0x9DC4: 0x654D,\n 0x9DC5: 0x6558,\n 0x9DC6: 0x655E,\n 0x9DC7: 0x655D,\n 0x9DC8: 0x6572,\n 0x9DC9: 0x6578,\n 0x9DCA: 0x6582,\n 0x9DCB: 0x6583,\n 0x9DCC: 0x8B8A,\n 0x9DCD: 0x659B,\n 0x9DCE: 0x659F,\n 0x9DCF: 0x65AB,\n 0x9DD0: 0x65B7,\n 0x9DD1: 0x65C3,\n 0x9DD2: 0x65C6,\n 0x9DD3: 0x65C1,\n 0x9DD4: 0x65C4,\n 0x9DD5: 0x65CC,\n 0x9DD6: 0x65D2,\n 0x9DD7: 0x65DB,\n 0x9DD8: 0x65D9,\n 0x9DD9: 0x65E0,\n 0x9DDA: 0x65E1,\n 0x9DDB: 0x65F1,\n 0x9DDC: 0x6772,\n 0x9DDD: 0x660A,\n 0x9DDE: 0x6603,\n 0x9DDF: 0x65FB,\n 0x9DE0: 0x6773,\n 0x9DE1: 0x6635,\n 0x9DE2: 0x6636,\n 0x9DE3: 0x6634,\n 0x9DE4: 0x661C,\n 0x9DE5: 0x664F,\n 0x9DE6: 0x6644,\n 0x9DE7: 0x6649,\n 0x9DE8: 0x6641,\n 0x9DE9: 0x665E,\n 0x9DEA: 0x665D,\n 0x9DEB: 0x6664,\n 0x9DEC: 0x6667,\n 0x9DED: 0x6668,\n 0x9DEE: 0x665F,\n 0x9DEF: 0x6662,\n 0x9DF0: 0x6670,\n 0x9DF1: 0x6683,\n 0x9DF2: 0x6688,\n 0x9DF3: 0x668E,\n 0x9DF4: 0x6689,\n 0x9DF5: 0x6684,\n 0x9DF6: 0x6698,\n 0x9DF7: 0x669D,\n 0x9DF8: 0x66C1,\n 0x9DF9: 0x66B9,\n 0x9DFA: 0x66C9,\n 0x9DFB: 0x66BE,\n 0x9DFC: 0x66BC,\n 0x9E40: 0x66C4,\n 0x9E41: 0x66B8,\n 0x9E42: 0x66D6,\n 0x9E43: 0x66DA,\n 0x9E44: 0x66E0,\n 0x9E45: 0x663F,\n 0x9E46: 0x66E6,\n 0x9E47: 0x66E9,\n 0x9E48: 0x66F0,\n 0x9E49: 0x66F5,\n 0x9E4A: 0x66F7,\n 0x9E4B: 0x670F,\n 0x9E4C: 0x6716,\n 0x9E4D: 0x671E,\n 0x9E4E: 0x6726,\n 0x9E4F: 0x6727,\n 0x9E50: 0x9738,\n 0x9E51: 0x672E,\n 0x9E52: 0x673F,\n 0x9E53: 0x6736,\n 0x9E54: 0x6741,\n 0x9E55: 0x6738,\n 0x9E56: 0x6737,\n 0x9E57: 0x6746,\n 0x9E58: 0x675E,\n 0x9E59: 0x6760,\n 0x9E5A: 0x6759,\n 0x9E5B: 0x6763,\n 0x9E5C: 0x6764,\n 0x9E5D: 0x6789,\n 0x9E5E: 0x6770,\n 0x9E5F: 0x67A9,\n 0x9E60: 0x677C,\n 0x9E61: 0x676A,\n 0x9E62: 0x678C,\n 0x9E63: 0x678B,\n 0x9E64: 0x67A6,\n 0x9E65: 0x67A1,\n 0x9E66: 0x6785,\n 0x9E67: 0x67B7,\n 0x9E68: 0x67EF,\n 0x9E69: 0x67B4,\n 0x9E6A: 0x67EC,\n 0x9E6B: 0x67B3,\n 0x9E6C: 0x67E9,\n 0x9E6D: 0x67B8,\n 0x9E6E: 0x67E4,\n 0x9E6F: 0x67DE,\n 0x9E70: 0x67DD,\n 0x9E71: 0x67E2,\n 0x9E72: 0x67EE,\n 0x9E73: 0x67B9,\n 0x9E74: 0x67CE,\n 0x9E75: 0x67C6,\n 0x9E76: 0x67E7,\n 0x9E77: 0x6A9C,\n 0x9E78: 0x681E,\n 0x9E79: 0x6846,\n 0x9E7A: 0x6829,\n 0x9E7B: 0x6840,\n 0x9E7C: 0x684D,\n 0x9E7D: 0x6832,\n 0x9E7E: 0x684E,\n 0x9E80: 0x68B3,\n 0x9E81: 0x682B,\n 0x9E82: 0x6859,\n 0x9E83: 0x6863,\n 0x9E84: 0x6877,\n 0x9E85: 0x687F,\n 0x9E86: 0x689F,\n 0x9E87: 0x688F,\n 0x9E88: 0x68AD,\n 0x9E89: 0x6894,\n 0x9E8A: 0x689D,\n 0x9E8B: 0x689B,\n 0x9E8C: 0x6883,\n 0x9E8D: 0x6AAE,\n 0x9E8E: 0x68B9,\n 0x9E8F: 0x6874,\n 0x9E90: 0x68B5,\n 0x9E91: 0x68A0,\n 0x9E92: 0x68BA,\n 0x9E93: 0x690F,\n 0x9E94: 0x688D,\n 0x9E95: 0x687E,\n 0x9E96: 0x6901,\n 0x9E97: 0x68CA,\n 0x9E98: 0x6908,\n 0x9E99: 0x68D8,\n 0x9E9A: 0x6922,\n 0x9E9B: 0x6926,\n 0x9E9C: 0x68E1,\n 0x9E9D: 0x690C,\n 0x9E9E: 0x68CD,\n 0x9E9F: 0x68D4,\n 0x9EA0: 0x68E7,\n 0x9EA1: 0x68D5,\n 0x9EA2: 0x6936,\n 0x9EA3: 0x6912,\n 0x9EA4: 0x6904,\n 0x9EA5: 0x68D7,\n 0x9EA6: 0x68E3,\n 0x9EA7: 0x6925,\n 0x9EA8: 0x68F9,\n 0x9EA9: 0x68E0,\n 0x9EAA: 0x68EF,\n 0x9EAB: 0x6928,\n 0x9EAC: 0x692A,\n 0x9EAD: 0x691A,\n 0x9EAE: 0x6923,\n 0x9EAF: 0x6921,\n 0x9EB0: 0x68C6,\n 0x9EB1: 0x6979,\n 0x9EB2: 0x6977,\n 0x9EB3: 0x695C,\n 0x9EB4: 0x6978,\n 0x9EB5: 0x696B,\n 0x9EB6: 0x6954,\n 0x9EB7: 0x697E,\n 0x9EB8: 0x696E,\n 0x9EB9: 0x6939,\n 0x9EBA: 0x6974,\n 0x9EBB: 0x693D,\n 0x9EBC: 0x6959,\n 0x9EBD: 0x6930,\n 0x9EBE: 0x6961,\n 0x9EBF: 0x695E,\n 0x9EC0: 0x695D,\n 0x9EC1: 0x6981,\n 0x9EC2: 0x696A,\n 0x9EC3: 0x69B2,\n 0x9EC4: 0x69AE,\n 0x9EC5: 0x69D0,\n 0x9EC6: 0x69BF,\n 0x9EC7: 0x69C1,\n 0x9EC8: 0x69D3,\n 0x9EC9: 0x69BE,\n 0x9ECA: 0x69CE,\n 0x9ECB: 0x5BE8,\n 0x9ECC: 0x69CA,\n 0x9ECD: 0x69DD,\n 0x9ECE: 0x69BB,\n 0x9ECF: 0x69C3,\n 0x9ED0: 0x69A7,\n 0x9ED1: 0x6A2E,\n 0x9ED2: 0x6991,\n 0x9ED3: 0x69A0,\n 0x9ED4: 0x699C,\n 0x9ED5: 0x6995,\n 0x9ED6: 0x69B4,\n 0x9ED7: 0x69DE,\n 0x9ED8: 0x69E8,\n 0x9ED9: 0x6A02,\n 0x9EDA: 0x6A1B,\n 0x9EDB: 0x69FF,\n 0x9EDC: 0x6B0A,\n 0x9EDD: 0x69F9,\n 0x9EDE: 0x69F2,\n 0x9EDF: 0x69E7,\n 0x9EE0: 0x6A05,\n 0x9EE1: 0x69B1,\n 0x9EE2: 0x6A1E,\n 0x9EE3: 0x69ED,\n 0x9EE4: 0x6A14,\n 0x9EE5: 0x69EB,\n 0x9EE6: 0x6A0A,\n 0x9EE7: 0x6A12,\n 0x9EE8: 0x6AC1,\n 0x9EE9: 0x6A23,\n 0x9EEA: 0x6A13,\n 0x9EEB: 0x6A44,\n 0x9EEC: 0x6A0C,\n 0x9EED: 0x6A72,\n 0x9EEE: 0x6A36,\n 0x9EEF: 0x6A78,\n 0x9EF0: 0x6A47,\n 0x9EF1: 0x6A62,\n 0x9EF2: 0x6A59,\n 0x9EF3: 0x6A66,\n 0x9EF4: 0x6A48,\n 0x9EF5: 0x6A38,\n 0x9EF6: 0x6A22,\n 0x9EF7: 0x6A90,\n 0x9EF8: 0x6A8D,\n 0x9EF9: 0x6AA0,\n 0x9EFA: 0x6A84,\n 0x9EFB: 0x6AA2,\n 0x9EFC: 0x6AA3,\n 0x9F40: 0x6A97,\n 0x9F41: 0x8617,\n 0x9F42: 0x6ABB,\n 0x9F43: 0x6AC3,\n 0x9F44: 0x6AC2,\n 0x9F45: 0x6AB8,\n 0x9F46: 0x6AB3,\n 0x9F47: 0x6AAC,\n 0x9F48: 0x6ADE,\n 0x9F49: 0x6AD1,\n 0x9F4A: 0x6ADF,\n 0x9F4B: 0x6AAA,\n 0x9F4C: 0x6ADA,\n 0x9F4D: 0x6AEA,\n 0x9F4E: 0x6AFB,\n 0x9F4F: 0x6B05,\n 0x9F50: 0x8616,\n 0x9F51: 0x6AFA,\n 0x9F52: 0x6B12,\n 0x9F53: 0x6B16,\n 0x9F54: 0x9B31,\n 0x9F55: 0x6B1F,\n 0x9F56: 0x6B38,\n 0x9F57: 0x6B37,\n 0x9F58: 0x76DC,\n 0x9F59: 0x6B39,\n 0x9F5A: 0x98EE,\n 0x9F5B: 0x6B47,\n 0x9F5C: 0x6B43,\n 0x9F5D: 0x6B49,\n 0x9F5E: 0x6B50,\n 0x9F5F: 0x6B59,\n 0x9F60: 0x6B54,\n 0x9F61: 0x6B5B,\n 0x9F62: 0x6B5F,\n 0x9F63: 0x6B61,\n 0x9F64: 0x6B78,\n 0x9F65: 0x6B79,\n 0x9F66: 0x6B7F,\n 0x9F67: 0x6B80,\n 0x9F68: 0x6B84,\n 0x9F69: 0x6B83,\n 0x9F6A: 0x6B8D,\n 0x9F6B: 0x6B98,\n 0x9F6C: 0x6B95,\n 0x9F6D: 0x6B9E,\n 0x9F6E: 0x6BA4,\n 0x9F6F: 0x6BAA,\n 0x9F70: 0x6BAB,\n 0x9F71: 0x6BAF,\n 0x9F72: 0x6BB2,\n 0x9F73: 0x6BB1,\n 0x9F74: 0x6BB3,\n 0x9F75: 0x6BB7,\n 0x9F76: 0x6BBC,\n 0x9F77: 0x6BC6,\n 0x9F78: 0x6BCB,\n 0x9F79: 0x6BD3,\n 0x9F7A: 0x6BDF,\n 0x9F7B: 0x6BEC,\n 0x9F7C: 0x6BEB,\n 0x9F7D: 0x6BF3,\n 0x9F7E: 0x6BEF,\n 0x9F80: 0x9EBE,\n 0x9F81: 0x6C08,\n 0x9F82: 0x6C13,\n 0x9F83: 0x6C14,\n 0x9F84: 0x6C1B,\n 0x9F85: 0x6C24,\n 0x9F86: 0x6C23,\n 0x9F87: 0x6C5E,\n 0x9F88: 0x6C55,\n 0x9F89: 0x6C62,\n 0x9F8A: 0x6C6A,\n 0x9F8B: 0x6C82,\n 0x9F8C: 0x6C8D,\n 0x9F8D: 0x6C9A,\n 0x9F8E: 0x6C81,\n 0x9F8F: 0x6C9B,\n 0x9F90: 0x6C7E,\n 0x9F91: 0x6C68,\n 0x9F92: 0x6C73,\n 0x9F93: 0x6C92,\n 0x9F94: 0x6C90,\n 0x9F95: 0x6CC4,\n 0x9F96: 0x6CF1,\n 0x9F97: 0x6CD3,\n 0x9F98: 0x6CBD,\n 0x9F99: 0x6CD7,\n 0x9F9A: 0x6CC5,\n 0x9F9B: 0x6CDD,\n 0x9F9C: 0x6CAE,\n 0x9F9D: 0x6CB1,\n 0x9F9E: 0x6CBE,\n 0x9F9F: 0x6CBA,\n 0x9FA0: 0x6CDB,\n 0x9FA1: 0x6CEF,\n 0x9FA2: 0x6CD9,\n 0x9FA3: 0x6CEA,\n 0x9FA4: 0x6D1F,\n 0x9FA5: 0x884D,\n 0x9FA6: 0x6D36,\n 0x9FA7: 0x6D2B,\n 0x9FA8: 0x6D3D,\n 0x9FA9: 0x6D38,\n 0x9FAA: 0x6D19,\n 0x9FAB: 0x6D35,\n 0x9FAC: 0x6D33,\n 0x9FAD: 0x6D12,\n 0x9FAE: 0x6D0C,\n 0x9FAF: 0x6D63,\n 0x9FB0: 0x6D93,\n 0x9FB1: 0x6D64,\n 0x9FB2: 0x6D5A,\n 0x9FB3: 0x6D79,\n 0x9FB4: 0x6D59,\n 0x9FB5: 0x6D8E,\n 0x9FB6: 0x6D95,\n 0x9FB7: 0x6FE4,\n 0x9FB8: 0x6D85,\n 0x9FB9: 0x6DF9,\n 0x9FBA: 0x6E15,\n 0x9FBB: 0x6E0A,\n 0x9FBC: 0x6DB5,\n 0x9FBD: 0x6DC7,\n 0x9FBE: 0x6DE6,\n 0x9FBF: 0x6DB8,\n 0x9FC0: 0x6DC6,\n 0x9FC1: 0x6DEC,\n 0x9FC2: 0x6DDE,\n 0x9FC3: 0x6DCC,\n 0x9FC4: 0x6DE8,\n 0x9FC5: 0x6DD2,\n 0x9FC6: 0x6DC5,\n 0x9FC7: 0x6DFA,\n 0x9FC8: 0x6DD9,\n 0x9FC9: 0x6DE4,\n 0x9FCA: 0x6DD5,\n 0x9FCB: 0x6DEA,\n 0x9FCC: 0x6DEE,\n 0x9FCD: 0x6E2D,\n 0x9FCE: 0x6E6E,\n 0x9FCF: 0x6E2E,\n 0x9FD0: 0x6E19,\n 0x9FD1: 0x6E72,\n 0x9FD2: 0x6E5F,\n 0x9FD3: 0x6E3E,\n 0x9FD4: 0x6E23,\n 0x9FD5: 0x6E6B,\n 0x9FD6: 0x6E2B,\n 0x9FD7: 0x6E76,\n 0x9FD8: 0x6E4D,\n 0x9FD9: 0x6E1F,\n 0x9FDA: 0x6E43,\n 0x9FDB: 0x6E3A,\n 0x9FDC: 0x6E4E,\n 0x9FDD: 0x6E24,\n 0x9FDE: 0x6EFF,\n 0x9FDF: 0x6E1D,\n 0x9FE0: 0x6E38,\n 0x9FE1: 0x6E82,\n 0x9FE2: 0x6EAA,\n 0x9FE3: 0x6E98,\n 0x9FE4: 0x6EC9,\n 0x9FE5: 0x6EB7,\n 0x9FE6: 0x6ED3,\n 0x9FE7: 0x6EBD,\n 0x9FE8: 0x6EAF,\n 0x9FE9: 0x6EC4,\n 0x9FEA: 0x6EB2,\n 0x9FEB: 0x6ED4,\n 0x9FEC: 0x6ED5,\n 0x9FED: 0x6E8F,\n 0x9FEE: 0x6EA5,\n 0x9FEF: 0x6EC2,\n 0x9FF0: 0x6E9F,\n 0x9FF1: 0x6F41,\n 0x9FF2: 0x6F11,\n 0x9FF3: 0x704C,\n 0x9FF4: 0x6EEC,\n 0x9FF5: 0x6EF8,\n 0x9FF6: 0x6EFE,\n 0x9FF7: 0x6F3F,\n 0x9FF8: 0x6EF2,\n 0x9FF9: 0x6F31,\n 0x9FFA: 0x6EEF,\n 0x9FFB: 0x6F32,\n 0x9FFC: 0x6ECC,\n 0xA1: 0xFF61,\n 0xA2: 0xFF62,\n 0xA3: 0xFF63,\n 0xA4: 0xFF64,\n 0xA5: 0xFF65,\n 0xA6: 0xFF66,\n 0xA7: 0xFF67,\n 0xA8: 0xFF68,\n 0xA9: 0xFF69,\n 0xAA: 0xFF6A,\n 0xAB: 0xFF6B,\n 0xAC: 0xFF6C,\n 0xAD: 0xFF6D,\n 0xAE: 0xFF6E,\n 0xAF: 0xFF6F,\n 0xB0: 0xFF70,\n 0xB1: 0xFF71,\n 0xB2: 0xFF72,\n 0xB3: 0xFF73,\n 0xB4: 0xFF74,\n 0xB5: 0xFF75,\n 0xB6: 0xFF76,\n 0xB7: 0xFF77,\n 0xB8: 0xFF78,\n 0xB9: 0xFF79,\n 0xBA: 0xFF7A,\n 0xBB: 0xFF7B,\n 0xBC: 0xFF7C,\n 0xBD: 0xFF7D,\n 0xBE: 0xFF7E,\n 0xBF: 0xFF7F,\n 0xC0: 0xFF80,\n 0xC1: 0xFF81,\n 0xC2: 0xFF82,\n 0xC3: 0xFF83,\n 0xC4: 0xFF84,\n 0xC5: 0xFF85,\n 0xC6: 0xFF86,\n 0xC7: 0xFF87,\n 0xC8: 0xFF88,\n 0xC9: 0xFF89,\n 0xCA: 0xFF8A,\n 0xCB: 0xFF8B,\n 0xCC: 0xFF8C,\n 0xCD: 0xFF8D,\n 0xCE: 0xFF8E,\n 0xCF: 0xFF8F,\n 0xD0: 0xFF90,\n 0xD1: 0xFF91,\n 0xD2: 0xFF92,\n 0xD3: 0xFF93,\n 0xD4: 0xFF94,\n 0xD5: 0xFF95,\n 0xD6: 0xFF96,\n 0xD7: 0xFF97,\n 0xD8: 0xFF98,\n 0xD9: 0xFF99,\n 0xDA: 0xFF9A,\n 0xDB: 0xFF9B,\n 0xDC: 0xFF9C,\n 0xDD: 0xFF9D,\n 0xDE: 0xFF9E,\n 0xDF: 0xFF9F,\n 0xE040: 0x6F3E,\n 0xE041: 0x6F13,\n 0xE042: 0x6EF7,\n 0xE043: 0x6F86,\n 0xE044: 0x6F7A,\n 0xE045: 0x6F78,\n 0xE046: 0x6F81,\n 0xE047: 0x6F80,\n 0xE048: 0x6F6F,\n 0xE049: 0x6F5B,\n 0xE04A: 0x6FF3,\n 0xE04B: 0x6F6D,\n 0xE04C: 0x6F82,\n 0xE04D: 0x6F7C,\n 0xE04E: 0x6F58,\n 0xE04F: 0x6F8E,\n 0xE050: 0x6F91,\n 0xE051: 0x6FC2,\n 0xE052: 0x6F66,\n 0xE053: 0x6FB3,\n 0xE054: 0x6FA3,\n 0xE055: 0x6FA1,\n 0xE056: 0x6FA4,\n 0xE057: 0x6FB9,\n 0xE058: 0x6FC6,\n 0xE059: 0x6FAA,\n 0xE05A: 0x6FDF,\n 0xE05B: 0x6FD5,\n 0xE05C: 0x6FEC,\n 0xE05D: 0x6FD4,\n 0xE05E: 0x6FD8,\n 0xE05F: 0x6FF1,\n 0xE060: 0x6FEE,\n 0xE061: 0x6FDB,\n 0xE062: 0x7009,\n 0xE063: 0x700B,\n 0xE064: 0x6FFA,\n 0xE065: 0x7011,\n 0xE066: 0x7001,\n 0xE067: 0x700F,\n 0xE068: 0x6FFE,\n 0xE069: 0x701B,\n 0xE06A: 0x701A,\n 0xE06B: 0x6F74,\n 0xE06C: 0x701D,\n 0xE06D: 0x7018,\n 0xE06E: 0x701F,\n 0xE06F: 0x7030,\n 0xE070: 0x703E,\n 0xE071: 0x7032,\n 0xE072: 0x7051,\n 0xE073: 0x7063,\n 0xE074: 0x7099,\n 0xE075: 0x7092,\n 0xE076: 0x70AF,\n 0xE077: 0x70F1,\n 0xE078: 0x70AC,\n 0xE079: 0x70B8,\n 0xE07A: 0x70B3,\n 0xE07B: 0x70AE,\n 0xE07C: 0x70DF,\n 0xE07D: 0x70CB,\n 0xE07E: 0x70DD,\n 0xE080: 0x70D9,\n 0xE081: 0x7109,\n 0xE082: 0x70FD,\n 0xE083: 0x711C,\n 0xE084: 0x7119,\n 0xE085: 0x7165,\n 0xE086: 0x7155,\n 0xE087: 0x7188,\n 0xE088: 0x7166,\n 0xE089: 0x7162,\n 0xE08A: 0x714C,\n 0xE08B: 0x7156,\n 0xE08C: 0x716C,\n 0xE08D: 0x718F,\n 0xE08E: 0x71FB,\n 0xE08F: 0x7184,\n 0xE090: 0x7195,\n 0xE091: 0x71A8,\n 0xE092: 0x71AC,\n 0xE093: 0x71D7,\n 0xE094: 0x71B9,\n 0xE095: 0x71BE,\n 0xE096: 0x71D2,\n 0xE097: 0x71C9,\n 0xE098: 0x71D4,\n 0xE099: 0x71CE,\n 0xE09A: 0x71E0,\n 0xE09B: 0x71EC,\n 0xE09C: 0x71E7,\n 0xE09D: 0x71F5,\n 0xE09E: 0x71FC,\n 0xE09F: 0x71F9,\n 0xE0A0: 0x71FF,\n 0xE0A1: 0x720D,\n 0xE0A2: 0x7210,\n 0xE0A3: 0x721B,\n 0xE0A4: 0x7228,\n 0xE0A5: 0x722D,\n 0xE0A6: 0x722C,\n 0xE0A7: 0x7230,\n 0xE0A8: 0x7232,\n 0xE0A9: 0x723B,\n 0xE0AA: 0x723C,\n 0xE0AB: 0x723F,\n 0xE0AC: 0x7240,\n 0xE0AD: 0x7246,\n 0xE0AE: 0x724B,\n 0xE0AF: 0x7258,\n 0xE0B0: 0x7274,\n 0xE0B1: 0x727E,\n 0xE0B2: 0x7282,\n 0xE0B3: 0x7281,\n 0xE0B4: 0x7287,\n 0xE0B5: 0x7292,\n 0xE0B6: 0x7296,\n 0xE0B7: 0x72A2,\n 0xE0B8: 0x72A7,\n 0xE0B9: 0x72B9,\n 0xE0BA: 0x72B2,\n 0xE0BB: 0x72C3,\n 0xE0BC: 0x72C6,\n 0xE0BD: 0x72C4,\n 0xE0BE: 0x72CE,\n 0xE0BF: 0x72D2,\n 0xE0C0: 0x72E2,\n 0xE0C1: 0x72E0,\n 0xE0C2: 0x72E1,\n 0xE0C3: 0x72F9,\n 0xE0C4: 0x72F7,\n 0xE0C5: 0x500F,\n 0xE0C6: 0x7317,\n 0xE0C7: 0x730A,\n 0xE0C8: 0x731C,\n 0xE0C9: 0x7316,\n 0xE0CA: 0x731D,\n 0xE0CB: 0x7334,\n 0xE0CC: 0x732F,\n 0xE0CD: 0x7329,\n 0xE0CE: 0x7325,\n 0xE0CF: 0x733E,\n 0xE0D0: 0x734E,\n 0xE0D1: 0x734F,\n 0xE0D2: 0x9ED8,\n 0xE0D3: 0x7357,\n 0xE0D4: 0x736A,\n 0xE0D5: 0x7368,\n 0xE0D6: 0x7370,\n 0xE0D7: 0x7378,\n 0xE0D8: 0x7375,\n 0xE0D9: 0x737B,\n 0xE0DA: 0x737A,\n 0xE0DB: 0x73C8,\n 0xE0DC: 0x73B3,\n 0xE0DD: 0x73CE,\n 0xE0DE: 0x73BB,\n 0xE0DF: 0x73C0,\n 0xE0E0: 0x73E5,\n 0xE0E1: 0x73EE,\n 0xE0E2: 0x73DE,\n 0xE0E3: 0x74A2,\n 0xE0E4: 0x7405,\n 0xE0E5: 0x746F,\n 0xE0E6: 0x7425,\n 0xE0E7: 0x73F8,\n 0xE0E8: 0x7432,\n 0xE0E9: 0x743A,\n 0xE0EA: 0x7455,\n 0xE0EB: 0x743F,\n 0xE0EC: 0x745F,\n 0xE0ED: 0x7459,\n 0xE0EE: 0x7441,\n 0xE0EF: 0x745C,\n 0xE0F0: 0x7469,\n 0xE0F1: 0x7470,\n 0xE0F2: 0x7463,\n 0xE0F3: 0x746A,\n 0xE0F4: 0x7476,\n 0xE0F5: 0x747E,\n 0xE0F6: 0x748B,\n 0xE0F7: 0x749E,\n 0xE0F8: 0x74A7,\n 0xE0F9: 0x74CA,\n 0xE0FA: 0x74CF,\n 0xE0FB: 0x74D4,\n 0xE0FC: 0x73F1,\n 0xE140: 0x74E0,\n 0xE141: 0x74E3,\n 0xE142: 0x74E7,\n 0xE143: 0x74E9,\n 0xE144: 0x74EE,\n 0xE145: 0x74F2,\n 0xE146: 0x74F0,\n 0xE147: 0x74F1,\n 0xE148: 0x74F8,\n 0xE149: 0x74F7,\n 0xE14A: 0x7504,\n 0xE14B: 0x7503,\n 0xE14C: 0x7505,\n 0xE14D: 0x750C,\n 0xE14E: 0x750E,\n 0xE14F: 0x750D,\n 0xE150: 0x7515,\n 0xE151: 0x7513,\n 0xE152: 0x751E,\n 0xE153: 0x7526,\n 0xE154: 0x752C,\n 0xE155: 0x753C,\n 0xE156: 0x7544,\n 0xE157: 0x754D,\n 0xE158: 0x754A,\n 0xE159: 0x7549,\n 0xE15A: 0x755B,\n 0xE15B: 0x7546,\n 0xE15C: 0x755A,\n 0xE15D: 0x7569,\n 0xE15E: 0x7564,\n 0xE15F: 0x7567,\n 0xE160: 0x756B,\n 0xE161: 0x756D,\n 0xE162: 0x7578,\n 0xE163: 0x7576,\n 0xE164: 0x7586,\n 0xE165: 0x7587,\n 0xE166: 0x7574,\n 0xE167: 0x758A,\n 0xE168: 0x7589,\n 0xE169: 0x7582,\n 0xE16A: 0x7594,\n 0xE16B: 0x759A,\n 0xE16C: 0x759D,\n 0xE16D: 0x75A5,\n 0xE16E: 0x75A3,\n 0xE16F: 0x75C2,\n 0xE170: 0x75B3,\n 0xE171: 0x75C3,\n 0xE172: 0x75B5,\n 0xE173: 0x75BD,\n 0xE174: 0x75B8,\n 0xE175: 0x75BC,\n 0xE176: 0x75B1,\n 0xE177: 0x75CD,\n 0xE178: 0x75CA,\n 0xE179: 0x75D2,\n 0xE17A: 0x75D9,\n 0xE17B: 0x75E3,\n 0xE17C: 0x75DE,\n 0xE17D: 0x75FE,\n 0xE17E: 0x75FF,\n 0xE180: 0x75FC,\n 0xE181: 0x7601,\n 0xE182: 0x75F0,\n 0xE183: 0x75FA,\n 0xE184: 0x75F2,\n 0xE185: 0x75F3,\n 0xE186: 0x760B,\n 0xE187: 0x760D,\n 0xE188: 0x7609,\n 0xE189: 0x761F,\n 0xE18A: 0x7627,\n 0xE18B: 0x7620,\n 0xE18C: 0x7621,\n 0xE18D: 0x7622,\n 0xE18E: 0x7624,\n 0xE18F: 0x7634,\n 0xE190: 0x7630,\n 0xE191: 0x763B,\n 0xE192: 0x7647,\n 0xE193: 0x7648,\n 0xE194: 0x7646,\n 0xE195: 0x765C,\n 0xE196: 0x7658,\n 0xE197: 0x7661,\n 0xE198: 0x7662,\n 0xE199: 0x7668,\n 0xE19A: 0x7669,\n 0xE19B: 0x766A,\n 0xE19C: 0x7667,\n 0xE19D: 0x766C,\n 0xE19E: 0x7670,\n 0xE19F: 0x7672,\n 0xE1A0: 0x7676,\n 0xE1A1: 0x7678,\n 0xE1A2: 0x767C,\n 0xE1A3: 0x7680,\n 0xE1A4: 0x7683,\n 0xE1A5: 0x7688,\n 0xE1A6: 0x768B,\n 0xE1A7: 0x768E,\n 0xE1A8: 0x7696,\n 0xE1A9: 0x7693,\n 0xE1AA: 0x7699,\n 0xE1AB: 0x769A,\n 0xE1AC: 0x76B0,\n 0xE1AD: 0x76B4,\n 0xE1AE: 0x76B8,\n 0xE1AF: 0x76B9,\n 0xE1B0: 0x76BA,\n 0xE1B1: 0x76C2,\n 0xE1B2: 0x76CD,\n 0xE1B3: 0x76D6,\n 0xE1B4: 0x76D2,\n 0xE1B5: 0x76DE,\n 0xE1B6: 0x76E1,\n 0xE1B7: 0x76E5,\n 0xE1B8: 0x76E7,\n 0xE1B9: 0x76EA,\n 0xE1BA: 0x862F,\n 0xE1BB: 0x76FB,\n 0xE1BC: 0x7708,\n 0xE1BD: 0x7707,\n 0xE1BE: 0x7704,\n 0xE1BF: 0x7729,\n 0xE1C0: 0x7724,\n 0xE1C1: 0x771E,\n 0xE1C2: 0x7725,\n 0xE1C3: 0x7726,\n 0xE1C4: 0x771B,\n 0xE1C5: 0x7737,\n 0xE1C6: 0x7738,\n 0xE1C7: 0x7747,\n 0xE1C8: 0x775A,\n 0xE1C9: 0x7768,\n 0xE1CA: 0x776B,\n 0xE1CB: 0x775B,\n 0xE1CC: 0x7765,\n 0xE1CD: 0x777F,\n 0xE1CE: 0x777E,\n 0xE1CF: 0x7779,\n 0xE1D0: 0x778E,\n 0xE1D1: 0x778B,\n 0xE1D2: 0x7791,\n 0xE1D3: 0x77A0,\n 0xE1D4: 0x779E,\n 0xE1D5: 0x77B0,\n 0xE1D6: 0x77B6,\n 0xE1D7: 0x77B9,\n 0xE1D8: 0x77BF,\n 0xE1D9: 0x77BC,\n 0xE1DA: 0x77BD,\n 0xE1DB: 0x77BB,\n 0xE1DC: 0x77C7,\n 0xE1DD: 0x77CD,\n 0xE1DE: 0x77D7,\n 0xE1DF: 0x77DA,\n 0xE1E0: 0x77DC,\n 0xE1E1: 0x77E3,\n 0xE1E2: 0x77EE,\n 0xE1E3: 0x77FC,\n 0xE1E4: 0x780C,\n 0xE1E5: 0x7812,\n 0xE1E6: 0x7926,\n 0xE1E7: 0x7820,\n 0xE1E8: 0x792A,\n 0xE1E9: 0x7845,\n 0xE1EA: 0x788E,\n 0xE1EB: 0x7874,\n 0xE1EC: 0x7886,\n 0xE1ED: 0x787C,\n 0xE1EE: 0x789A,\n 0xE1EF: 0x788C,\n 0xE1F0: 0x78A3,\n 0xE1F1: 0x78B5,\n 0xE1F2: 0x78AA,\n 0xE1F3: 0x78AF,\n 0xE1F4: 0x78D1,\n 0xE1F5: 0x78C6,\n 0xE1F6: 0x78CB,\n 0xE1F7: 0x78D4,\n 0xE1F8: 0x78BE,\n 0xE1F9: 0x78BC,\n 0xE1FA: 0x78C5,\n 0xE1FB: 0x78CA,\n 0xE1FC: 0x78EC,\n 0xE240: 0x78E7,\n 0xE241: 0x78DA,\n 0xE242: 0x78FD,\n 0xE243: 0x78F4,\n 0xE244: 0x7907,\n 0xE245: 0x7912,\n 0xE246: 0x7911,\n 0xE247: 0x7919,\n 0xE248: 0x792C,\n 0xE249: 0x792B,\n 0xE24A: 0x7940,\n 0xE24B: 0x7960,\n 0xE24C: 0x7957,\n 0xE24D: 0x795F,\n 0xE24E: 0x795A,\n 0xE24F: 0x7955,\n 0xE250: 0x7953,\n 0xE251: 0x797A,\n 0xE252: 0x797F,\n 0xE253: 0x798A,\n 0xE254: 0x799D,\n 0xE255: 0x79A7,\n 0xE256: 0x9F4B,\n 0xE257: 0x79AA,\n 0xE258: 0x79AE,\n 0xE259: 0x79B3,\n 0xE25A: 0x79B9,\n 0xE25B: 0x79BA,\n 0xE25C: 0x79C9,\n 0xE25D: 0x79D5,\n 0xE25E: 0x79E7,\n 0xE25F: 0x79EC,\n 0xE260: 0x79E1,\n 0xE261: 0x79E3,\n 0xE262: 0x7A08,\n 0xE263: 0x7A0D,\n 0xE264: 0x7A18,\n 0xE265: 0x7A19,\n 0xE266: 0x7A20,\n 0xE267: 0x7A1F,\n 0xE268: 0x7980,\n 0xE269: 0x7A31,\n 0xE26A: 0x7A3B,\n 0xE26B: 0x7A3E,\n 0xE26C: 0x7A37,\n 0xE26D: 0x7A43,\n 0xE26E: 0x7A57,\n 0xE26F: 0x7A49,\n 0xE270: 0x7A61,\n 0xE271: 0x7A62,\n 0xE272: 0x7A69,\n 0xE273: 0x9F9D,\n 0xE274: 0x7A70,\n 0xE275: 0x7A79,\n 0xE276: 0x7A7D,\n 0xE277: 0x7A88,\n 0xE278: 0x7A97,\n 0xE279: 0x7A95,\n 0xE27A: 0x7A98,\n 0xE27B: 0x7A96,\n 0xE27C: 0x7AA9,\n 0xE27D: 0x7AC8,\n 0xE27E: 0x7AB0,\n 0xE280: 0x7AB6,\n 0xE281: 0x7AC5,\n 0xE282: 0x7AC4,\n 0xE283: 0x7ABF,\n 0xE284: 0x9083,\n 0xE285: 0x7AC7,\n 0xE286: 0x7ACA,\n 0xE287: 0x7ACD,\n 0xE288: 0x7ACF,\n 0xE289: 0x7AD5,\n 0xE28A: 0x7AD3,\n 0xE28B: 0x7AD9,\n 0xE28C: 0x7ADA,\n 0xE28D: 0x7ADD,\n 0xE28E: 0x7AE1,\n 0xE28F: 0x7AE2,\n 0xE290: 0x7AE6,\n 0xE291: 0x7AED,\n 0xE292: 0x7AF0,\n 0xE293: 0x7B02,\n 0xE294: 0x7B0F,\n 0xE295: 0x7B0A,\n 0xE296: 0x7B06,\n 0xE297: 0x7B33,\n 0xE298: 0x7B18,\n 0xE299: 0x7B19,\n 0xE29A: 0x7B1E,\n 0xE29B: 0x7B35,\n 0xE29C: 0x7B28,\n 0xE29D: 0x7B36,\n 0xE29E: 0x7B50,\n 0xE29F: 0x7B7A,\n 0xE2A0: 0x7B04,\n 0xE2A1: 0x7B4D,\n 0xE2A2: 0x7B0B,\n 0xE2A3: 0x7B4C,\n 0xE2A4: 0x7B45,\n 0xE2A5: 0x7B75,\n 0xE2A6: 0x7B65,\n 0xE2A7: 0x7B74,\n 0xE2A8: 0x7B67,\n 0xE2A9: 0x7B70,\n 0xE2AA: 0x7B71,\n 0xE2AB: 0x7B6C,\n 0xE2AC: 0x7B6E,\n 0xE2AD: 0x7B9D,\n 0xE2AE: 0x7B98,\n 0xE2AF: 0x7B9F,\n 0xE2B0: 0x7B8D,\n 0xE2B1: 0x7B9C,\n 0xE2B2: 0x7B9A,\n 0xE2B3: 0x7B8B,\n 0xE2B4: 0x7B92,\n 0xE2B5: 0x7B8F,\n 0xE2B6: 0x7B5D,\n 0xE2B7: 0x7B99,\n 0xE2B8: 0x7BCB,\n 0xE2B9: 0x7BC1,\n 0xE2BA: 0x7BCC,\n 0xE2BB: 0x7BCF,\n 0xE2BC: 0x7BB4,\n 0xE2BD: 0x7BC6,\n 0xE2BE: 0x7BDD,\n 0xE2BF: 0x7BE9,\n 0xE2C0: 0x7C11,\n 0xE2C1: 0x7C14,\n 0xE2C2: 0x7BE6,\n 0xE2C3: 0x7BE5,\n 0xE2C4: 0x7C60,\n 0xE2C5: 0x7C00,\n 0xE2C6: 0x7C07,\n 0xE2C7: 0x7C13,\n 0xE2C8: 0x7BF3,\n 0xE2C9: 0x7BF7,\n 0xE2CA: 0x7C17,\n 0xE2CB: 0x7C0D,\n 0xE2CC: 0x7BF6,\n 0xE2CD: 0x7C23,\n 0xE2CE: 0x7C27,\n 0xE2CF: 0x7C2A,\n 0xE2D0: 0x7C1F,\n 0xE2D1: 0x7C37,\n 0xE2D2: 0x7C2B,\n 0xE2D3: 0x7C3D,\n 0xE2D4: 0x7C4C,\n 0xE2D5: 0x7C43,\n 0xE2D6: 0x7C54,\n 0xE2D7: 0x7C4F,\n 0xE2D8: 0x7C40,\n 0xE2D9: 0x7C50,\n 0xE2DA: 0x7C58,\n 0xE2DB: 0x7C5F,\n 0xE2DC: 0x7C64,\n 0xE2DD: 0x7C56,\n 0xE2DE: 0x7C65,\n 0xE2DF: 0x7C6C,\n 0xE2E0: 0x7C75,\n 0xE2E1: 0x7C83,\n 0xE2E2: 0x7C90,\n 0xE2E3: 0x7CA4,\n 0xE2E4: 0x7CAD,\n 0xE2E5: 0x7CA2,\n 0xE2E6: 0x7CAB,\n 0xE2E7: 0x7CA1,\n 0xE2E8: 0x7CA8,\n 0xE2E9: 0x7CB3,\n 0xE2EA: 0x7CB2,\n 0xE2EB: 0x7CB1,\n 0xE2EC: 0x7CAE,\n 0xE2ED: 0x7CB9,\n 0xE2EE: 0x7CBD,\n 0xE2EF: 0x7CC0,\n 0xE2F0: 0x7CC5,\n 0xE2F1: 0x7CC2,\n 0xE2F2: 0x7CD8,\n 0xE2F3: 0x7CD2,\n 0xE2F4: 0x7CDC,\n 0xE2F5: 0x7CE2,\n 0xE2F6: 0x9B3B,\n 0xE2F7: 0x7CEF,\n 0xE2F8: 0x7CF2,\n 0xE2F9: 0x7CF4,\n 0xE2FA: 0x7CF6,\n 0xE2FB: 0x7CFA,\n 0xE2FC: 0x7D06,\n 0xE340: 0x7D02,\n 0xE341: 0x7D1C,\n 0xE342: 0x7D15,\n 0xE343: 0x7D0A,\n 0xE344: 0x7D45,\n 0xE345: 0x7D4B,\n 0xE346: 0x7D2E,\n 0xE347: 0x7D32,\n 0xE348: 0x7D3F,\n 0xE349: 0x7D35,\n 0xE34A: 0x7D46,\n 0xE34B: 0x7D73,\n 0xE34C: 0x7D56,\n 0xE34D: 0x7D4E,\n 0xE34E: 0x7D72,\n 0xE34F: 0x7D68,\n 0xE350: 0x7D6E,\n 0xE351: 0x7D4F,\n 0xE352: 0x7D63,\n 0xE353: 0x7D93,\n 0xE354: 0x7D89,\n 0xE355: 0x7D5B,\n 0xE356: 0x7D8F,\n 0xE357: 0x7D7D,\n 0xE358: 0x7D9B,\n 0xE359: 0x7DBA,\n 0xE35A: 0x7DAE,\n 0xE35B: 0x7DA3,\n 0xE35C: 0x7DB5,\n 0xE35D: 0x7DC7,\n 0xE35E: 0x7DBD,\n 0xE35F: 0x7DAB,\n 0xE360: 0x7E3D,\n 0xE361: 0x7DA2,\n 0xE362: 0x7DAF,\n 0xE363: 0x7DDC,\n 0xE364: 0x7DB8,\n 0xE365: 0x7D9F,\n 0xE366: 0x7DB0,\n 0xE367: 0x7DD8,\n 0xE368: 0x7DDD,\n 0xE369: 0x7DE4,\n 0xE36A: 0x7DDE,\n 0xE36B: 0x7DFB,\n 0xE36C: 0x7DF2,\n 0xE36D: 0x7DE1,\n 0xE36E: 0x7E05,\n 0xE36F: 0x7E0A,\n 0xE370: 0x7E23,\n 0xE371: 0x7E21,\n 0xE372: 0x7E12,\n 0xE373: 0x7E31,\n 0xE374: 0x7E1F,\n 0xE375: 0x7E09,\n 0xE376: 0x7E0B,\n 0xE377: 0x7E22,\n 0xE378: 0x7E46,\n 0xE379: 0x7E66,\n 0xE37A: 0x7E3B,\n 0xE37B: 0x7E35,\n 0xE37C: 0x7E39,\n 0xE37D: 0x7E43,\n 0xE37E: 0x7E37,\n 0xE380: 0x7E32,\n 0xE381: 0x7E3A,\n 0xE382: 0x7E67,\n 0xE383: 0x7E5D,\n 0xE384: 0x7E56,\n 0xE385: 0x7E5E,\n 0xE386: 0x7E59,\n 0xE387: 0x7E5A,\n 0xE388: 0x7E79,\n 0xE389: 0x7E6A,\n 0xE38A: 0x7E69,\n 0xE38B: 0x7E7C,\n 0xE38C: 0x7E7B,\n 0xE38D: 0x7E83,\n 0xE38E: 0x7DD5,\n 0xE38F: 0x7E7D,\n 0xE390: 0x8FAE,\n 0xE391: 0x7E7F,\n 0xE392: 0x7E88,\n 0xE393: 0x7E89,\n 0xE394: 0x7E8C,\n 0xE395: 0x7E92,\n 0xE396: 0x7E90,\n 0xE397: 0x7E93,\n 0xE398: 0x7E94,\n 0xE399: 0x7E96,\n 0xE39A: 0x7E8E,\n 0xE39B: 0x7E9B,\n 0xE39C: 0x7E9C,\n 0xE39D: 0x7F38,\n 0xE39E: 0x7F3A,\n 0xE39F: 0x7F45,\n 0xE3A0: 0x7F4C,\n 0xE3A1: 0x7F4D,\n 0xE3A2: 0x7F4E,\n 0xE3A3: 0x7F50,\n 0xE3A4: 0x7F51,\n 0xE3A5: 0x7F55,\n 0xE3A6: 0x7F54,\n 0xE3A7: 0x7F58,\n 0xE3A8: 0x7F5F,\n 0xE3A9: 0x7F60,\n 0xE3AA: 0x7F68,\n 0xE3AB: 0x7F69,\n 0xE3AC: 0x7F67,\n 0xE3AD: 0x7F78,\n 0xE3AE: 0x7F82,\n 0xE3AF: 0x7F86,\n 0xE3B0: 0x7F83,\n 0xE3B1: 0x7F88,\n 0xE3B2: 0x7F87,\n 0xE3B3: 0x7F8C,\n 0xE3B4: 0x7F94,\n 0xE3B5: 0x7F9E,\n 0xE3B6: 0x7F9D,\n 0xE3B7: 0x7F9A,\n 0xE3B8: 0x7FA3,\n 0xE3B9: 0x7FAF,\n 0xE3BA: 0x7FB2,\n 0xE3BB: 0x7FB9,\n 0xE3BC: 0x7FAE,\n 0xE3BD: 0x7FB6,\n 0xE3BE: 0x7FB8,\n 0xE3BF: 0x8B71,\n 0xE3C0: 0x7FC5,\n 0xE3C1: 0x7FC6,\n 0xE3C2: 0x7FCA,\n 0xE3C3: 0x7FD5,\n 0xE3C4: 0x7FD4,\n 0xE3C5: 0x7FE1,\n 0xE3C6: 0x7FE6,\n 0xE3C7: 0x7FE9,\n 0xE3C8: 0x7FF3,\n 0xE3C9: 0x7FF9,\n 0xE3CA: 0x98DC,\n 0xE3CB: 0x8006,\n 0xE3CC: 0x8004,\n 0xE3CD: 0x800B,\n 0xE3CE: 0x8012,\n 0xE3CF: 0x8018,\n 0xE3D0: 0x8019,\n 0xE3D1: 0x801C,\n 0xE3D2: 0x8021,\n 0xE3D3: 0x8028,\n 0xE3D4: 0x803F,\n 0xE3D5: 0x803B,\n 0xE3D6: 0x804A,\n 0xE3D7: 0x8046,\n 0xE3D8: 0x8052,\n 0xE3D9: 0x8058,\n 0xE3DA: 0x805A,\n 0xE3DB: 0x805F,\n 0xE3DC: 0x8062,\n 0xE3DD: 0x8068,\n 0xE3DE: 0x8073,\n 0xE3DF: 0x8072,\n 0xE3E0: 0x8070,\n 0xE3E1: 0x8076,\n 0xE3E2: 0x8079,\n 0xE3E3: 0x807D,\n 0xE3E4: 0x807F,\n 0xE3E5: 0x8084,\n 0xE3E6: 0x8086,\n 0xE3E7: 0x8085,\n 0xE3E8: 0x809B,\n 0xE3E9: 0x8093,\n 0xE3EA: 0x809A,\n 0xE3EB: 0x80AD,\n 0xE3EC: 0x5190,\n 0xE3ED: 0x80AC,\n 0xE3EE: 0x80DB,\n 0xE3EF: 0x80E5,\n 0xE3F0: 0x80D9,\n 0xE3F1: 0x80DD,\n 0xE3F2: 0x80C4,\n 0xE3F3: 0x80DA,\n 0xE3F4: 0x80D6,\n 0xE3F5: 0x8109,\n 0xE3F6: 0x80EF,\n 0xE3F7: 0x80F1,\n 0xE3F8: 0x811B,\n 0xE3F9: 0x8129,\n 0xE3FA: 0x8123,\n 0xE3FB: 0x812F,\n 0xE3FC: 0x814B,\n 0xE440: 0x968B,\n 0xE441: 0x8146,\n 0xE442: 0x813E,\n 0xE443: 0x8153,\n 0xE444: 0x8151,\n 0xE445: 0x80FC,\n 0xE446: 0x8171,\n 0xE447: 0x816E,\n 0xE448: 0x8165,\n 0xE449: 0x8166,\n 0xE44A: 0x8174,\n 0xE44B: 0x8183,\n 0xE44C: 0x8188,\n 0xE44D: 0x818A,\n 0xE44E: 0x8180,\n 0xE44F: 0x8182,\n 0xE450: 0x81A0,\n 0xE451: 0x8195,\n 0xE452: 0x81A4,\n 0xE453: 0x81A3,\n 0xE454: 0x815F,\n 0xE455: 0x8193,\n 0xE456: 0x81A9,\n 0xE457: 0x81B0,\n 0xE458: 0x81B5,\n 0xE459: 0x81BE,\n 0xE45A: 0x81B8,\n 0xE45B: 0x81BD,\n 0xE45C: 0x81C0,\n 0xE45D: 0x81C2,\n 0xE45E: 0x81BA,\n 0xE45F: 0x81C9,\n 0xE460: 0x81CD,\n 0xE461: 0x81D1,\n 0xE462: 0x81D9,\n 0xE463: 0x81D8,\n 0xE464: 0x81C8,\n 0xE465: 0x81DA,\n 0xE466: 0x81DF,\n 0xE467: 0x81E0,\n 0xE468: 0x81E7,\n 0xE469: 0x81FA,\n 0xE46A: 0x81FB,\n 0xE46B: 0x81FE,\n 0xE46C: 0x8201,\n 0xE46D: 0x8202,\n 0xE46E: 0x8205,\n 0xE46F: 0x8207,\n 0xE470: 0x820A,\n 0xE471: 0x820D,\n 0xE472: 0x8210,\n 0xE473: 0x8216,\n 0xE474: 0x8229,\n 0xE475: 0x822B,\n 0xE476: 0x8238,\n 0xE477: 0x8233,\n 0xE478: 0x8240,\n 0xE479: 0x8259,\n 0xE47A: 0x8258,\n 0xE47B: 0x825D,\n 0xE47C: 0x825A,\n 0xE47D: 0x825F,\n 0xE47E: 0x8264,\n 0xE480: 0x8262,\n 0xE481: 0x8268,\n 0xE482: 0x826A,\n 0xE483: 0x826B,\n 0xE484: 0x822E,\n 0xE485: 0x8271,\n 0xE486: 0x8277,\n 0xE487: 0x8278,\n 0xE488: 0x827E,\n 0xE489: 0x828D,\n 0xE48A: 0x8292,\n 0xE48B: 0x82AB,\n 0xE48C: 0x829F,\n 0xE48D: 0x82BB,\n 0xE48E: 0x82AC,\n 0xE48F: 0x82E1,\n 0xE490: 0x82E3,\n 0xE491: 0x82DF,\n 0xE492: 0x82D2,\n 0xE493: 0x82F4,\n 0xE494: 0x82F3,\n 0xE495: 0x82FA,\n 0xE496: 0x8393,\n 0xE497: 0x8303,\n 0xE498: 0x82FB,\n 0xE499: 0x82F9,\n 0xE49A: 0x82DE,\n 0xE49B: 0x8306,\n 0xE49C: 0x82DC,\n 0xE49D: 0x8309,\n 0xE49E: 0x82D9,\n 0xE49F: 0x8335,\n 0xE4A0: 0x8334,\n 0xE4A1: 0x8316,\n 0xE4A2: 0x8332,\n 0xE4A3: 0x8331,\n 0xE4A4: 0x8340,\n 0xE4A5: 0x8339,\n 0xE4A6: 0x8350,\n 0xE4A7: 0x8345,\n 0xE4A8: 0x832F,\n 0xE4A9: 0x832B,\n 0xE4AA: 0x8317,\n 0xE4AB: 0x8318,\n 0xE4AC: 0x8385,\n 0xE4AD: 0x839A,\n 0xE4AE: 0x83AA,\n 0xE4AF: 0x839F,\n 0xE4B0: 0x83A2,\n 0xE4B1: 0x8396,\n 0xE4B2: 0x8323,\n 0xE4B3: 0x838E,\n 0xE4B4: 0x8387,\n 0xE4B5: 0x838A,\n 0xE4B6: 0x837C,\n 0xE4B7: 0x83B5,\n 0xE4B8: 0x8373,\n 0xE4B9: 0x8375,\n 0xE4BA: 0x83A0,\n 0xE4BB: 0x8389,\n 0xE4BC: 0x83A8,\n 0xE4BD: 0x83F4,\n 0xE4BE: 0x8413,\n 0xE4BF: 0x83EB,\n 0xE4C0: 0x83CE,\n 0xE4C1: 0x83FD,\n 0xE4C2: 0x8403,\n 0xE4C3: 0x83D8,\n 0xE4C4: 0x840B,\n 0xE4C5: 0x83C1,\n 0xE4C6: 0x83F7,\n 0xE4C7: 0x8407,\n 0xE4C8: 0x83E0,\n 0xE4C9: 0x83F2,\n 0xE4CA: 0x840D,\n 0xE4CB: 0x8422,\n 0xE4CC: 0x8420,\n 0xE4CD: 0x83BD,\n 0xE4CE: 0x8438,\n 0xE4CF: 0x8506,\n 0xE4D0: 0x83FB,\n 0xE4D1: 0x846D,\n 0xE4D2: 0x842A,\n 0xE4D3: 0x843C,\n 0xE4D4: 0x855A,\n 0xE4D5: 0x8484,\n 0xE4D6: 0x8477,\n 0xE4D7: 0x846B,\n 0xE4D8: 0x84AD,\n 0xE4D9: 0x846E,\n 0xE4DA: 0x8482,\n 0xE4DB: 0x8469,\n 0xE4DC: 0x8446,\n 0xE4DD: 0x842C,\n 0xE4DE: 0x846F,\n 0xE4DF: 0x8479,\n 0xE4E0: 0x8435,\n 0xE4E1: 0x84CA,\n 0xE4E2: 0x8462,\n 0xE4E3: 0x84B9,\n 0xE4E4: 0x84BF,\n 0xE4E5: 0x849F,\n 0xE4E6: 0x84D9,\n 0xE4E7: 0x84CD,\n 0xE4E8: 0x84BB,\n 0xE4E9: 0x84DA,\n 0xE4EA: 0x84D0,\n 0xE4EB: 0x84C1,\n 0xE4EC: 0x84C6,\n 0xE4ED: 0x84D6,\n 0xE4EE: 0x84A1,\n 0xE4EF: 0x8521,\n 0xE4F0: 0x84FF,\n 0xE4F1: 0x84F4,\n 0xE4F2: 0x8517,\n 0xE4F3: 0x8518,\n 0xE4F4: 0x852C,\n 0xE4F5: 0x851F,\n 0xE4F6: 0x8515,\n 0xE4F7: 0x8514,\n 0xE4F8: 0x84FC,\n 0xE4F9: 0x8540,\n 0xE4FA: 0x8563,\n 0xE4FB: 0x8558,\n 0xE4FC: 0x8548,\n 0xE540: 0x8541,\n 0xE541: 0x8602,\n 0xE542: 0x854B,\n 0xE543: 0x8555,\n 0xE544: 0x8580,\n 0xE545: 0x85A4,\n 0xE546: 0x8588,\n 0xE547: 0x8591,\n 0xE548: 0x858A,\n 0xE549: 0x85A8,\n 0xE54A: 0x856D,\n 0xE54B: 0x8594,\n 0xE54C: 0x859B,\n 0xE54D: 0x85EA,\n 0xE54E: 0x8587,\n 0xE54F: 0x859C,\n 0xE550: 0x8577,\n 0xE551: 0x857E,\n 0xE552: 0x8590,\n 0xE553: 0x85C9,\n 0xE554: 0x85BA,\n 0xE555: 0x85CF,\n 0xE556: 0x85B9,\n 0xE557: 0x85D0,\n 0xE558: 0x85D5,\n 0xE559: 0x85DD,\n 0xE55A: 0x85E5,\n 0xE55B: 0x85DC,\n 0xE55C: 0x85F9,\n 0xE55D: 0x860A,\n 0xE55E: 0x8613,\n 0xE55F: 0x860B,\n 0xE560: 0x85FE,\n 0xE561: 0x85FA,\n 0xE562: 0x8606,\n 0xE563: 0x8622,\n 0xE564: 0x861A,\n 0xE565: 0x8630,\n 0xE566: 0x863F,\n 0xE567: 0x864D,\n 0xE568: 0x4E55,\n 0xE569: 0x8654,\n 0xE56A: 0x865F,\n 0xE56B: 0x8667,\n 0xE56C: 0x8671,\n 0xE56D: 0x8693,\n 0xE56E: 0x86A3,\n 0xE56F: 0x86A9,\n 0xE570: 0x86AA,\n 0xE571: 0x868B,\n 0xE572: 0x868C,\n 0xE573: 0x86B6,\n 0xE574: 0x86AF,\n 0xE575: 0x86C4,\n 0xE576: 0x86C6,\n 0xE577: 0x86B0,\n 0xE578: 0x86C9,\n 0xE579: 0x8823,\n 0xE57A: 0x86AB,\n 0xE57B: 0x86D4,\n 0xE57C: 0x86DE,\n 0xE57D: 0x86E9,\n 0xE57E: 0x86EC,\n 0xE580: 0x86DF,\n 0xE581: 0x86DB,\n 0xE582: 0x86EF,\n 0xE583: 0x8712,\n 0xE584: 0x8706,\n 0xE585: 0x8708,\n 0xE586: 0x8700,\n 0xE587: 0x8703,\n 0xE588: 0x86FB,\n 0xE589: 0x8711,\n 0xE58A: 0x8709,\n 0xE58B: 0x870D,\n 0xE58C: 0x86F9,\n 0xE58D: 0x870A,\n 0xE58E: 0x8734,\n 0xE58F: 0x873F,\n 0xE590: 0x8737,\n 0xE591: 0x873B,\n 0xE592: 0x8725,\n 0xE593: 0x8729,\n 0xE594: 0x871A,\n 0xE595: 0x8760,\n 0xE596: 0x875F,\n 0xE597: 0x8778,\n 0xE598: 0x874C,\n 0xE599: 0x874E,\n 0xE59A: 0x8774,\n 0xE59B: 0x8757,\n 0xE59C: 0x8768,\n 0xE59D: 0x876E,\n 0xE59E: 0x8759,\n 0xE59F: 0x8753,\n 0xE5A0: 0x8763,\n 0xE5A1: 0x876A,\n 0xE5A2: 0x8805,\n 0xE5A3: 0x87A2,\n 0xE5A4: 0x879F,\n 0xE5A5: 0x8782,\n 0xE5A6: 0x87AF,\n 0xE5A7: 0x87CB,\n 0xE5A8: 0x87BD,\n 0xE5A9: 0x87C0,\n 0xE5AA: 0x87D0,\n 0xE5AB: 0x96D6,\n 0xE5AC: 0x87AB,\n 0xE5AD: 0x87C4,\n 0xE5AE: 0x87B3,\n 0xE5AF: 0x87C7,\n 0xE5B0: 0x87C6,\n 0xE5B1: 0x87BB,\n 0xE5B2: 0x87EF,\n 0xE5B3: 0x87F2,\n 0xE5B4: 0x87E0,\n 0xE5B5: 0x880F,\n 0xE5B6: 0x880D,\n 0xE5B7: 0x87FE,\n 0xE5B8: 0x87F6,\n 0xE5B9: 0x87F7,\n 0xE5BA: 0x880E,\n 0xE5BB: 0x87D2,\n 0xE5BC: 0x8811,\n 0xE5BD: 0x8816,\n 0xE5BE: 0x8815,\n 0xE5BF: 0x8822,\n 0xE5C0: 0x8821,\n 0xE5C1: 0x8831,\n 0xE5C2: 0x8836,\n 0xE5C3: 0x8839,\n 0xE5C4: 0x8827,\n 0xE5C5: 0x883B,\n 0xE5C6: 0x8844,\n 0xE5C7: 0x8842,\n 0xE5C8: 0x8852,\n 0xE5C9: 0x8859,\n 0xE5CA: 0x885E,\n 0xE5CB: 0x8862,\n 0xE5CC: 0x886B,\n 0xE5CD: 0x8881,\n 0xE5CE: 0x887E,\n 0xE5CF: 0x889E,\n 0xE5D0: 0x8875,\n 0xE5D1: 0x887D,\n 0xE5D2: 0x88B5,\n 0xE5D3: 0x8872,\n 0xE5D4: 0x8882,\n 0xE5D5: 0x8897,\n 0xE5D6: 0x8892,\n 0xE5D7: 0x88AE,\n 0xE5D8: 0x8899,\n 0xE5D9: 0x88A2,\n 0xE5DA: 0x888D,\n 0xE5DB: 0x88A4,\n 0xE5DC: 0x88B0,\n 0xE5DD: 0x88BF,\n 0xE5DE: 0x88B1,\n 0xE5DF: 0x88C3,\n 0xE5E0: 0x88C4,\n 0xE5E1: 0x88D4,\n 0xE5E2: 0x88D8,\n 0xE5E3: 0x88D9,\n 0xE5E4: 0x88DD,\n 0xE5E5: 0x88F9,\n 0xE5E6: 0x8902,\n 0xE5E7: 0x88FC,\n 0xE5E8: 0x88F4,\n 0xE5E9: 0x88E8,\n 0xE5EA: 0x88F2,\n 0xE5EB: 0x8904,\n 0xE5EC: 0x890C,\n 0xE5ED: 0x890A,\n 0xE5EE: 0x8913,\n 0xE5EF: 0x8943,\n 0xE5F0: 0x891E,\n 0xE5F1: 0x8925,\n 0xE5F2: 0x892A,\n 0xE5F3: 0x892B,\n 0xE5F4: 0x8941,\n 0xE5F5: 0x8944,\n 0xE5F6: 0x893B,\n 0xE5F7: 0x8936,\n 0xE5F8: 0x8938,\n 0xE5F9: 0x894C,\n 0xE5FA: 0x891D,\n 0xE5FB: 0x8960,\n 0xE5FC: 0x895E,\n 0xE640: 0x8966,\n 0xE641: 0x8964,\n 0xE642: 0x896D,\n 0xE643: 0x896A,\n 0xE644: 0x896F,\n 0xE645: 0x8974,\n 0xE646: 0x8977,\n 0xE647: 0x897E,\n 0xE648: 0x8983,\n 0xE649: 0x8988,\n 0xE64A: 0x898A,\n 0xE64B: 0x8993,\n 0xE64C: 0x8998,\n 0xE64D: 0x89A1,\n 0xE64E: 0x89A9,\n 0xE64F: 0x89A6,\n 0xE650: 0x89AC,\n 0xE651: 0x89AF,\n 0xE652: 0x89B2,\n 0xE653: 0x89BA,\n 0xE654: 0x89BD,\n 0xE655: 0x89BF,\n 0xE656: 0x89C0,\n 0xE657: 0x89DA,\n 0xE658: 0x89DC,\n 0xE659: 0x89DD,\n 0xE65A: 0x89E7,\n 0xE65B: 0x89F4,\n 0xE65C: 0x89F8,\n 0xE65D: 0x8A03,\n 0xE65E: 0x8A16,\n 0xE65F: 0x8A10,\n 0xE660: 0x8A0C,\n 0xE661: 0x8A1B,\n 0xE662: 0x8A1D,\n 0xE663: 0x8A25,\n 0xE664: 0x8A36,\n 0xE665: 0x8A41,\n 0xE666: 0x8A5B,\n 0xE667: 0x8A52,\n 0xE668: 0x8A46,\n 0xE669: 0x8A48,\n 0xE66A: 0x8A7C,\n 0xE66B: 0x8A6D,\n 0xE66C: 0x8A6C,\n 0xE66D: 0x8A62,\n 0xE66E: 0x8A85,\n 0xE66F: 0x8A82,\n 0xE670: 0x8A84,\n 0xE671: 0x8AA8,\n 0xE672: 0x8AA1,\n 0xE673: 0x8A91,\n 0xE674: 0x8AA5,\n 0xE675: 0x8AA6,\n 0xE676: 0x8A9A,\n 0xE677: 0x8AA3,\n 0xE678: 0x8AC4,\n 0xE679: 0x8ACD,\n 0xE67A: 0x8AC2,\n 0xE67B: 0x8ADA,\n 0xE67C: 0x8AEB,\n 0xE67D: 0x8AF3,\n 0xE67E: 0x8AE7,\n 0xE680: 0x8AE4,\n 0xE681: 0x8AF1,\n 0xE682: 0x8B14,\n 0xE683: 0x8AE0,\n 0xE684: 0x8AE2,\n 0xE685: 0x8AF7,\n 0xE686: 0x8ADE,\n 0xE687: 0x8ADB,\n 0xE688: 0x8B0C,\n 0xE689: 0x8B07,\n 0xE68A: 0x8B1A,\n 0xE68B: 0x8AE1,\n 0xE68C: 0x8B16,\n 0xE68D: 0x8B10,\n 0xE68E: 0x8B17,\n 0xE68F: 0x8B20,\n 0xE690: 0x8B33,\n 0xE691: 0x97AB,\n 0xE692: 0x8B26,\n 0xE693: 0x8B2B,\n 0xE694: 0x8B3E,\n 0xE695: 0x8B28,\n 0xE696: 0x8B41,\n 0xE697: 0x8B4C,\n 0xE698: 0x8B4F,\n 0xE699: 0x8B4E,\n 0xE69A: 0x8B49,\n 0xE69B: 0x8B56,\n 0xE69C: 0x8B5B,\n 0xE69D: 0x8B5A,\n 0xE69E: 0x8B6B,\n 0xE69F: 0x8B5F,\n 0xE6A0: 0x8B6C,\n 0xE6A1: 0x8B6F,\n 0xE6A2: 0x8B74,\n 0xE6A3: 0x8B7D,\n 0xE6A4: 0x8B80,\n 0xE6A5: 0x8B8C,\n 0xE6A6: 0x8B8E,\n 0xE6A7: 0x8B92,\n 0xE6A8: 0x8B93,\n 0xE6A9: 0x8B96,\n 0xE6AA: 0x8B99,\n 0xE6AB: 0x8B9A,\n 0xE6AC: 0x8C3A,\n 0xE6AD: 0x8C41,\n 0xE6AE: 0x8C3F,\n 0xE6AF: 0x8C48,\n 0xE6B0: 0x8C4C,\n 0xE6B1: 0x8C4E,\n 0xE6B2: 0x8C50,\n 0xE6B3: 0x8C55,\n 0xE6B4: 0x8C62,\n 0xE6B5: 0x8C6C,\n 0xE6B6: 0x8C78,\n 0xE6B7: 0x8C7A,\n 0xE6B8: 0x8C82,\n 0xE6B9: 0x8C89,\n 0xE6BA: 0x8C85,\n 0xE6BB: 0x8C8A,\n 0xE6BC: 0x8C8D,\n 0xE6BD: 0x8C8E,\n 0xE6BE: 0x8C94,\n 0xE6BF: 0x8C7C,\n 0xE6C0: 0x8C98,\n 0xE6C1: 0x621D,\n 0xE6C2: 0x8CAD,\n 0xE6C3: 0x8CAA,\n 0xE6C4: 0x8CBD,\n 0xE6C5: 0x8CB2,\n 0xE6C6: 0x8CB3,\n 0xE6C7: 0x8CAE,\n 0xE6C8: 0x8CB6,\n 0xE6C9: 0x8CC8,\n 0xE6CA: 0x8CC1,\n 0xE6CB: 0x8CE4,\n 0xE6CC: 0x8CE3,\n 0xE6CD: 0x8CDA,\n 0xE6CE: 0x8CFD,\n 0xE6CF: 0x8CFA,\n 0xE6D0: 0x8CFB,\n 0xE6D1: 0x8D04,\n 0xE6D2: 0x8D05,\n 0xE6D3: 0x8D0A,\n 0xE6D4: 0x8D07,\n 0xE6D5: 0x8D0F,\n 0xE6D6: 0x8D0D,\n 0xE6D7: 0x8D10,\n 0xE6D8: 0x9F4E,\n 0xE6D9: 0x8D13,\n 0xE6DA: 0x8CCD,\n 0xE6DB: 0x8D14,\n 0xE6DC: 0x8D16,\n 0xE6DD: 0x8D67,\n 0xE6DE: 0x8D6D,\n 0xE6DF: 0x8D71,\n 0xE6E0: 0x8D73,\n 0xE6E1: 0x8D81,\n 0xE6E2: 0x8D99,\n 0xE6E3: 0x8DC2,\n 0xE6E4: 0x8DBE,\n 0xE6E5: 0x8DBA,\n 0xE6E6: 0x8DCF,\n 0xE6E7: 0x8DDA,\n 0xE6E8: 0x8DD6,\n 0xE6E9: 0x8DCC,\n 0xE6EA: 0x8DDB,\n 0xE6EB: 0x8DCB,\n 0xE6EC: 0x8DEA,\n 0xE6ED: 0x8DEB,\n 0xE6EE: 0x8DDF,\n 0xE6EF: 0x8DE3,\n 0xE6F0: 0x8DFC,\n 0xE6F1: 0x8E08,\n 0xE6F2: 0x8E09,\n 0xE6F3: 0x8DFF,\n 0xE6F4: 0x8E1D,\n 0xE6F5: 0x8E1E,\n 0xE6F6: 0x8E10,\n 0xE6F7: 0x8E1F,\n 0xE6F8: 0x8E42,\n 0xE6F9: 0x8E35,\n 0xE6FA: 0x8E30,\n 0xE6FB: 0x8E34,\n 0xE6FC: 0x8E4A,\n 0xE740: 0x8E47,\n 0xE741: 0x8E49,\n 0xE742: 0x8E4C,\n 0xE743: 0x8E50,\n 0xE744: 0x8E48,\n 0xE745: 0x8E59,\n 0xE746: 0x8E64,\n 0xE747: 0x8E60,\n 0xE748: 0x8E2A,\n 0xE749: 0x8E63,\n 0xE74A: 0x8E55,\n 0xE74B: 0x8E76,\n 0xE74C: 0x8E72,\n 0xE74D: 0x8E7C,\n 0xE74E: 0x8E81,\n 0xE74F: 0x8E87,\n 0xE750: 0x8E85,\n 0xE751: 0x8E84,\n 0xE752: 0x8E8B,\n 0xE753: 0x8E8A,\n 0xE754: 0x8E93,\n 0xE755: 0x8E91,\n 0xE756: 0x8E94,\n 0xE757: 0x8E99,\n 0xE758: 0x8EAA,\n 0xE759: 0x8EA1,\n 0xE75A: 0x8EAC,\n 0xE75B: 0x8EB0,\n 0xE75C: 0x8EC6,\n 0xE75D: 0x8EB1,\n 0xE75E: 0x8EBE,\n 0xE75F: 0x8EC5,\n 0xE760: 0x8EC8,\n 0xE761: 0x8ECB,\n 0xE762: 0x8EDB,\n 0xE763: 0x8EE3,\n 0xE764: 0x8EFC,\n 0xE765: 0x8EFB,\n 0xE766: 0x8EEB,\n 0xE767: 0x8EFE,\n 0xE768: 0x8F0A,\n 0xE769: 0x8F05,\n 0xE76A: 0x8F15,\n 0xE76B: 0x8F12,\n 0xE76C: 0x8F19,\n 0xE76D: 0x8F13,\n 0xE76E: 0x8F1C,\n 0xE76F: 0x8F1F,\n 0xE770: 0x8F1B,\n 0xE771: 0x8F0C,\n 0xE772: 0x8F26,\n 0xE773: 0x8F33,\n 0xE774: 0x8F3B,\n 0xE775: 0x8F39,\n 0xE776: 0x8F45,\n 0xE777: 0x8F42,\n 0xE778: 0x8F3E,\n 0xE779: 0x8F4C,\n 0xE77A: 0x8F49,\n 0xE77B: 0x8F46,\n 0xE77C: 0x8F4E,\n 0xE77D: 0x8F57,\n 0xE77E: 0x8F5C,\n 0xE780: 0x8F62,\n 0xE781: 0x8F63,\n 0xE782: 0x8F64,\n 0xE783: 0x8F9C,\n 0xE784: 0x8F9F,\n 0xE785: 0x8FA3,\n 0xE786: 0x8FAD,\n 0xE787: 0x8FAF,\n 0xE788: 0x8FB7,\n 0xE789: 0x8FDA,\n 0xE78A: 0x8FE5,\n 0xE78B: 0x8FE2,\n 0xE78C: 0x8FEA,\n 0xE78D: 0x8FEF,\n 0xE78E: 0x9087,\n 0xE78F: 0x8FF4,\n 0xE790: 0x9005,\n 0xE791: 0x8FF9,\n 0xE792: 0x8FFA,\n 0xE793: 0x9011,\n 0xE794: 0x9015,\n 0xE795: 0x9021,\n 0xE796: 0x900D,\n 0xE797: 0x901E,\n 0xE798: 0x9016,\n 0xE799: 0x900B,\n 0xE79A: 0x9027,\n 0xE79B: 0x9036,\n 0xE79C: 0x9035,\n 0xE79D: 0x9039,\n 0xE79E: 0x8FF8,\n 0xE79F: 0x904F,\n 0xE7A0: 0x9050,\n 0xE7A1: 0x9051,\n 0xE7A2: 0x9052,\n 0xE7A3: 0x900E,\n 0xE7A4: 0x9049,\n 0xE7A5: 0x903E,\n 0xE7A6: 0x9056,\n 0xE7A7: 0x9058,\n 0xE7A8: 0x905E,\n 0xE7A9: 0x9068,\n 0xE7AA: 0x906F,\n 0xE7AB: 0x9076,\n 0xE7AC: 0x96A8,\n 0xE7AD: 0x9072,\n 0xE7AE: 0x9082,\n 0xE7AF: 0x907D,\n 0xE7B0: 0x9081,\n 0xE7B1: 0x9080,\n 0xE7B2: 0x908A,\n 0xE7B3: 0x9089,\n 0xE7B4: 0x908F,\n 0xE7B5: 0x90A8,\n 0xE7B6: 0x90AF,\n 0xE7B7: 0x90B1,\n 0xE7B8: 0x90B5,\n 0xE7B9: 0x90E2,\n 0xE7BA: 0x90E4,\n 0xE7BB: 0x6248,\n 0xE7BC: 0x90DB,\n 0xE7BD: 0x9102,\n 0xE7BE: 0x9112,\n 0xE7BF: 0x9119,\n 0xE7C0: 0x9132,\n 0xE7C1: 0x9130,\n 0xE7C2: 0x914A,\n 0xE7C3: 0x9156,\n 0xE7C4: 0x9158,\n 0xE7C5: 0x9163,\n 0xE7C6: 0x9165,\n 0xE7C7: 0x9169,\n 0xE7C8: 0x9173,\n 0xE7C9: 0x9172,\n 0xE7CA: 0x918B,\n 0xE7CB: 0x9189,\n 0xE7CC: 0x9182,\n 0xE7CD: 0x91A2,\n 0xE7CE: 0x91AB,\n 0xE7CF: 0x91AF,\n 0xE7D0: 0x91AA,\n 0xE7D1: 0x91B5,\n 0xE7D2: 0x91B4,\n 0xE7D3: 0x91BA,\n 0xE7D4: 0x91C0,\n 0xE7D5: 0x91C1,\n 0xE7D6: 0x91C9,\n 0xE7D7: 0x91CB,\n 0xE7D8: 0x91D0,\n 0xE7D9: 0x91D6,\n 0xE7DA: 0x91DF,\n 0xE7DB: 0x91E1,\n 0xE7DC: 0x91DB,\n 0xE7DD: 0x91FC,\n 0xE7DE: 0x91F5,\n 0xE7DF: 0x91F6,\n 0xE7E0: 0x921E,\n 0xE7E1: 0x91FF,\n 0xE7E2: 0x9214,\n 0xE7E3: 0x922C,\n 0xE7E4: 0x9215,\n 0xE7E5: 0x9211,\n 0xE7E6: 0x925E,\n 0xE7E7: 0x9257,\n 0xE7E8: 0x9245,\n 0xE7E9: 0x9249,\n 0xE7EA: 0x9264,\n 0xE7EB: 0x9248,\n 0xE7EC: 0x9295,\n 0xE7ED: 0x923F,\n 0xE7EE: 0x924B,\n 0xE7EF: 0x9250,\n 0xE7F0: 0x929C,\n 0xE7F1: 0x9296,\n 0xE7F2: 0x9293,\n 0xE7F3: 0x929B,\n 0xE7F4: 0x925A,\n 0xE7F5: 0x92CF,\n 0xE7F6: 0x92B9,\n 0xE7F7: 0x92B7,\n 0xE7F8: 0x92E9,\n 0xE7F9: 0x930F,\n 0xE7FA: 0x92FA,\n 0xE7FB: 0x9344,\n 0xE7FC: 0x932E,\n 0xE840: 0x9319,\n 0xE841: 0x9322,\n 0xE842: 0x931A,\n 0xE843: 0x9323,\n 0xE844: 0x933A,\n 0xE845: 0x9335,\n 0xE846: 0x933B,\n 0xE847: 0x935C,\n 0xE848: 0x9360,\n 0xE849: 0x937C,\n 0xE84A: 0x936E,\n 0xE84B: 0x9356,\n 0xE84C: 0x93B0,\n 0xE84D: 0x93AC,\n 0xE84E: 0x93AD,\n 0xE84F: 0x9394,\n 0xE850: 0x93B9,\n 0xE851: 0x93D6,\n 0xE852: 0x93D7,\n 0xE853: 0x93E8,\n 0xE854: 0x93E5,\n 0xE855: 0x93D8,\n 0xE856: 0x93C3,\n 0xE857: 0x93DD,\n 0xE858: 0x93D0,\n 0xE859: 0x93C8,\n 0xE85A: 0x93E4,\n 0xE85B: 0x941A,\n 0xE85C: 0x9414,\n 0xE85D: 0x9413,\n 0xE85E: 0x9403,\n 0xE85F: 0x9407,\n 0xE860: 0x9410,\n 0xE861: 0x9436,\n 0xE862: 0x942B,\n 0xE863: 0x9435,\n 0xE864: 0x9421,\n 0xE865: 0x943A,\n 0xE866: 0x9441,\n 0xE867: 0x9452,\n 0xE868: 0x9444,\n 0xE869: 0x945B,\n 0xE86A: 0x9460,\n 0xE86B: 0x9462,\n 0xE86C: 0x945E,\n 0xE86D: 0x946A,\n 0xE86E: 0x9229,\n 0xE86F: 0x9470,\n 0xE870: 0x9475,\n 0xE871: 0x9477,\n 0xE872: 0x947D,\n 0xE873: 0x945A,\n 0xE874: 0x947C,\n 0xE875: 0x947E,\n 0xE876: 0x9481,\n 0xE877: 0x947F,\n 0xE878: 0x9582,\n 0xE879: 0x9587,\n 0xE87A: 0x958A,\n 0xE87B: 0x9594,\n 0xE87C: 0x9596,\n 0xE87D: 0x9598,\n 0xE87E: 0x9599,\n 0xE880: 0x95A0,\n 0xE881: 0x95A8,\n 0xE882: 0x95A7,\n 0xE883: 0x95AD,\n 0xE884: 0x95BC,\n 0xE885: 0x95BB,\n 0xE886: 0x95B9,\n 0xE887: 0x95BE,\n 0xE888: 0x95CA,\n 0xE889: 0x6FF6,\n 0xE88A: 0x95C3,\n 0xE88B: 0x95CD,\n 0xE88C: 0x95CC,\n 0xE88D: 0x95D5,\n 0xE88E: 0x95D4,\n 0xE88F: 0x95D6,\n 0xE890: 0x95DC,\n 0xE891: 0x95E1,\n 0xE892: 0x95E5,\n 0xE893: 0x95E2,\n 0xE894: 0x9621,\n 0xE895: 0x9628,\n 0xE896: 0x962E,\n 0xE897: 0x962F,\n 0xE898: 0x9642,\n 0xE899: 0x964C,\n 0xE89A: 0x964F,\n 0xE89B: 0x964B,\n 0xE89C: 0x9677,\n 0xE89D: 0x965C,\n 0xE89E: 0x965E,\n 0xE89F: 0x965D,\n 0xE8A0: 0x965F,\n 0xE8A1: 0x9666,\n 0xE8A2: 0x9672,\n 0xE8A3: 0x966C,\n 0xE8A4: 0x968D,\n 0xE8A5: 0x9698,\n 0xE8A6: 0x9695,\n 0xE8A7: 0x9697,\n 0xE8A8: 0x96AA,\n 0xE8A9: 0x96A7,\n 0xE8AA: 0x96B1,\n 0xE8AB: 0x96B2,\n 0xE8AC: 0x96B0,\n 0xE8AD: 0x96B4,\n 0xE8AE: 0x96B6,\n 0xE8AF: 0x96B8,\n 0xE8B0: 0x96B9,\n 0xE8B1: 0x96CE,\n 0xE8B2: 0x96CB,\n 0xE8B3: 0x96C9,\n 0xE8B4: 0x96CD,\n 0xE8B5: 0x894D,\n 0xE8B6: 0x96DC,\n 0xE8B7: 0x970D,\n 0xE8B8: 0x96D5,\n 0xE8B9: 0x96F9,\n 0xE8BA: 0x9704,\n 0xE8BB: 0x9706,\n 0xE8BC: 0x9708,\n 0xE8BD: 0x9713,\n 0xE8BE: 0x970E,\n 0xE8BF: 0x9711,\n 0xE8C0: 0x970F,\n 0xE8C1: 0x9716,\n 0xE8C2: 0x9719,\n 0xE8C3: 0x9724,\n 0xE8C4: 0x972A,\n 0xE8C5: 0x9730,\n 0xE8C6: 0x9739,\n 0xE8C7: 0x973D,\n 0xE8C8: 0x973E,\n 0xE8C9: 0x9744,\n 0xE8CA: 0x9746,\n 0xE8CB: 0x9748,\n 0xE8CC: 0x9742,\n 0xE8CD: 0x9749,\n 0xE8CE: 0x975C,\n 0xE8CF: 0x9760,\n 0xE8D0: 0x9764,\n 0xE8D1: 0x9766,\n 0xE8D2: 0x9768,\n 0xE8D3: 0x52D2,\n 0xE8D4: 0x976B,\n 0xE8D5: 0x9771,\n 0xE8D6: 0x9779,\n 0xE8D7: 0x9785,\n 0xE8D8: 0x977C,\n 0xE8D9: 0x9781,\n 0xE8DA: 0x977A,\n 0xE8DB: 0x9786,\n 0xE8DC: 0x978B,\n 0xE8DD: 0x978F,\n 0xE8DE: 0x9790,\n 0xE8DF: 0x979C,\n 0xE8E0: 0x97A8,\n 0xE8E1: 0x97A6,\n 0xE8E2: 0x97A3,\n 0xE8E3: 0x97B3,\n 0xE8E4: 0x97B4,\n 0xE8E5: 0x97C3,\n 0xE8E6: 0x97C6,\n 0xE8E7: 0x97C8,\n 0xE8E8: 0x97CB,\n 0xE8E9: 0x97DC,\n 0xE8EA: 0x97ED,\n 0xE8EB: 0x9F4F,\n 0xE8EC: 0x97F2,\n 0xE8ED: 0x7ADF,\n 0xE8EE: 0x97F6,\n 0xE8EF: 0x97F5,\n 0xE8F0: 0x980F,\n 0xE8F1: 0x980C,\n 0xE8F2: 0x9838,\n 0xE8F3: 0x9824,\n 0xE8F4: 0x9821,\n 0xE8F5: 0x9837,\n 0xE8F6: 0x983D,\n 0xE8F7: 0x9846,\n 0xE8F8: 0x984F,\n 0xE8F9: 0x984B,\n 0xE8FA: 0x986B,\n 0xE8FB: 0x986F,\n 0xE8FC: 0x9870,\n 0xE940: 0x9871,\n 0xE941: 0x9874,\n 0xE942: 0x9873,\n 0xE943: 0x98AA,\n 0xE944: 0x98AF,\n 0xE945: 0x98B1,\n 0xE946: 0x98B6,\n 0xE947: 0x98C4,\n 0xE948: 0x98C3,\n 0xE949: 0x98C6,\n 0xE94A: 0x98E9,\n 0xE94B: 0x98EB,\n 0xE94C: 0x9903,\n 0xE94D: 0x9909,\n 0xE94E: 0x9912,\n 0xE94F: 0x9914,\n 0xE950: 0x9918,\n 0xE951: 0x9921,\n 0xE952: 0x991D,\n 0xE953: 0x991E,\n 0xE954: 0x9924,\n 0xE955: 0x9920,\n 0xE956: 0x992C,\n 0xE957: 0x992E,\n 0xE958: 0x993D,\n 0xE959: 0x993E,\n 0xE95A: 0x9942,\n 0xE95B: 0x9949,\n 0xE95C: 0x9945,\n 0xE95D: 0x9950,\n 0xE95E: 0x994B,\n 0xE95F: 0x9951,\n 0xE960: 0x9952,\n 0xE961: 0x994C,\n 0xE962: 0x9955,\n 0xE963: 0x9997,\n 0xE964: 0x9998,\n 0xE965: 0x99A5,\n 0xE966: 0x99AD,\n 0xE967: 0x99AE,\n 0xE968: 0x99BC,\n 0xE969: 0x99DF,\n 0xE96A: 0x99DB,\n 0xE96B: 0x99DD,\n 0xE96C: 0x99D8,\n 0xE96D: 0x99D1,\n 0xE96E: 0x99ED,\n 0xE96F: 0x99EE,\n 0xE970: 0x99F1,\n 0xE971: 0x99F2,\n 0xE972: 0x99FB,\n 0xE973: 0x99F8,\n 0xE974: 0x9A01,\n 0xE975: 0x9A0F,\n 0xE976: 0x9A05,\n 0xE977: 0x99E2,\n 0xE978: 0x9A19,\n 0xE979: 0x9A2B,\n 0xE97A: 0x9A37,\n 0xE97B: 0x9A45,\n 0xE97C: 0x9A42,\n 0xE97D: 0x9A40,\n 0xE97E: 0x9A43,\n 0xE980: 0x9A3E,\n 0xE981: 0x9A55,\n 0xE982: 0x9A4D,\n 0xE983: 0x9A5B,\n 0xE984: 0x9A57,\n 0xE985: 0x9A5F,\n 0xE986: 0x9A62,\n 0xE987: 0x9A65,\n 0xE988: 0x9A64,\n 0xE989: 0x9A69,\n 0xE98A: 0x9A6B,\n 0xE98B: 0x9A6A,\n 0xE98C: 0x9AAD,\n 0xE98D: 0x9AB0,\n 0xE98E: 0x9ABC,\n 0xE98F: 0x9AC0,\n 0xE990: 0x9ACF,\n 0xE991: 0x9AD1,\n 0xE992: 0x9AD3,\n 0xE993: 0x9AD4,\n 0xE994: 0x9ADE,\n 0xE995: 0x9ADF,\n 0xE996: 0x9AE2,\n 0xE997: 0x9AE3,\n 0xE998: 0x9AE6,\n 0xE999: 0x9AEF,\n 0xE99A: 0x9AEB,\n 0xE99B: 0x9AEE,\n 0xE99C: 0x9AF4,\n 0xE99D: 0x9AF1,\n 0xE99E: 0x9AF7,\n 0xE99F: 0x9AFB,\n 0xE9A0: 0x9B06,\n 0xE9A1: 0x9B18,\n 0xE9A2: 0x9B1A,\n 0xE9A3: 0x9B1F,\n 0xE9A4: 0x9B22,\n 0xE9A5: 0x9B23,\n 0xE9A6: 0x9B25,\n 0xE9A7: 0x9B27,\n 0xE9A8: 0x9B28,\n 0xE9A9: 0x9B29,\n 0xE9AA: 0x9B2A,\n 0xE9AB: 0x9B2E,\n 0xE9AC: 0x9B2F,\n 0xE9AD: 0x9B32,\n 0xE9AE: 0x9B44,\n 0xE9AF: 0x9B43,\n 0xE9B0: 0x9B4F,\n 0xE9B1: 0x9B4D,\n 0xE9B2: 0x9B4E,\n 0xE9B3: 0x9B51,\n 0xE9B4: 0x9B58,\n 0xE9B5: 0x9B74,\n 0xE9B6: 0x9B93,\n 0xE9B7: 0x9B83,\n 0xE9B8: 0x9B91,\n 0xE9B9: 0x9B96,\n 0xE9BA: 0x9B97,\n 0xE9BB: 0x9B9F,\n 0xE9BC: 0x9BA0,\n 0xE9BD: 0x9BA8,\n 0xE9BE: 0x9BB4,\n 0xE9BF: 0x9BC0,\n 0xE9C0: 0x9BCA,\n 0xE9C1: 0x9BB9,\n 0xE9C2: 0x9BC6,\n 0xE9C3: 0x9BCF,\n 0xE9C4: 0x9BD1,\n 0xE9C5: 0x9BD2,\n 0xE9C6: 0x9BE3,\n 0xE9C7: 0x9BE2,\n 0xE9C8: 0x9BE4,\n 0xE9C9: 0x9BD4,\n 0xE9CA: 0x9BE1,\n 0xE9CB: 0x9C3A,\n 0xE9CC: 0x9BF2,\n 0xE9CD: 0x9BF1,\n 0xE9CE: 0x9BF0,\n 0xE9CF: 0x9C15,\n 0xE9D0: 0x9C14,\n 0xE9D1: 0x9C09,\n 0xE9D2: 0x9C13,\n 0xE9D3: 0x9C0C,\n 0xE9D4: 0x9C06,\n 0xE9D5: 0x9C08,\n 0xE9D6: 0x9C12,\n 0xE9D7: 0x9C0A,\n 0xE9D8: 0x9C04,\n 0xE9D9: 0x9C2E,\n 0xE9DA: 0x9C1B,\n 0xE9DB: 0x9C25,\n 0xE9DC: 0x9C24,\n 0xE9DD: 0x9C21,\n 0xE9DE: 0x9C30,\n 0xE9DF: 0x9C47,\n 0xE9E0: 0x9C32,\n 0xE9E1: 0x9C46,\n 0xE9E2: 0x9C3E,\n 0xE9E3: 0x9C5A,\n 0xE9E4: 0x9C60,\n 0xE9E5: 0x9C67,\n 0xE9E6: 0x9C76,\n 0xE9E7: 0x9C78,\n 0xE9E8: 0x9CE7,\n 0xE9E9: 0x9CEC,\n 0xE9EA: 0x9CF0,\n 0xE9EB: 0x9D09,\n 0xE9EC: 0x9D08,\n 0xE9ED: 0x9CEB,\n 0xE9EE: 0x9D03,\n 0xE9EF: 0x9D06,\n 0xE9F0: 0x9D2A,\n 0xE9F1: 0x9D26,\n 0xE9F2: 0x9DAF,\n 0xE9F3: 0x9D23,\n 0xE9F4: 0x9D1F,\n 0xE9F5: 0x9D44,\n 0xE9F6: 0x9D15,\n 0xE9F7: 0x9D12,\n 0xE9F8: 0x9D41,\n 0xE9F9: 0x9D3F,\n 0xE9FA: 0x9D3E,\n 0xE9FB: 0x9D46,\n 0xE9FC: 0x9D48,\n 0xEA40: 0x9D5D,\n 0xEA41: 0x9D5E,\n 0xEA42: 0x9D64,\n 0xEA43: 0x9D51,\n 0xEA44: 0x9D50,\n 0xEA45: 0x9D59,\n 0xEA46: 0x9D72,\n 0xEA47: 0x9D89,\n 0xEA48: 0x9D87,\n 0xEA49: 0x9DAB,\n 0xEA4A: 0x9D6F,\n 0xEA4B: 0x9D7A,\n 0xEA4C: 0x9D9A,\n 0xEA4D: 0x9DA4,\n 0xEA4E: 0x9DA9,\n 0xEA4F: 0x9DB2,\n 0xEA50: 0x9DC4,\n 0xEA51: 0x9DC1,\n 0xEA52: 0x9DBB,\n 0xEA53: 0x9DB8,\n 0xEA54: 0x9DBA,\n 0xEA55: 0x9DC6,\n 0xEA56: 0x9DCF,\n 0xEA57: 0x9DC2,\n 0xEA58: 0x9DD9,\n 0xEA59: 0x9DD3,\n 0xEA5A: 0x9DF8,\n 0xEA5B: 0x9DE6,\n 0xEA5C: 0x9DED,\n 0xEA5D: 0x9DEF,\n 0xEA5E: 0x9DFD,\n 0xEA5F: 0x9E1A,\n 0xEA60: 0x9E1B,\n 0xEA61: 0x9E1E,\n 0xEA62: 0x9E75,\n 0xEA63: 0x9E79,\n 0xEA64: 0x9E7D,\n 0xEA65: 0x9E81,\n 0xEA66: 0x9E88,\n 0xEA67: 0x9E8B,\n 0xEA68: 0x9E8C,\n 0xEA69: 0x9E92,\n 0xEA6A: 0x9E95,\n 0xEA6B: 0x9E91,\n 0xEA6C: 0x9E9D,\n 0xEA6D: 0x9EA5,\n 0xEA6E: 0x9EA9,\n 0xEA6F: 0x9EB8,\n 0xEA70: 0x9EAA,\n 0xEA71: 0x9EAD,\n 0xEA72: 0x9761,\n 0xEA73: 0x9ECC,\n 0xEA74: 0x9ECE,\n 0xEA75: 0x9ECF,\n 0xEA76: 0x9ED0,\n 0xEA77: 0x9ED4,\n 0xEA78: 0x9EDC,\n 0xEA79: 0x9EDE,\n 0xEA7A: 0x9EDD,\n 0xEA7B: 0x9EE0,\n 0xEA7C: 0x9EE5,\n 0xEA7D: 0x9EE8,\n 0xEA7E: 0x9EEF,\n 0xEA80: 0x9EF4,\n 0xEA81: 0x9EF6,\n 0xEA82: 0x9EF7,\n 0xEA83: 0x9EF9,\n 0xEA84: 0x9EFB,\n 0xEA85: 0x9EFC,\n 0xEA86: 0x9EFD,\n 0xEA87: 0x9F07,\n 0xEA88: 0x9F08,\n 0xEA89: 0x76B7,\n 0xEA8A: 0x9F15,\n 0xEA8B: 0x9F21,\n 0xEA8C: 0x9F2C,\n 0xEA8D: 0x9F3E,\n 0xEA8E: 0x9F4A,\n 0xEA8F: 0x9F52,\n 0xEA90: 0x9F54,\n 0xEA91: 0x9F63,\n 0xEA92: 0x9F5F,\n 0xEA93: 0x9F60,\n 0xEA94: 0x9F61,\n 0xEA95: 0x9F66,\n 0xEA96: 0x9F67,\n 0xEA97: 0x9F6C,\n 0xEA98: 0x9F6A,\n 0xEA99: 0x9F77,\n 0xEA9A: 0x9F72,\n 0xEA9B: 0x9F76,\n 0xEA9C: 0x9F95,\n 0xEA9D: 0x9F9C,\n 0xEA9E: 0x9FA0,\n 0xEA9F: 0x582F,\n 0xEAA0: 0x69C7,\n 0xEAA1: 0x9059,\n 0xEAA2: 0x7464,\n 0xEAA3: 0x51DC,\n 0xEAA4: 0x7199,\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GenericGF_1 = __webpack_require__(1);\nvar GenericGFPoly_1 = __webpack_require__(2);\nfunction runEuclideanAlgorithm(field, a, b, R) {\n // Assume a's degree is >= b's\n if (a.degree() < b.degree()) {\n _a = [b, a], a = _a[0], b = _a[1];\n }\n var rLast = a;\n var r = b;\n var tLast = field.zero;\n var t = field.one;\n // Run Euclidean algorithm until r's degree is less than R/2\n while (r.degree() >= R / 2) {\n var rLastLast = rLast;\n var tLastLast = tLast;\n rLast = r;\n tLast = t;\n // Divide rLastLast by rLast, with quotient in q and remainder in r\n if (rLast.isZero()) {\n // Euclidean algorithm already terminated?\n return null;\n }\n r = rLastLast;\n var q = field.zero;\n var denominatorLeadingTerm = rLast.getCoefficient(rLast.degree());\n var dltInverse = field.inverse(denominatorLeadingTerm);\n while (r.degree() >= rLast.degree() && !r.isZero()) {\n var degreeDiff = r.degree() - rLast.degree();\n var scale = field.multiply(r.getCoefficient(r.degree()), dltInverse);\n q = q.addOrSubtract(field.buildMonomial(degreeDiff, scale));\n r = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\n }\n t = q.multiplyPoly(tLast).addOrSubtract(tLastLast);\n if (r.degree() >= rLast.degree()) {\n return null;\n }\n }\n var sigmaTildeAtZero = t.getCoefficient(0);\n if (sigmaTildeAtZero === 0) {\n return null;\n }\n var inverse = field.inverse(sigmaTildeAtZero);\n return [t.multiply(inverse), r.multiply(inverse)];\n var _a;\n}\nfunction findErrorLocations(field, errorLocator) {\n // This is a direct application of Chien's search\n var numErrors = errorLocator.degree();\n if (numErrors === 1) {\n return [errorLocator.getCoefficient(1)];\n }\n var result = new Array(numErrors);\n var errorCount = 0;\n for (var i = 1; i < field.size && errorCount < numErrors; i++) {\n if (errorLocator.evaluateAt(i) === 0) {\n result[errorCount] = field.inverse(i);\n errorCount++;\n }\n }\n if (errorCount !== numErrors) {\n return null;\n }\n return result;\n}\nfunction findErrorMagnitudes(field, errorEvaluator, errorLocations) {\n // This is directly applying Forney's Formula\n var s = errorLocations.length;\n var result = new Array(s);\n for (var i = 0; i < s; i++) {\n var xiInverse = field.inverse(errorLocations[i]);\n var denominator = 1;\n for (var j = 0; j < s; j++) {\n if (i !== j) {\n denominator = field.multiply(denominator, GenericGF_1.addOrSubtractGF(1, field.multiply(errorLocations[j], xiInverse)));\n }\n }\n result[i] = field.multiply(errorEvaluator.evaluateAt(xiInverse), field.inverse(denominator));\n if (field.generatorBase !== 0) {\n result[i] = field.multiply(result[i], xiInverse);\n }\n }\n return result;\n}\nfunction decode(bytes, twoS) {\n var outputBytes = new Uint8ClampedArray(bytes.length);\n outputBytes.set(bytes);\n var field = new GenericGF_1.default(0x011D, 256, 0); // x^8 + x^4 + x^3 + x^2 + 1\n var poly = new GenericGFPoly_1.default(field, outputBytes);\n var syndromeCoefficients = new Uint8ClampedArray(twoS);\n var error = false;\n for (var s = 0; s < twoS; s++) {\n var evaluation = poly.evaluateAt(field.exp(s + field.generatorBase));\n syndromeCoefficients[syndromeCoefficients.length - 1 - s] = evaluation;\n if (evaluation !== 0) {\n error = true;\n }\n }\n if (!error) {\n return outputBytes;\n }\n var syndrome = new GenericGFPoly_1.default(field, syndromeCoefficients);\n var sigmaOmega = runEuclideanAlgorithm(field, field.buildMonomial(twoS, 1), syndrome, twoS);\n if (sigmaOmega === null) {\n return null;\n }\n var errorLocations = findErrorLocations(field, sigmaOmega[0]);\n if (errorLocations == null) {\n return null;\n }\n var errorMagnitudes = findErrorMagnitudes(field, sigmaOmega[1], errorLocations);\n for (var i = 0; i < errorLocations.length; i++) {\n var position = outputBytes.length - 1 - field.log(errorLocations[i]);\n if (position < 0) {\n return null;\n }\n outputBytes[position] = GenericGF_1.addOrSubtractGF(outputBytes[position], errorMagnitudes[i]);\n }\n return outputBytes;\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSIONS = [\n {\n infoBits: null,\n versionNumber: 1,\n alignmentPatternCenters: [],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 7,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 19 }],\n },\n {\n ecCodewordsPerBlock: 10,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],\n },\n {\n ecCodewordsPerBlock: 13,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 13 }],\n },\n {\n ecCodewordsPerBlock: 17,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 9 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 2,\n alignmentPatternCenters: [6, 18],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 10,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 34 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 28 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 22 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 3,\n alignmentPatternCenters: [6, 22],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 15,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 55 }],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 44 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 17 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 13 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 4,\n alignmentPatternCenters: [6, 26],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 80 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 32 }],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 24 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 9 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 5,\n alignmentPatternCenters: [6, 30],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 108 }],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 43 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n { numBlocks: 2, dataCodewordsPerBlock: 16 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 11 },\n { numBlocks: 2, dataCodewordsPerBlock: 12 },\n ],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 6,\n alignmentPatternCenters: [6, 34],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 68 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 27 }],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 19 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 15 }],\n },\n ],\n },\n {\n infoBits: 0x07C94,\n versionNumber: 7,\n alignmentPatternCenters: [6, 22, 38],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 78 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 31 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 4, dataCodewordsPerBlock: 15 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 13 },\n { numBlocks: 1, dataCodewordsPerBlock: 14 },\n ],\n },\n ],\n },\n {\n infoBits: 0x085BC,\n versionNumber: 8,\n alignmentPatternCenters: [6, 24, 42],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 97 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 38 },\n { numBlocks: 2, dataCodewordsPerBlock: 39 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 18 },\n { numBlocks: 2, dataCodewordsPerBlock: 19 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 14 },\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x09A99,\n versionNumber: 9,\n alignmentPatternCenters: [6, 26, 46],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 116 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 36 },\n { numBlocks: 2, dataCodewordsPerBlock: 37 },\n ],\n },\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 16 },\n { numBlocks: 4, dataCodewordsPerBlock: 17 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 12 },\n { numBlocks: 4, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0A4D3,\n versionNumber: 10,\n alignmentPatternCenters: [6, 28, 50],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 68 },\n { numBlocks: 2, dataCodewordsPerBlock: 69 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 43 },\n { numBlocks: 1, dataCodewordsPerBlock: 44 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 19 },\n { numBlocks: 2, dataCodewordsPerBlock: 20 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 15 },\n { numBlocks: 2, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0BBF6,\n versionNumber: 11,\n alignmentPatternCenters: [6, 30, 54],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 81 }],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 50 },\n { numBlocks: 4, dataCodewordsPerBlock: 51 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 22 },\n { numBlocks: 4, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 12 },\n { numBlocks: 8, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0C762,\n versionNumber: 12,\n alignmentPatternCenters: [6, 32, 58],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 92 },\n { numBlocks: 2, dataCodewordsPerBlock: 93 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 36 },\n { numBlocks: 2, dataCodewordsPerBlock: 37 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 20 },\n { numBlocks: 6, dataCodewordsPerBlock: 21 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 14 },\n { numBlocks: 4, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0D847,\n versionNumber: 13,\n alignmentPatternCenters: [6, 34, 62],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 107 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 37 },\n { numBlocks: 1, dataCodewordsPerBlock: 38 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 20 },\n { numBlocks: 4, dataCodewordsPerBlock: 21 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 11 },\n { numBlocks: 4, dataCodewordsPerBlock: 12 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0E60D,\n versionNumber: 14,\n alignmentPatternCenters: [6, 26, 46, 66],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 115 },\n { numBlocks: 1, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 40 },\n { numBlocks: 5, dataCodewordsPerBlock: 41 },\n ],\n },\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 16 },\n { numBlocks: 5, dataCodewordsPerBlock: 17 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 12 },\n { numBlocks: 5, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0F928,\n versionNumber: 15,\n alignmentPatternCenters: [6, 26, 48, 70],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 87 },\n { numBlocks: 1, dataCodewordsPerBlock: 88 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 41 },\n { numBlocks: 5, dataCodewordsPerBlock: 42 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 24 },\n { numBlocks: 7, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 12 },\n { numBlocks: 7, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x10B78,\n versionNumber: 16,\n alignmentPatternCenters: [6, 26, 50, 74],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 98 },\n { numBlocks: 1, dataCodewordsPerBlock: 99 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 45 },\n { numBlocks: 3, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 19 },\n { numBlocks: 2, dataCodewordsPerBlock: 20 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 15 },\n { numBlocks: 13, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1145D,\n versionNumber: 17,\n alignmentPatternCenters: [6, 30, 54, 78],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 107 },\n { numBlocks: 5, dataCodewordsPerBlock: 108 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 46 },\n { numBlocks: 1, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 22 },\n { numBlocks: 15, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 17, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x12A17,\n versionNumber: 18,\n alignmentPatternCenters: [6, 30, 56, 82],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 120 },\n { numBlocks: 1, dataCodewordsPerBlock: 121 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 9, dataCodewordsPerBlock: 43 },\n { numBlocks: 4, dataCodewordsPerBlock: 44 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 22 },\n { numBlocks: 1, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x13532,\n versionNumber: 19,\n alignmentPatternCenters: [6, 30, 58, 86],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 113 },\n { numBlocks: 4, dataCodewordsPerBlock: 114 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 44 },\n { numBlocks: 11, dataCodewordsPerBlock: 45 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 21 },\n { numBlocks: 4, dataCodewordsPerBlock: 22 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 9, dataCodewordsPerBlock: 13 },\n { numBlocks: 16, dataCodewordsPerBlock: 14 },\n ],\n },\n ],\n },\n {\n infoBits: 0x149A6,\n versionNumber: 20,\n alignmentPatternCenters: [6, 34, 62, 90],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 107 },\n { numBlocks: 5, dataCodewordsPerBlock: 108 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 41 },\n { numBlocks: 13, dataCodewordsPerBlock: 42 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 24 },\n { numBlocks: 5, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 15 },\n { numBlocks: 10, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x15683,\n versionNumber: 21,\n alignmentPatternCenters: [6, 28, 50, 72, 94],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 116 },\n { numBlocks: 4, dataCodewordsPerBlock: 117 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 42 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 22 },\n { numBlocks: 6, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 16 },\n { numBlocks: 6, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x168C9,\n versionNumber: 22,\n alignmentPatternCenters: [6, 26, 50, 74, 98],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 111 },\n { numBlocks: 7, dataCodewordsPerBlock: 112 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 46 }],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 24 },\n { numBlocks: 16, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 34, dataCodewordsPerBlock: 13 }],\n },\n ],\n },\n {\n infoBits: 0x177EC,\n versionNumber: 23,\n alignmentPatternCenters: [6, 30, 54, 74, 102],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 121 },\n { numBlocks: 5, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 47 },\n { numBlocks: 14, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 16, dataCodewordsPerBlock: 15 },\n { numBlocks: 14, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x18EC4,\n versionNumber: 24,\n alignmentPatternCenters: [6, 28, 54, 80, 106],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 117 },\n { numBlocks: 4, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 45 },\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 24 },\n { numBlocks: 16, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 30, dataCodewordsPerBlock: 16 },\n { numBlocks: 2, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x191E1,\n versionNumber: 25,\n alignmentPatternCenters: [6, 32, 58, 84, 110],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 106 },\n { numBlocks: 4, dataCodewordsPerBlock: 107 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 47 },\n { numBlocks: 13, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 24 },\n { numBlocks: 22, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 15 },\n { numBlocks: 13, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1AFAB,\n versionNumber: 26,\n alignmentPatternCenters: [6, 30, 58, 86, 114],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 114 },\n { numBlocks: 2, dataCodewordsPerBlock: 115 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 46 },\n { numBlocks: 4, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 28, dataCodewordsPerBlock: 22 },\n { numBlocks: 6, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 33, dataCodewordsPerBlock: 16 },\n { numBlocks: 4, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1B08E,\n versionNumber: 27,\n alignmentPatternCenters: [6, 34, 62, 90, 118],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 122 },\n { numBlocks: 4, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 45 },\n { numBlocks: 3, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 23 },\n { numBlocks: 26, dataCodewordsPerBlock: 24 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 15 },\n { numBlocks: 28, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1CC1A,\n versionNumber: 28,\n alignmentPatternCenters: [6, 26, 50, 74, 98, 122],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 117 },\n { numBlocks: 10, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 45 },\n { numBlocks: 23, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 24 },\n { numBlocks: 31, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 15 },\n { numBlocks: 31, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1D33F,\n versionNumber: 29,\n alignmentPatternCenters: [6, 30, 54, 78, 102, 126],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 116 },\n { numBlocks: 7, dataCodewordsPerBlock: 117 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 21, dataCodewordsPerBlock: 45 },\n { numBlocks: 7, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 23 },\n { numBlocks: 37, dataCodewordsPerBlock: 24 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n { numBlocks: 26, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1ED75,\n versionNumber: 30,\n alignmentPatternCenters: [6, 26, 52, 78, 104, 130],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 115 },\n { numBlocks: 10, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 47 },\n { numBlocks: 10, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 24 },\n { numBlocks: 25, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 23, dataCodewordsPerBlock: 15 },\n { numBlocks: 25, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1F250,\n versionNumber: 31,\n alignmentPatternCenters: [6, 30, 56, 82, 108, 134],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 115 },\n { numBlocks: 3, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 46 },\n { numBlocks: 29, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 42, dataCodewordsPerBlock: 24 },\n { numBlocks: 1, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 23, dataCodewordsPerBlock: 15 },\n { numBlocks: 28, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x209D5,\n versionNumber: 32,\n alignmentPatternCenters: [6, 34, 60, 86, 112, 138],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 115 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 46 },\n { numBlocks: 23, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 24 },\n { numBlocks: 35, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n { numBlocks: 35, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x216F0,\n versionNumber: 33,\n alignmentPatternCenters: [6, 30, 58, 86, 114, 142],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 115 },\n { numBlocks: 1, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n { numBlocks: 21, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 29, dataCodewordsPerBlock: 24 },\n { numBlocks: 19, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 15 },\n { numBlocks: 46, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x228BA,\n versionNumber: 34,\n alignmentPatternCenters: [6, 34, 62, 90, 118, 146],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 115 },\n { numBlocks: 6, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n { numBlocks: 23, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 44, dataCodewordsPerBlock: 24 },\n { numBlocks: 7, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 59, dataCodewordsPerBlock: 16 },\n { numBlocks: 1, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x2379F,\n versionNumber: 35,\n alignmentPatternCenters: [6, 30, 54, 78, 102, 126, 150],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 121 },\n { numBlocks: 7, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 47 },\n { numBlocks: 26, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 39, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 15 },\n { numBlocks: 41, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x24B0B,\n versionNumber: 36,\n alignmentPatternCenters: [6, 24, 50, 76, 102, 128, 154],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 121 },\n { numBlocks: 14, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 47 },\n { numBlocks: 34, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 46, dataCodewordsPerBlock: 24 },\n { numBlocks: 10, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n { numBlocks: 64, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x2542E,\n versionNumber: 37,\n alignmentPatternCenters: [6, 28, 54, 80, 106, 132, 158],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 122 },\n { numBlocks: 4, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 29, dataCodewordsPerBlock: 46 },\n { numBlocks: 14, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 49, dataCodewordsPerBlock: 24 },\n { numBlocks: 10, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 24, dataCodewordsPerBlock: 15 },\n { numBlocks: 46, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x26A64,\n versionNumber: 38,\n alignmentPatternCenters: [6, 32, 58, 84, 110, 136, 162],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 122 },\n { numBlocks: 18, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 46 },\n { numBlocks: 32, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 48, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 42, dataCodewordsPerBlock: 15 },\n { numBlocks: 32, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x27541,\n versionNumber: 39,\n alignmentPatternCenters: [6, 26, 54, 82, 110, 138, 166],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 20, dataCodewordsPerBlock: 117 },\n { numBlocks: 4, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 40, dataCodewordsPerBlock: 47 },\n { numBlocks: 7, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 43, dataCodewordsPerBlock: 24 },\n { numBlocks: 22, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 15 },\n { numBlocks: 67, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x28C69,\n versionNumber: 40,\n alignmentPatternCenters: [6, 30, 58, 86, 114, 142, 170],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 118 },\n { numBlocks: 6, dataCodewordsPerBlock: 119 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 18, dataCodewordsPerBlock: 47 },\n { numBlocks: 31, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 34, dataCodewordsPerBlock: 24 },\n { numBlocks: 34, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 20, dataCodewordsPerBlock: 15 },\n { numBlocks: 61, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n];\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BitMatrix_1 = __webpack_require__(0);\nfunction squareToQuadrilateral(p1, p2, p3, p4) {\n var dx3 = p1.x - p2.x + p3.x - p4.x;\n var dy3 = p1.y - p2.y + p3.y - p4.y;\n if (dx3 === 0 && dy3 === 0) {\n return {\n a11: p2.x - p1.x,\n a12: p2.y - p1.y,\n a13: 0,\n a21: p3.x - p2.x,\n a22: p3.y - p2.y,\n a23: 0,\n a31: p1.x,\n a32: p1.y,\n a33: 1,\n };\n }\n else {\n var dx1 = p2.x - p3.x;\n var dx2 = p4.x - p3.x;\n var dy1 = p2.y - p3.y;\n var dy2 = p4.y - p3.y;\n var denominator = dx1 * dy2 - dx2 * dy1;\n var a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n var a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n return {\n a11: p2.x - p1.x + a13 * p2.x,\n a12: p2.y - p1.y + a13 * p2.y,\n a13: a13,\n a21: p4.x - p1.x + a23 * p4.x,\n a22: p4.y - p1.y + a23 * p4.y,\n a23: a23,\n a31: p1.x,\n a32: p1.y,\n a33: 1,\n };\n }\n}\nfunction quadrilateralToSquare(p1, p2, p3, p4) {\n // Here, the adjoint serves as the inverse:\n var sToQ = squareToQuadrilateral(p1, p2, p3, p4);\n return {\n a11: sToQ.a22 * sToQ.a33 - sToQ.a23 * sToQ.a32,\n a12: sToQ.a13 * sToQ.a32 - sToQ.a12 * sToQ.a33,\n a13: sToQ.a12 * sToQ.a23 - sToQ.a13 * sToQ.a22,\n a21: sToQ.a23 * sToQ.a31 - sToQ.a21 * sToQ.a33,\n a22: sToQ.a11 * sToQ.a33 - sToQ.a13 * sToQ.a31,\n a23: sToQ.a13 * sToQ.a21 - sToQ.a11 * sToQ.a23,\n a31: sToQ.a21 * sToQ.a32 - sToQ.a22 * sToQ.a31,\n a32: sToQ.a12 * sToQ.a31 - sToQ.a11 * sToQ.a32,\n a33: sToQ.a11 * sToQ.a22 - sToQ.a12 * sToQ.a21,\n };\n}\nfunction times(a, b) {\n return {\n a11: a.a11 * b.a11 + a.a21 * b.a12 + a.a31 * b.a13,\n a12: a.a12 * b.a11 + a.a22 * b.a12 + a.a32 * b.a13,\n a13: a.a13 * b.a11 + a.a23 * b.a12 + a.a33 * b.a13,\n a21: a.a11 * b.a21 + a.a21 * b.a22 + a.a31 * b.a23,\n a22: a.a12 * b.a21 + a.a22 * b.a22 + a.a32 * b.a23,\n a23: a.a13 * b.a21 + a.a23 * b.a22 + a.a33 * b.a23,\n a31: a.a11 * b.a31 + a.a21 * b.a32 + a.a31 * b.a33,\n a32: a.a12 * b.a31 + a.a22 * b.a32 + a.a32 * b.a33,\n a33: a.a13 * b.a31 + a.a23 * b.a32 + a.a33 * b.a33,\n };\n}\nfunction extract(image, location) {\n var qToS = quadrilateralToSquare({ x: 3.5, y: 3.5 }, { x: location.dimension - 3.5, y: 3.5 }, { x: location.dimension - 6.5, y: location.dimension - 6.5 }, { x: 3.5, y: location.dimension - 3.5 });\n var sToQ = squareToQuadrilateral(location.topLeft, location.topRight, location.alignmentPattern, location.bottomLeft);\n var transform = times(sToQ, qToS);\n var matrix = BitMatrix_1.BitMatrix.createEmpty(location.dimension, location.dimension);\n var mappingFunction = function (x, y) {\n var denominator = transform.a13 * x + transform.a23 * y + transform.a33;\n return {\n x: (transform.a11 * x + transform.a21 * y + transform.a31) / denominator,\n y: (transform.a12 * x + transform.a22 * y + transform.a32) / denominator,\n };\n };\n for (var y = 0; y < location.dimension; y++) {\n for (var x = 0; x < location.dimension; x++) {\n var xValue = x + 0.5;\n var yValue = y + 0.5;\n var sourcePixel = mappingFunction(xValue, yValue);\n matrix.set(x, y, image.get(Math.floor(sourcePixel.x), Math.floor(sourcePixel.y)));\n }\n }\n return {\n matrix: matrix,\n mappingFunction: mappingFunction,\n };\n}\nexports.extract = extract;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MAX_FINDERPATTERNS_TO_SEARCH = 4;\nvar MIN_QUAD_RATIO = 0.5;\nvar MAX_QUAD_RATIO = 1.5;\nvar distance = function (a, b) { return Math.sqrt(Math.pow((b.x - a.x), 2) + Math.pow((b.y - a.y), 2)); };\nfunction sum(values) {\n return values.reduce(function (a, b) { return a + b; });\n}\n// Takes three finder patterns and organizes them into topLeft, topRight, etc\nfunction reorderFinderPatterns(pattern1, pattern2, pattern3) {\n // Find distances between pattern centers\n var oneTwoDistance = distance(pattern1, pattern2);\n var twoThreeDistance = distance(pattern2, pattern3);\n var oneThreeDistance = distance(pattern1, pattern3);\n var bottomLeft;\n var topLeft;\n var topRight;\n // Assume one closest to other two is B; A and C will just be guesses at first\n if (twoThreeDistance >= oneTwoDistance && twoThreeDistance >= oneThreeDistance) {\n _a = [pattern2, pattern1, pattern3], bottomLeft = _a[0], topLeft = _a[1], topRight = _a[2];\n }\n else if (oneThreeDistance >= twoThreeDistance && oneThreeDistance >= oneTwoDistance) {\n _b = [pattern1, pattern2, pattern3], bottomLeft = _b[0], topLeft = _b[1], topRight = _b[2];\n }\n else {\n _c = [pattern1, pattern3, pattern2], bottomLeft = _c[0], topLeft = _c[1], topRight = _c[2];\n }\n // Use cross product to figure out whether bottomLeft (A) and topRight (C) are correct or flipped in relation to topLeft (B)\n // This asks whether BC x BA has a positive z component, which is the arrangement we want. If it's negative, then\n // we've got it flipped around and should swap topRight and bottomLeft.\n if (((topRight.x - topLeft.x) * (bottomLeft.y - topLeft.y)) - ((topRight.y - topLeft.y) * (bottomLeft.x - topLeft.x)) < 0) {\n _d = [topRight, bottomLeft], bottomLeft = _d[0], topRight = _d[1];\n }\n return { bottomLeft: bottomLeft, topLeft: topLeft, topRight: topRight };\n var _a, _b, _c, _d;\n}\n// Computes the dimension (number of modules on a side) of the QR Code based on the position of the finder patterns\nfunction computeDimension(topLeft, topRight, bottomLeft, matrix) {\n var moduleSize = (sum(countBlackWhiteRun(topLeft, bottomLeft, matrix, 5)) / 7 + // Divide by 7 since the ratio is 1:1:3:1:1\n sum(countBlackWhiteRun(topLeft, topRight, matrix, 5)) / 7 +\n sum(countBlackWhiteRun(bottomLeft, topLeft, matrix, 5)) / 7 +\n sum(countBlackWhiteRun(topRight, topLeft, matrix, 5)) / 7) / 4;\n if (moduleSize < 1) {\n throw new Error(\"Invalid module size\");\n }\n var topDimension = Math.round(distance(topLeft, topRight) / moduleSize);\n var sideDimension = Math.round(distance(topLeft, bottomLeft) / moduleSize);\n var dimension = Math.floor((topDimension + sideDimension) / 2) + 7;\n switch (dimension % 4) {\n case 0:\n dimension++;\n break;\n case 2:\n dimension--;\n break;\n }\n return { dimension: dimension, moduleSize: moduleSize };\n}\n// Takes an origin point and an end point and counts the sizes of the black white run from the origin towards the end point.\n// Returns an array of elements, representing the pixel size of the black white run.\n// Uses a variant of http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\nfunction countBlackWhiteRunTowardsPoint(origin, end, matrix, length) {\n var switchPoints = [{ x: Math.floor(origin.x), y: Math.floor(origin.y) }];\n var steep = Math.abs(end.y - origin.y) > Math.abs(end.x - origin.x);\n var fromX;\n var fromY;\n var toX;\n var toY;\n if (steep) {\n fromX = Math.floor(origin.y);\n fromY = Math.floor(origin.x);\n toX = Math.floor(end.y);\n toY = Math.floor(end.x);\n }\n else {\n fromX = Math.floor(origin.x);\n fromY = Math.floor(origin.y);\n toX = Math.floor(end.x);\n toY = Math.floor(end.y);\n }\n var dx = Math.abs(toX - fromX);\n var dy = Math.abs(toY - fromY);\n var error = Math.floor(-dx / 2);\n var xStep = fromX < toX ? 1 : -1;\n var yStep = fromY < toY ? 1 : -1;\n var currentPixel = true;\n // Loop up until x == toX, but not beyond\n for (var x = fromX, y = fromY; x !== toX + xStep; x += xStep) {\n // Does current pixel mean we have moved white to black or vice versa?\n // Scanning black in state 0,2 and white in state 1, so if we find the wrong\n // color, advance to next state or end if we are in state 2 already\n var realX = steep ? y : x;\n var realY = steep ? x : y;\n if (matrix.get(realX, realY) !== currentPixel) {\n currentPixel = !currentPixel;\n switchPoints.push({ x: realX, y: realY });\n if (switchPoints.length === length + 1) {\n break;\n }\n }\n error += dy;\n if (error > 0) {\n if (y === toY) {\n break;\n }\n y += yStep;\n error -= dx;\n }\n }\n var distances = [];\n for (var i = 0; i < length; i++) {\n if (switchPoints[i] && switchPoints[i + 1]) {\n distances.push(distance(switchPoints[i], switchPoints[i + 1]));\n }\n else {\n distances.push(0);\n }\n }\n return distances;\n}\n// Takes an origin point and an end point and counts the sizes of the black white run in the origin point\n// along the line that intersects with the end point. Returns an array of elements, representing the pixel sizes\n// of the black white run. Takes a length which represents the number of switches from black to white to look for.\nfunction countBlackWhiteRun(origin, end, matrix, length) {\n var rise = end.y - origin.y;\n var run = end.x - origin.x;\n var towardsEnd = countBlackWhiteRunTowardsPoint(origin, end, matrix, Math.ceil(length / 2));\n var awayFromEnd = countBlackWhiteRunTowardsPoint(origin, { x: origin.x - run, y: origin.y - rise }, matrix, Math.ceil(length / 2));\n var middleValue = towardsEnd.shift() + awayFromEnd.shift() - 1; // Substract one so we don't double count a pixel\n return (_a = awayFromEnd.concat(middleValue)).concat.apply(_a, towardsEnd);\n var _a;\n}\n// Takes in a black white run and an array of expected ratios. Returns the average size of the run as well as the \"error\" -\n// that is the amount the run diverges from the expected ratio\nfunction scoreBlackWhiteRun(sequence, ratios) {\n var averageSize = sum(sequence) / sum(ratios);\n var error = 0;\n ratios.forEach(function (ratio, i) {\n error += Math.pow((sequence[i] - ratio * averageSize), 2);\n });\n return { averageSize: averageSize, error: error };\n}\n// Takes an X,Y point and an array of sizes and scores the point against those ratios.\n// For example for a finder pattern takes the ratio list of 1:1:3:1:1 and checks horizontal, vertical and diagonal ratios\n// against that.\nfunction scorePattern(point, ratios, matrix) {\n try {\n var horizontalRun = countBlackWhiteRun(point, { x: -1, y: point.y }, matrix, ratios.length);\n var verticalRun = countBlackWhiteRun(point, { x: point.x, y: -1 }, matrix, ratios.length);\n var topLeftPoint = {\n x: Math.max(0, point.x - point.y) - 1,\n y: Math.max(0, point.y - point.x) - 1,\n };\n var topLeftBottomRightRun = countBlackWhiteRun(point, topLeftPoint, matrix, ratios.length);\n var bottomLeftPoint = {\n x: Math.min(matrix.width, point.x + point.y) + 1,\n y: Math.min(matrix.height, point.y + point.x) + 1,\n };\n var bottomLeftTopRightRun = countBlackWhiteRun(point, bottomLeftPoint, matrix, ratios.length);\n var horzError = scoreBlackWhiteRun(horizontalRun, ratios);\n var vertError = scoreBlackWhiteRun(verticalRun, ratios);\n var diagDownError = scoreBlackWhiteRun(topLeftBottomRightRun, ratios);\n var diagUpError = scoreBlackWhiteRun(bottomLeftTopRightRun, ratios);\n var ratioError = Math.sqrt(horzError.error * horzError.error +\n vertError.error * vertError.error +\n diagDownError.error * diagDownError.error +\n diagUpError.error * diagUpError.error);\n var avgSize = (horzError.averageSize + vertError.averageSize + diagDownError.averageSize + diagUpError.averageSize) / 4;\n var sizeError = (Math.pow((horzError.averageSize - avgSize), 2) +\n Math.pow((vertError.averageSize - avgSize), 2) +\n Math.pow((diagDownError.averageSize - avgSize), 2) +\n Math.pow((diagUpError.averageSize - avgSize), 2)) / avgSize;\n return ratioError + sizeError;\n }\n catch (_a) {\n return Infinity;\n }\n}\nfunction locate(matrix) {\n var finderPatternQuads = [];\n var activeFinderPatternQuads = [];\n var alignmentPatternQuads = [];\n var activeAlignmentPatternQuads = [];\n var _loop_1 = function (y) {\n var length_1 = 0;\n var lastBit = false;\n var scans = [0, 0, 0, 0, 0];\n var _loop_2 = function (x) {\n var v = matrix.get(x, y);\n if (v === lastBit) {\n length_1++;\n }\n else {\n scans = [scans[1], scans[2], scans[3], scans[4], length_1];\n length_1 = 1;\n lastBit = v;\n // Do the last 5 color changes ~ match the expected ratio for a finder pattern? 1:1:3:1:1 of b:w:b:w:b\n var averageFinderPatternBlocksize = sum(scans) / 7;\n var validFinderPattern = Math.abs(scans[0] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[1] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[2] - 3 * averageFinderPatternBlocksize) < 3 * averageFinderPatternBlocksize &&\n Math.abs(scans[3] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[4] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n !v; // And make sure the current pixel is white since finder patterns are bordered in white\n // Do the last 3 color changes ~ match the expected ratio for an alignment pattern? 1:1:1 of w:b:w\n var averageAlignmentPatternBlocksize = sum(scans.slice(-3)) / 3;\n var validAlignmentPattern = Math.abs(scans[2] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n Math.abs(scans[3] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n Math.abs(scans[4] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n v; // Is the current pixel black since alignment patterns are bordered in black\n if (validFinderPattern) {\n // Compute the start and end x values of the large center black square\n var endX_1 = x - scans[3] - scans[4];\n var startX_1 = endX_1 - scans[2];\n var line = { startX: startX_1, endX: endX_1, y: y };\n // Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with\n // that line as the starting point.\n var matchingQuads = activeFinderPatternQuads.filter(function (q) {\n return (startX_1 >= q.bottom.startX && startX_1 <= q.bottom.endX) ||\n (endX_1 >= q.bottom.startX && startX_1 <= q.bottom.endX) ||\n (startX_1 <= q.bottom.startX && endX_1 >= q.bottom.endX && ((scans[2] / (q.bottom.endX - q.bottom.startX)) < MAX_QUAD_RATIO &&\n (scans[2] / (q.bottom.endX - q.bottom.startX)) > MIN_QUAD_RATIO));\n });\n if (matchingQuads.length > 0) {\n matchingQuads[0].bottom = line;\n }\n else {\n activeFinderPatternQuads.push({ top: line, bottom: line });\n }\n }\n if (validAlignmentPattern) {\n // Compute the start and end x values of the center black square\n var endX_2 = x - scans[4];\n var startX_2 = endX_2 - scans[3];\n var line = { startX: startX_2, y: y, endX: endX_2 };\n // Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with\n // that line as the starting point.\n var matchingQuads = activeAlignmentPatternQuads.filter(function (q) {\n return (startX_2 >= q.bottom.startX && startX_2 <= q.bottom.endX) ||\n (endX_2 >= q.bottom.startX && startX_2 <= q.bottom.endX) ||\n (startX_2 <= q.bottom.startX && endX_2 >= q.bottom.endX && ((scans[2] / (q.bottom.endX - q.bottom.startX)) < MAX_QUAD_RATIO &&\n (scans[2] / (q.bottom.endX - q.bottom.startX)) > MIN_QUAD_RATIO));\n });\n if (matchingQuads.length > 0) {\n matchingQuads[0].bottom = line;\n }\n else {\n activeAlignmentPatternQuads.push({ top: line, bottom: line });\n }\n }\n }\n };\n for (var x = -1; x <= matrix.width; x++) {\n _loop_2(x);\n }\n finderPatternQuads.push.apply(finderPatternQuads, activeFinderPatternQuads.filter(function (q) { return q.bottom.y !== y && q.bottom.y - q.top.y >= 2; }));\n activeFinderPatternQuads = activeFinderPatternQuads.filter(function (q) { return q.bottom.y === y; });\n alignmentPatternQuads.push.apply(alignmentPatternQuads, activeAlignmentPatternQuads.filter(function (q) { return q.bottom.y !== y; }));\n activeAlignmentPatternQuads = activeAlignmentPatternQuads.filter(function (q) { return q.bottom.y === y; });\n };\n for (var y = 0; y <= matrix.height; y++) {\n _loop_1(y);\n }\n finderPatternQuads.push.apply(finderPatternQuads, activeFinderPatternQuads.filter(function (q) { return q.bottom.y - q.top.y >= 2; }));\n alignmentPatternQuads.push.apply(alignmentPatternQuads, activeAlignmentPatternQuads);\n var finderPatternGroups = finderPatternQuads\n .filter(function (q) { return q.bottom.y - q.top.y >= 2; }) // All quads must be at least 2px tall since the center square is larger than a block\n .map(function (q) {\n var x = (q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) / 4;\n var y = (q.top.y + q.bottom.y + 1) / 2;\n if (!matrix.get(Math.round(x), Math.round(y))) {\n return;\n }\n var lengths = [q.top.endX - q.top.startX, q.bottom.endX - q.bottom.startX, q.bottom.y - q.top.y + 1];\n var size = sum(lengths) / lengths.length;\n var score = scorePattern({ x: Math.round(x), y: Math.round(y) }, [1, 1, 3, 1, 1], matrix);\n return { score: score, x: x, y: y, size: size };\n })\n .filter(function (q) { return !!q; }) // Filter out any rejected quads from above\n .sort(function (a, b) { return a.score - b.score; })\n .map(function (point, i, finderPatterns) {\n if (i > MAX_FINDERPATTERNS_TO_SEARCH) {\n return null;\n }\n var otherPoints = finderPatterns\n .filter(function (p, ii) { return i !== ii; })\n .map(function (p) { return ({ x: p.x, y: p.y, score: p.score + (Math.pow((p.size - point.size), 2)) / point.size, size: p.size }); })\n .sort(function (a, b) { return a.score - b.score; });\n if (otherPoints.length < 2) {\n return null;\n }\n var score = point.score + otherPoints[0].score + otherPoints[1].score;\n return { points: [point].concat(otherPoints.slice(0, 2)), score: score };\n })\n .filter(function (q) { return !!q; }) // Filter out any rejected finder patterns from above\n .sort(function (a, b) { return a.score - b.score; });\n if (finderPatternGroups.length === 0) {\n return null;\n }\n var _a = reorderFinderPatterns(finderPatternGroups[0].points[0], finderPatternGroups[0].points[1], finderPatternGroups[0].points[2]), topRight = _a.topRight, topLeft = _a.topLeft, bottomLeft = _a.bottomLeft;\n // Now that we've found the three finder patterns we can determine the blockSize and the size of the QR code.\n // We'll use these to help find the alignment pattern but also later when we do the extraction.\n var dimension;\n var moduleSize;\n try {\n (_b = computeDimension(topLeft, topRight, bottomLeft, matrix), dimension = _b.dimension, moduleSize = _b.moduleSize);\n }\n catch (e) {\n return null;\n }\n // Now find the alignment pattern\n var bottomRightFinderPattern = {\n x: topRight.x - topLeft.x + bottomLeft.x,\n y: topRight.y - topLeft.y + bottomLeft.y,\n };\n var modulesBetweenFinderPatterns = ((distance(topLeft, bottomLeft) + distance(topLeft, topRight)) / 2 / moduleSize);\n var correctionToTopLeft = 1 - (3 / modulesBetweenFinderPatterns);\n var expectedAlignmentPattern = {\n x: topLeft.x + correctionToTopLeft * (bottomRightFinderPattern.x - topLeft.x),\n y: topLeft.y + correctionToTopLeft * (bottomRightFinderPattern.y - topLeft.y),\n };\n var alignmentPatterns = alignmentPatternQuads\n .map(function (q) {\n var x = (q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) / 4;\n var y = (q.top.y + q.bottom.y + 1) / 2;\n if (!matrix.get(Math.floor(x), Math.floor(y))) {\n return;\n }\n var lengths = [q.top.endX - q.top.startX, q.bottom.endX - q.bottom.startX, (q.bottom.y - q.top.y + 1)];\n var size = sum(lengths) / lengths.length;\n var sizeScore = scorePattern({ x: Math.floor(x), y: Math.floor(y) }, [1, 1, 1], matrix);\n var score = sizeScore + distance({ x: x, y: y }, expectedAlignmentPattern);\n return { x: x, y: y, score: score };\n })\n .filter(function (v) { return !!v; })\n .sort(function (a, b) { return a.score - b.score; });\n // If there are less than 15 modules between finder patterns it's a version 1 QR code and as such has no alignmemnt pattern\n // so we can only use our best guess.\n var alignmentPattern = modulesBetweenFinderPatterns >= 15 && alignmentPatterns.length ? alignmentPatterns[0] : expectedAlignmentPattern;\n return {\n alignmentPattern: { x: alignmentPattern.x, y: alignmentPattern.y },\n bottomLeft: { x: bottomLeft.x, y: bottomLeft.y },\n dimension: dimension,\n topLeft: { x: topLeft.x, y: topLeft.y },\n topRight: { x: topRight.x, y: topRight.y },\n };\n var _b;\n}\nexports.locate = locate;\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\-?\\d?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* Active `debug` instances.\n\t*/\n\tcreateDebug.instances = [];\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.enabled = createDebug.enabled(namespace);\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = selectColor(namespace);\n\t\tdebug.destroy = destroy;\n\t\tdebug.extend = extend;\n\t\t// Debug.formatArgs = formatArgs;\n\t\t// debug.rawLog = rawLog;\n\n\t\t// env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\tcreateDebug.instances.push(debug);\n\n\t\treturn debug;\n\t}\n\n\tfunction destroy() {\n\t\tconst index = createDebug.instances.indexOf(this);\n\t\tif (index !== -1) {\n\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\tconst instance = createDebug.instances[i];\n\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\nfunction log(...args) {\n\t// This hackery is required for IE8/9, where\n\t// the `console.log` function doesn't have 'apply'\n\treturn typeof console === 'object' &&\n\t\tconsole.log &&\n\t\tconsole.log(...args);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","// originally pulled out of simple-peer\n\nmodule.exports = function getBrowserRTC () {\n if (typeof window === 'undefined') return null\n var wrtc = {\n RTCPeerConnection: window.RTCPeerConnection || window.mozRTCPeerConnection ||\n window.webkitRTCPeerConnection,\n RTCSessionDescription: window.RTCSessionDescription ||\n window.mozRTCSessionDescription || window.webkitRTCSessionDescription,\n RTCIceCandidate: window.RTCIceCandidate || window.mozRTCIceCandidate ||\n window.webkitRTCIceCandidate\n }\n if (!wrtc.RTCPeerConnection) return null\n return wrtc\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <[email protected]> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n\n // XXX: phantomjs doesn't like a buffer being passed here\n var bytes = Buffer.from(rawBytes.buffer)\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","module.exports = require('events').EventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","module.exports = Peer\n\nvar debug = require('debug')('simple-peer')\nvar getBrowserRTC = require('get-browser-rtc')\nvar inherits = require('inherits')\nvar randombytes = require('randombytes')\nvar stream = require('readable-stream')\n\nvar MAX_BUFFERED_AMOUNT = 64 * 1024\nvar ICECOMPLETE_TIMEOUT = 5 * 1000\nvar CHANNEL_CLOSING_TIMEOUT = 5 * 1000\n\ninherits(Peer, stream.Duplex)\n\n/**\n * WebRTC peer connection. Same API as node core `net.Socket`, plus a few extra methods.\n * Duplex stream.\n * @param {Object} opts\n */\nfunction Peer (opts) {\n var self = this\n if (!(self instanceof Peer)) return new Peer(opts)\n\n self._id = randombytes(4).toString('hex').slice(0, 7)\n self._debug('new peer %o', opts)\n\n opts = Object.assign({\n allowHalfOpen: false\n }, opts)\n\n stream.Duplex.call(self, opts)\n\n self.channelName = opts.initiator\n ? opts.channelName || randombytes(20).toString('hex')\n : null\n\n // Needed by _transformConstraints, so set this early\n self._isChromium = typeof window !== 'undefined' && !!window.webkitRTCPeerConnection\n\n self.initiator = opts.initiator || false\n self.channelConfig = opts.channelConfig || Peer.channelConfig\n self.config = opts.config || Peer.config\n self.constraints = self._transformConstraints(opts.constraints || Peer.constraints)\n self.offerConstraints = self._transformConstraints(opts.offerConstraints || {})\n self.answerConstraints = self._transformConstraints(opts.answerConstraints || {})\n self.sdpTransform = opts.sdpTransform || function (sdp) { return sdp }\n self.streams = opts.streams || (opts.stream ? [opts.stream] : []) // support old \"stream\" option\n self.trickle = opts.trickle !== undefined ? opts.trickle : true\n self.allowHalfTrickle = opts.allowHalfTrickle !== undefined ? opts.allowHalfTrickle : false\n self.iceCompleteTimeout = opts.iceCompleteTimeout || ICECOMPLETE_TIMEOUT\n\n self.destroyed = false\n self.connected = false\n\n self.remoteAddress = undefined\n self.remoteFamily = undefined\n self.remotePort = undefined\n self.localAddress = undefined\n self.localPort = undefined\n\n self._wrtc = (opts.wrtc && typeof opts.wrtc === 'object')\n ? opts.wrtc\n : getBrowserRTC()\n\n if (!self._wrtc) {\n if (typeof window === 'undefined') {\n throw makeError('No WebRTC support: Specify `opts.wrtc` option in this environment', 'ERR_WEBRTC_SUPPORT')\n } else {\n throw makeError('No WebRTC support: Not a supported browser', 'ERR_WEBRTC_SUPPORT')\n }\n }\n\n self._pcReady = false\n self._channelReady = false\n self._iceComplete = false // ice candidate trickle done (got null candidate)\n self._iceCompleteTimer = null // send an offer/answer anyway after some timeout\n self._channel = null\n self._pendingCandidates = []\n\n self._isNegotiating = !self.initiator // is this peer waiting for negotiation to complete?\n self._batchedNegotiation = false // batch synchronous negotiations\n self._queuedNegotiation = false // is there a queued negotiation request?\n self._sendersAwaitingStable = []\n self._senderMap = new WeakMap()\n self._firstStable = true\n self._closingInterval = null\n\n self._remoteTracks = []\n self._remoteStreams = []\n\n self._chunk = null\n self._cb = null\n self._interval = null\n\n self._pc = new (self._wrtc.RTCPeerConnection)(self.config, self.constraints)\n if (self._isChromium || (self._wrtc && self._wrtc.electronDaemon)) { // HACK: Electron and Chromium need a promise shim\n shimPromiseAPI(self._wrtc.RTCPeerConnection, self._pc)\n }\n\n // We prefer feature detection whenever possible, but sometimes that's not\n // possible for certain implementations.\n self._isReactNativeWebrtc = typeof self._pc._peerConnectionId === 'number'\n\n self._pc.oniceconnectionstatechange = function () {\n self._onIceStateChange()\n }\n self._pc.onicegatheringstatechange = function () {\n self._onIceStateChange()\n }\n self._pc.onsignalingstatechange = function () {\n self._onSignalingStateChange()\n }\n self._pc.onicecandidate = function (event) {\n self._onIceCandidate(event)\n }\n\n // Other spec events, unused by this implementation:\n // - onconnectionstatechange\n // - onicecandidateerror\n // - onfingerprintfailure\n // - onnegotiationneeded\n\n if (self.initiator) {\n self._setupData({\n channel: self._pc.createDataChannel(self.channelName, self.channelConfig)\n })\n } else {\n self._pc.ondatachannel = function (event) {\n self._setupData(event)\n }\n }\n\n if ('addTrack' in self._pc) {\n if (self.streams) {\n self.streams.forEach(function (stream) {\n self.addStream(stream)\n })\n }\n self._pc.ontrack = function (event) {\n self._onTrack(event)\n }\n }\n\n if (self.initiator) {\n self._needsNegotiation()\n }\n\n self._onFinishBound = function () {\n self._onFinish()\n }\n self.once('finish', self._onFinishBound)\n}\n\nPeer.WEBRTC_SUPPORT = !!getBrowserRTC()\n\n/**\n * Expose config, constraints, and data channel config for overriding all Peer\n * instances. Otherwise, just set opts.config, opts.constraints, or opts.channelConfig\n * when constructing a Peer.\n */\nPeer.config = {\n iceServers: [\n {\n urls: 'stun:stun.l.google.com:19302'\n },\n {\n urls: 'stun:global.stun.twilio.com:3478?transport=udp'\n }\n ]\n}\nPeer.constraints = {}\nPeer.channelConfig = {}\n\nObject.defineProperty(Peer.prototype, 'bufferSize', {\n get: function () {\n var self = this\n return (self._channel && self._channel.bufferedAmount) || 0\n }\n})\n\nPeer.prototype.address = function () {\n var self = this\n return { port: self.localPort, family: 'IPv4', address: self.localAddress }\n}\n\nPeer.prototype.signal = function (data) {\n var self = this\n if (self.destroyed) throw makeError('cannot signal after peer is destroyed', 'ERR_SIGNALING')\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data)\n } catch (err) {\n data = {}\n }\n }\n self._debug('signal()')\n\n if (data.renegotiate && self.initiator) {\n self._debug('got request to renegotiate')\n self._needsNegotiation()\n }\n if (data.candidate) {\n if (self._pc.remoteDescription && self._pc.remoteDescription.type) self._addIceCandidate(data.candidate)\n else self._pendingCandidates.push(data.candidate)\n }\n if (data.sdp) {\n self._pc.setRemoteDescription(new (self._wrtc.RTCSessionDescription)(data)).then(function () {\n if (self.destroyed) return\n\n self._pendingCandidates.forEach(function (candidate) {\n self._addIceCandidate(candidate)\n })\n self._pendingCandidates = []\n\n if (self._pc.remoteDescription.type === 'offer') self._createAnswer()\n }).catch(function (err) { self.destroy(makeError(err, 'ERR_SET_REMOTE_DESCRIPTION')) })\n }\n if (!data.sdp && !data.candidate && !data.renegotiate) {\n self.destroy(makeError('signal() called with invalid signal data', 'ERR_SIGNALING'))\n }\n}\n\nPeer.prototype._addIceCandidate = function (candidate) {\n var self = this\n try {\n self._pc.addIceCandidate(\n new self._wrtc.RTCIceCandidate(candidate),\n noop,\n function (err) { self.destroy(makeError(err, 'ERR_ADD_ICE_CANDIDATE')) }\n )\n } catch (err) {\n self.destroy(makeError('error adding candidate: ' + err.message, 'ERR_ADD_ICE_CANDIDATE'))\n }\n}\n\n/**\n * Send text/binary data to the remote peer.\n * @param {ArrayBufferView|ArrayBuffer|Buffer|string|Blob} chunk\n */\nPeer.prototype.send = function (chunk) {\n var self = this\n self._channel.send(chunk)\n}\n\n/**\n * Add a MediaStream to the connection.\n * @param {MediaStream} stream\n */\nPeer.prototype.addStream = function (stream) {\n var self = this\n\n self._debug('addStream()')\n\n stream.getTracks().forEach(function (track) {\n self.addTrack(track, stream)\n })\n}\n\n/**\n * Add a MediaStreamTrack to the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\nPeer.prototype.addTrack = function (track, stream) {\n var self = this\n\n self._debug('addTrack()')\n\n var sender = self._pc.addTrack(track, stream)\n var submap = self._senderMap.get(track) || new WeakMap() // nested WeakMaps map [track, stream] to sender\n submap.set(stream, sender)\n self._senderMap.set(track, submap)\n self._needsNegotiation()\n}\n\n/**\n * Replace a MediaStreamTrack by another in the connection.\n * @param {MediaStreamTrack} oldTrack\n * @param {MediaStreamTrack} newTrack\n * @param {MediaStream} stream\n */\nPeer.prototype.replaceTrack = async function (oldTrack, newTrack, stream) {\n var self = this\n\n self._debug('replaceTrack()')\n\n var submap = self._senderMap.get(oldTrack)\n var sender = submap ? submap.get(stream) : null\n if (!sender) {\n self.destroy(new Error('Cannot replace track that was never added.'))\n }\n if (newTrack) self._senderMap.set(newTrack, submap)\n\n if (sender.replaceTrack != null) {\n await sender.replaceTrack(newTrack)\n } else {\n self.destroy(makeError('replaceTrack is not supported in this browser', 'ERR_UNSUPPORTED_REPLACETRACK'))\n }\n}\n\n/**\n * Remove a MediaStreamTrack from the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\nPeer.prototype.removeTrack = function (track, stream) {\n var self = this\n\n self._debug('removeSender()')\n\n var submap = self._senderMap.get(track)\n var sender = submap ? submap.get(stream) : null\n if (!sender) {\n self.destroy(new Error('Cannot remove track that was never added.'))\n }\n try {\n self._pc.removeTrack(sender)\n } catch (err) {\n if (err.name === 'NS_ERROR_UNEXPECTED') {\n self._sendersAwaitingStable.push(sender) // HACK: Firefox must wait until (signalingState === stable) https://bugzilla.mozilla.org/show_bug.cgi?id=1133874\n } else {\n self.destroy(err)\n }\n }\n}\n\n/**\n * Remove a MediaStream from the connection.\n * @param {MediaStream} stream\n */\nPeer.prototype.removeStream = function (stream) {\n var self = this\n\n self._debug('removeSenders()')\n\n stream.getTracks().forEach(function (track) {\n self.removeTrack(track, stream)\n })\n}\n\nPeer.prototype._needsNegotiation = function () {\n var self = this\n\n self._debug('_needsNegotiation')\n if (self._batchedNegotiation) return // batch synchronous renegotiations\n self._batchedNegotiation = true\n setTimeout(function () {\n self._batchedNegotiation = false\n self._debug('starting batched negotiation')\n self.negotiate()\n }, 0)\n}\n\nPeer.prototype.negotiate = function () {\n var self = this\n\n if (self.initiator) {\n if (self._isNegotiating) {\n self._queuedNegotiation = true\n self._debug('already negotiating, queueing')\n } else {\n self._debug('start negotiation')\n self._createOffer()\n }\n } else {\n if (!self._isNegotiating) {\n self._debug('requesting negotiation from initiator')\n self.emit('signal', { // request initiator to renegotiate\n renegotiate: true\n })\n }\n }\n self._isNegotiating = true\n}\n\n// TODO: Delete this method once readable-stream is updated to contain a default\n// implementation of destroy() that automatically calls _destroy()\n// See: https://github.com/nodejs/readable-stream/issues/283\nPeer.prototype.destroy = function (err) {\n var self = this\n self._destroy(err, function () {})\n}\n\nPeer.prototype._destroy = function (err, cb) {\n var self = this\n if (self.destroyed) return\n\n self._debug('destroy (error: %s)', err && (err.message || err))\n\n self.readable = self.writable = false\n\n if (!self._readableState.ended) self.push(null)\n if (!self._writableState.finished) self.end()\n\n self.destroyed = true\n self.connected = false\n self._pcReady = false\n self._channelReady = false\n self._remoteTracks = null\n self._remoteStreams = null\n self._senderMap = null\n\n clearInterval(self._closingInterval)\n self._closingInterval = null\n\n clearInterval(self._interval)\n self._interval = null\n self._chunk = null\n self._cb = null\n\n if (self._onFinishBound) self.removeListener('finish', self._onFinishBound)\n self._onFinishBound = null\n\n if (self._channel) {\n try {\n self._channel.close()\n } catch (err) {}\n\n self._channel.onmessage = null\n self._channel.onopen = null\n self._channel.onclose = null\n self._channel.onerror = null\n }\n if (self._pc) {\n try {\n self._pc.close()\n } catch (err) {}\n\n self._pc.oniceconnectionstatechange = null\n self._pc.onicegatheringstatechange = null\n self._pc.onsignalingstatechange = null\n self._pc.onicecandidate = null\n if ('addTrack' in self._pc) {\n self._pc.ontrack = null\n }\n self._pc.ondatachannel = null\n }\n self._pc = null\n self._channel = null\n\n if (err) self.emit('error', err)\n self.emit('close')\n cb()\n}\n\nPeer.prototype._setupData = function (event) {\n var self = this\n if (!event.channel) {\n // In some situations `pc.createDataChannel()` returns `undefined` (in wrtc),\n // which is invalid behavior. Handle it gracefully.\n // See: https://github.com/feross/simple-peer/issues/163\n return self.destroy(makeError('Data channel event is missing `channel` property', 'ERR_DATA_CHANNEL'))\n }\n\n self._channel = event.channel\n self._channel.binaryType = 'arraybuffer'\n\n if (typeof self._channel.bufferedAmountLowThreshold === 'number') {\n self._channel.bufferedAmountLowThreshold = MAX_BUFFERED_AMOUNT\n }\n\n self.channelName = self._channel.label\n\n self._channel.onmessage = function (event) {\n self._onChannelMessage(event)\n }\n self._channel.onbufferedamountlow = function () {\n self._onChannelBufferedAmountLow()\n }\n self._channel.onopen = function () {\n self._onChannelOpen()\n }\n self._channel.onclose = function () {\n self._onChannelClose()\n }\n self._channel.onerror = function (err) {\n self.destroy(makeError(err, 'ERR_DATA_CHANNEL'))\n }\n\n // HACK: Chrome will sometimes get stuck in readyState \"closing\", let's check for this condition\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n var isClosing = false\n self._closingInterval = setInterval(function () { // No \"onclosing\" event\n if (self._channel && self._channel.readyState === 'closing') {\n if (isClosing) self._onChannelClose() // closing timed out: equivalent to onclose firing\n isClosing = true\n } else {\n isClosing = false\n }\n }, CHANNEL_CLOSING_TIMEOUT)\n}\n\nPeer.prototype._read = function () {}\n\nPeer.prototype._write = function (chunk, encoding, cb) {\n var self = this\n if (self.destroyed) return cb(makeError('cannot write after peer is destroyed', 'ERR_DATA_CHANNEL'))\n\n if (self.connected) {\n try {\n self.send(chunk)\n } catch (err) {\n return self.destroy(makeError(err, 'ERR_DATA_CHANNEL'))\n }\n if (self._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n self._debug('start backpressure: bufferedAmount %d', self._channel.bufferedAmount)\n self._cb = cb\n } else {\n cb(null)\n }\n } else {\n self._debug('write before connect')\n self._chunk = chunk\n self._cb = cb\n }\n}\n\n// When stream finishes writing, close socket. Half open connections are not\n// supported.\nPeer.prototype._onFinish = function () {\n var self = this\n if (self.destroyed) return\n\n if (self.connected) {\n destroySoon()\n } else {\n self.once('connect', destroySoon)\n }\n\n // Wait a bit before destroying so the socket flushes.\n // TODO: is there a more reliable way to accomplish this?\n function destroySoon () {\n setTimeout(function () {\n self.destroy()\n }, 1000)\n }\n}\n\nPeer.prototype._startIceCompleteTimeout = function () {\n debug('started iceComplete timeout')\n var self = this\n if (self.destroyed) return\n if (self._iceCompleteTimer) return\n self._iceCompleteTimer = setTimeout(function () {\n if (!self._iceComplete) {\n self._iceComplete = true\n self.emit('iceTimeout')\n self.emit('_iceComplete')\n }\n }, this.iceCompleteTimeout)\n}\n\nPeer.prototype._createOffer = function () {\n var self = this\n if (self.destroyed) return\n\n self._pc.createOffer(self.offerConstraints).then(function (offer) {\n if (self.destroyed) return\n if (!self.trickle && !self.allowHalfTrickle) offer.sdp = filterTrickle(offer.sdp)\n offer.sdp = self.sdpTransform(offer.sdp)\n self._pc.setLocalDescription(offer).then(onSuccess).catch(onError)\n\n function onSuccess () {\n self._debug('createOffer success')\n if (self.destroyed) return\n if (self.trickle || self._iceComplete) sendOffer()\n else self.once('_iceComplete', sendOffer) // wait for candidates\n }\n\n function onError (err) {\n self.destroy(makeError(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n function sendOffer () {\n if (self.destroyed) return\n var signal = self._pc.localDescription || offer\n self._debug('signal')\n self.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n }\n }).catch(function (err) { self.destroy(makeError(err, 'ERR_CREATE_OFFER')) })\n}\n\nPeer.prototype._createAnswer = function () {\n var self = this\n if (self.destroyed) return\n\n self._pc.createAnswer(self.answerConstraints).then(function (answer) {\n if (self.destroyed) return\n if (!self.trickle && !self.allowHalfTrickle) answer.sdp = filterTrickle(answer.sdp)\n answer.sdp = self.sdpTransform(answer.sdp)\n self._pc.setLocalDescription(answer).then(onSuccess).catch(onError)\n\n function onSuccess () {\n if (self.destroyed) return\n if (self.trickle || self._iceComplete) sendAnswer()\n else self.once('_iceComplete', sendAnswer)\n }\n\n function onError (err) {\n self.destroy(makeError(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n function sendAnswer () {\n if (self.destroyed) return\n var signal = self._pc.localDescription || answer\n self._debug('signal')\n self.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n }\n }).catch(function (err) { self.destroy(makeError(err, 'ERR_CREATE_ANSWER')) })\n}\n\nPeer.prototype._onIceStateChange = function () {\n var self = this\n if (self.destroyed) return\n var iceConnectionState = self._pc.iceConnectionState\n var iceGatheringState = self._pc.iceGatheringState\n\n self._debug(\n 'iceStateChange (connection: %s) (gathering: %s)',\n iceConnectionState,\n iceGatheringState\n )\n self.emit('iceStateChange', iceConnectionState, iceGatheringState)\n\n if (iceConnectionState === 'connected' || iceConnectionState === 'completed') {\n self._pcReady = true\n self._maybeReady()\n }\n if (iceConnectionState === 'failed') {\n self.destroy(makeError('Ice connection failed.', 'ERR_ICE_CONNECTION_FAILURE'))\n }\n if (iceConnectionState === 'closed') {\n self.destroy(new Error('Ice connection closed.'))\n }\n}\n\nPeer.prototype.getStats = function (cb) {\n var self = this\n\n // Promise-based getStats() (standard)\n if (self._pc.getStats.length === 0) {\n self._pc.getStats().then(function (res) {\n var reports = []\n res.forEach(function (report) {\n reports.push(report)\n })\n cb(null, reports)\n }, function (err) { cb(err) })\n\n // Two-parameter callback-based getStats() (deprecated, former standard)\n } else if (self._isReactNativeWebrtc) {\n self._pc.getStats(null, function (res) {\n var reports = []\n res.forEach(function (report) {\n reports.push(report)\n })\n cb(null, reports)\n }, function (err) { cb(err) })\n\n // Single-parameter callback-based getStats() (non-standard)\n } else if (self._pc.getStats.length > 0) {\n self._pc.getStats(function (res) {\n // If we destroy connection in `connect` callback this code might happen to run when actual connection is already closed\n if (self.destroyed) return\n\n var reports = []\n res.result().forEach(function (result) {\n var report = {}\n result.names().forEach(function (name) {\n report[name] = result.stat(name)\n })\n report.id = result.id\n report.type = result.type\n report.timestamp = result.timestamp\n reports.push(report)\n })\n cb(null, reports)\n }, function (err) { cb(err) })\n\n // Unknown browser, skip getStats() since it's anyone's guess which style of\n // getStats() they implement.\n } else {\n cb(null, [])\n }\n}\n\nPeer.prototype._maybeReady = function () {\n var self = this\n self._debug('maybeReady pc %s channel %s', self._pcReady, self._channelReady)\n if (self.connected || self._connecting || !self._pcReady || !self._channelReady) return\n\n self._connecting = true\n\n // HACK: We can't rely on order here, for details see https://github.com/js-platform/node-webrtc/issues/339\n function findCandidatePair () {\n if (self.destroyed) return\n\n self.getStats(function (err, items) {\n if (self.destroyed) return\n\n // Treat getStats error as non-fatal. It's not essential.\n if (err) items = []\n\n var remoteCandidates = {}\n var localCandidates = {}\n var candidatePairs = {}\n var foundSelectedCandidatePair = false\n\n items.forEach(function (item) {\n // TODO: Once all browsers support the hyphenated stats report types, remove\n // the non-hypenated ones\n if (item.type === 'remotecandidate' || item.type === 'remote-candidate') {\n remoteCandidates[item.id] = item\n }\n if (item.type === 'localcandidate' || item.type === 'local-candidate') {\n localCandidates[item.id] = item\n }\n if (item.type === 'candidatepair' || item.type === 'candidate-pair') {\n candidatePairs[item.id] = item\n }\n })\n\n items.forEach(function (item) {\n // Spec-compliant\n if (item.type === 'transport' && item.selectedCandidatePairId) {\n setSelectedCandidatePair(candidatePairs[item.selectedCandidatePairId])\n }\n\n // Old implementations\n if (\n (item.type === 'googCandidatePair' && item.googActiveConnection === 'true') ||\n ((item.type === 'candidatepair' || item.type === 'candidate-pair') && item.selected)\n ) {\n setSelectedCandidatePair(item)\n }\n })\n\n function setSelectedCandidatePair (selectedCandidatePair) {\n foundSelectedCandidatePair = true\n\n var local = localCandidates[selectedCandidatePair.localCandidateId]\n\n if (local && local.ip) {\n // Spec\n self.localAddress = local.ip\n self.localPort = Number(local.port)\n } else if (local && local.ipAddress) {\n // Firefox\n self.localAddress = local.ipAddress\n self.localPort = Number(local.portNumber)\n } else if (typeof selectedCandidatePair.googLocalAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n local = selectedCandidatePair.googLocalAddress.split(':')\n self.localAddress = local[0]\n self.localPort = Number(local[1])\n }\n\n var remote = remoteCandidates[selectedCandidatePair.remoteCandidateId]\n\n if (remote && remote.ip) {\n // Spec\n self.remoteAddress = remote.ip\n self.remotePort = Number(remote.port)\n } else if (remote && remote.ipAddress) {\n // Firefox\n self.remoteAddress = remote.ipAddress\n self.remotePort = Number(remote.portNumber)\n } else if (typeof selectedCandidatePair.googRemoteAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n remote = selectedCandidatePair.googRemoteAddress.split(':')\n self.remoteAddress = remote[0]\n self.remotePort = Number(remote[1])\n }\n self.remoteFamily = 'IPv4'\n\n self._debug(\n 'connect local: %s:%s remote: %s:%s',\n self.localAddress, self.localPort, self.remoteAddress, self.remotePort\n )\n }\n\n // Ignore candidate pair selection in browsers like Safari 11 that do not have any local or remote candidates\n // But wait until at least 1 candidate pair is available\n if (!foundSelectedCandidatePair && (!Object.keys(candidatePairs).length || Object.keys(localCandidates).length)) {\n setTimeout(findCandidatePair, 100)\n return\n } else {\n self._connecting = false\n self.connected = true\n }\n\n if (self._chunk) {\n try {\n self.send(self._chunk)\n } catch (err) {\n return self.destroy(makeError(err, 'ERR_DATA_CHANNEL'))\n }\n self._chunk = null\n self._debug('sent chunk from \"write before connect\"')\n\n var cb = self._cb\n self._cb = null\n cb(null)\n }\n\n // If `bufferedAmountLowThreshold` and 'onbufferedamountlow' are unsupported,\n // fallback to using setInterval to implement backpressure.\n if (typeof self._channel.bufferedAmountLowThreshold !== 'number') {\n self._interval = setInterval(function () { self._onInterval() }, 150)\n if (self._interval.unref) self._interval.unref()\n }\n\n self._debug('connect')\n self.emit('connect')\n })\n }\n findCandidatePair()\n}\n\nPeer.prototype._onInterval = function () {\n var self = this\n if (!self._cb || !self._channel || self._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n return\n }\n self._onChannelBufferedAmountLow()\n}\n\nPeer.prototype._onSignalingStateChange = function () {\n var self = this\n if (self.destroyed) return\n\n if (self._pc.signalingState === 'stable' && !self._firstStable) {\n self._isNegotiating = false\n\n // HACK: Firefox doesn't yet support removing tracks when signalingState !== 'stable'\n self._debug('flushing sender queue', self._sendersAwaitingStable)\n self._sendersAwaitingStable.forEach(function (sender) {\n self._pc.removeTrack(sender)\n self._queuedNegotiation = true\n })\n self._sendersAwaitingStable = []\n\n if (self._queuedNegotiation) {\n self._debug('flushing negotiation queue')\n self._queuedNegotiation = false\n self._needsNegotiation() // negotiate again\n }\n\n self._debug('negotiate')\n self.emit('negotiate')\n }\n self._firstStable = false\n\n self._debug('signalingStateChange %s', self._pc.signalingState)\n self.emit('signalingStateChange', self._pc.signalingState)\n}\n\nPeer.prototype._onIceCandidate = function (event) {\n var self = this\n if (self.destroyed) return\n if (event.candidate && self.trickle) {\n self.emit('signal', {\n candidate: {\n candidate: event.candidate.candidate,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n sdpMid: event.candidate.sdpMid\n }\n })\n } else if (!event.candidate && !self._iceComplete) {\n self._iceComplete = true\n self.emit('_iceComplete')\n }\n // as soon as we've received one valid candidate start timeout\n if (event.candidate) {\n self._startIceCompleteTimeout()\n }\n}\n\nPeer.prototype._onChannelMessage = function (event) {\n var self = this\n if (self.destroyed) return\n var data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n self.push(data)\n}\n\nPeer.prototype._onChannelBufferedAmountLow = function () {\n var self = this\n if (self.destroyed || !self._cb) return\n self._debug('ending backpressure: bufferedAmount %d', self._channel.bufferedAmount)\n var cb = self._cb\n self._cb = null\n cb(null)\n}\n\nPeer.prototype._onChannelOpen = function () {\n var self = this\n if (self.connected || self.destroyed) return\n self._debug('on channel open')\n self._channelReady = true\n self._maybeReady()\n}\n\nPeer.prototype._onChannelClose = function () {\n var self = this\n if (self.destroyed) return\n self._debug('on channel close')\n self.destroy()\n}\n\nPeer.prototype._onTrack = function (event) {\n var self = this\n if (self.destroyed) return\n\n event.streams.forEach(function (eventStream) {\n self._debug('on track')\n self.emit('track', event.track, eventStream)\n\n self._remoteTracks.push({\n track: event.track,\n stream: eventStream\n })\n\n if (self._remoteStreams.some(function (remoteStream) {\n return remoteStream.id === eventStream.id\n })) return // Only fire one 'stream' event, even though there may be multiple tracks per stream\n\n self._remoteStreams.push(eventStream)\n setTimeout(function () {\n self.emit('stream', eventStream) // ensure all tracks have been added\n }, 0)\n })\n}\n\nPeer.prototype.setConstraints = function (constraints) {\n var self = this\n if (self.initiator) {\n self.offerConstraints = self._transformConstraints(constraints)\n } else {\n self.answerConstraints = self._transformConstraints(constraints)\n }\n}\n\nPeer.prototype._debug = function () {\n var self = this\n var args = [].slice.call(arguments)\n args[0] = '[' + self._id + '] ' + args[0]\n debug.apply(null, args)\n}\n\n// Transform constraints objects into the new format (unless Chromium)\n// TODO: This can be removed when Chromium supports the new format\nPeer.prototype._transformConstraints = function (constraints) {\n var self = this\n\n if (Object.keys(constraints).length === 0) {\n return constraints\n }\n\n if ((constraints.mandatory || constraints.optional) && !self._isChromium) {\n // convert to new format\n\n // Merge mandatory and optional objects, prioritizing mandatory\n var newConstraints = Object.assign({}, constraints.optional, constraints.mandatory)\n\n // fix casing\n if (newConstraints.OfferToReceiveVideo !== undefined) {\n newConstraints.offerToReceiveVideo = newConstraints.OfferToReceiveVideo\n delete newConstraints['OfferToReceiveVideo']\n }\n\n if (newConstraints.OfferToReceiveAudio !== undefined) {\n newConstraints.offerToReceiveAudio = newConstraints.OfferToReceiveAudio\n delete newConstraints['OfferToReceiveAudio']\n }\n\n return newConstraints\n } else if (!constraints.mandatory && !constraints.optional && self._isChromium) {\n // convert to old format\n\n // fix casing\n if (constraints.offerToReceiveVideo !== undefined) {\n constraints.OfferToReceiveVideo = constraints.offerToReceiveVideo\n delete constraints['offerToReceiveVideo']\n }\n\n if (constraints.offerToReceiveAudio !== undefined) {\n constraints.OfferToReceiveAudio = constraints.offerToReceiveAudio\n delete constraints['offerToReceiveAudio']\n }\n\n return {\n mandatory: constraints // NOTE: All constraints are upgraded to mandatory\n }\n }\n\n return constraints\n}\n\n// HACK: Minimal shim to force Chrome and WRTC to use their more reliable callback API\nfunction shimPromiseAPI (RTCPeerConnection, pc) {\n pc.createOffer = function (constraints) {\n return new Promise((resolve, reject) => {\n RTCPeerConnection.prototype.createOffer.call(this, resolve, reject, constraints)\n })\n }\n pc.createAnswer = function (constraints) {\n return new Promise((resolve, reject) => {\n RTCPeerConnection.prototype.createAnswer.call(this, resolve, reject, constraints)\n })\n }\n pc.setLocalDescription = function (description) {\n return new Promise((resolve, reject) => {\n RTCPeerConnection.prototype.setLocalDescription.call(this, description, resolve, reject)\n })\n }\n pc.setRemoteDescription = function (description) {\n return new Promise((resolve, reject) => {\n RTCPeerConnection.prototype.setRemoteDescription.call(this, description, resolve, reject)\n })\n }\n}\n\n// HACK: Filter trickle lines when trickle is disabled #354\nfunction filterTrickle (sdp) {\n return sdp.replace(/a=ice-options:trickle\\s\\n/g, '')\n}\n\nfunction makeError (message, code) {\n var err = new Error(message)\n err.code = code\n return err\n}\n\nfunction noop () {}\n","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || (typeof location !== 'undefined' && location);\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof ArrayBuffer === 'function';\n\nvar isView = function (obj) {\n return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);\n};\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (withNativeBuffer && Buffer.isBuffer(obj)) ||\n (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));\n}\n","/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' || (typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]');\nvar withNativeFile = typeof File === 'function' || (typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]');\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\nvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n } else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n var payload = tryStringify(obj.data);\n if (payload !== false) {\n str += payload;\n } else {\n return ERROR_PACKET;\n }\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\nfunction tryStringify(str) {\n try {\n return JSON.stringify(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n } else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n } else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) {\n return error('unknown packet type ' + p.type);\n }\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n var payload = tryParse(str.substr(i));\n var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n if (isPayloadValid) {\n p.data = payload;\n } else {\n return error('invalid payload');\n }\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error(msg) {\n return {\n type: exports.ERROR,\n data: 'parser error: ' + msg\n };\n}\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new self[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n","\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' ||\n typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof File === 'function' ||\n typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n\nvar stringFromCharCode = String.fromCharCode;\n\n// Taken from https://mths.be/punycode\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\tvar value;\n\tvar extra;\n\twhile (counter < length) {\n\t\tvalue = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// high surrogate, and there is a next character\n\t\t\textra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n// Taken from https://mths.be/punycode\nfunction ucs2encode(array) {\n\tvar length = array.length;\n\tvar index = -1;\n\tvar value;\n\tvar output = '';\n\twhile (++index < length) {\n\t\tvalue = array[index];\n\t\tif (value > 0xFFFF) {\n\t\t\tvalue -= 0x10000;\n\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(value);\n\t}\n\treturn output;\n}\n\nfunction checkScalarValue(codePoint, strict) {\n\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\tif (strict) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n/*--------------------------------------------------------------------------*/\n\nfunction createByte(codePoint, shift) {\n\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n}\n\nfunction encodeCodePoint(codePoint, strict) {\n\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\treturn stringFromCharCode(codePoint);\n\t}\n\tvar symbol = '';\n\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t}\n\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\tcodePoint = 0xFFFD;\n\t\t}\n\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\tsymbol += createByte(codePoint, 6);\n\t}\n\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\tsymbol += createByte(codePoint, 12);\n\t\tsymbol += createByte(codePoint, 6);\n\t}\n\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\treturn symbol;\n}\n\nfunction utf8encode(string, opts) {\n\topts = opts || {};\n\tvar strict = false !== opts.strict;\n\n\tvar codePoints = ucs2decode(string);\n\tvar length = codePoints.length;\n\tvar index = -1;\n\tvar codePoint;\n\tvar byteString = '';\n\twhile (++index < length) {\n\t\tcodePoint = codePoints[index];\n\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t}\n\treturn byteString;\n}\n\n/*--------------------------------------------------------------------------*/\n\nfunction readContinuationByte() {\n\tif (byteIndex >= byteCount) {\n\t\tthrow Error('Invalid byte index');\n\t}\n\n\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\tbyteIndex++;\n\n\tif ((continuationByte & 0xC0) == 0x80) {\n\t\treturn continuationByte & 0x3F;\n\t}\n\n\t// If we end up here, it’s not a continuation byte\n\tthrow Error('Invalid continuation byte');\n}\n\nfunction decodeSymbol(strict) {\n\tvar byte1;\n\tvar byte2;\n\tvar byte3;\n\tvar byte4;\n\tvar codePoint;\n\n\tif (byteIndex > byteCount) {\n\t\tthrow Error('Invalid byte index');\n\t}\n\n\tif (byteIndex == byteCount) {\n\t\treturn false;\n\t}\n\n\t// Read first byte\n\tbyte1 = byteArray[byteIndex] & 0xFF;\n\tbyteIndex++;\n\n\t// 1-byte sequence (no continuation bytes)\n\tif ((byte1 & 0x80) == 0) {\n\t\treturn byte1;\n\t}\n\n\t// 2-byte sequence\n\tif ((byte1 & 0xE0) == 0xC0) {\n\t\tbyte2 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\tif (codePoint >= 0x80) {\n\t\t\treturn codePoint;\n\t\t} else {\n\t\t\tthrow Error('Invalid continuation byte');\n\t\t}\n\t}\n\n\t// 3-byte sequence (may include unpaired surrogates)\n\tif ((byte1 & 0xF0) == 0xE0) {\n\t\tbyte2 = readContinuationByte();\n\t\tbyte3 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\tif (codePoint >= 0x0800) {\n\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t} else {\n\t\t\tthrow Error('Invalid continuation byte');\n\t\t}\n\t}\n\n\t// 4-byte sequence\n\tif ((byte1 & 0xF8) == 0xF0) {\n\t\tbyte2 = readContinuationByte();\n\t\tbyte3 = readContinuationByte();\n\t\tbyte4 = readContinuationByte();\n\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t(byte3 << 0x06) | byte4;\n\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\treturn codePoint;\n\t\t}\n\t}\n\n\tthrow Error('Invalid UTF-8 detected');\n}\n\nvar byteArray;\nvar byteCount;\nvar byteIndex;\nfunction utf8decode(byteString, opts) {\n\topts = opts || {};\n\tvar strict = false !== opts.strict;\n\n\tbyteArray = ucs2decode(byteString);\n\tbyteCount = byteArray.length;\n\tbyteIndex = 0;\n\tvar codePoints = [];\n\tvar tmp;\n\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\tcodePoints.push(tmp);\n\t}\n\treturn ucs2encode(codePoints);\n}\n\nmodule.exports = {\n\tversion: '2.1.2',\n\tencode: utf8encode,\n\tdecode: utf8decode\n};\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","/**\r\n * Create a blob builder even when vendor prefixes exist\r\n */\r\n\r\nvar BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\r\n typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :\r\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\r\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : \r\n false;\r\n\r\n/**\r\n * Check if Blob constructor is supported\r\n */\r\n\r\nvar blobSupported = (function() {\r\n try {\r\n var a = new Blob(['hi']);\r\n return a.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if Blob constructor supports ArrayBufferViews\r\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\r\n */\r\n\r\nvar blobSupportsArrayBufferView = blobSupported && (function() {\r\n try {\r\n var b = new Blob([new Uint8Array([1,2])]);\r\n return b.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if BlobBuilder is supported\r\n */\r\n\r\nvar blobBuilderSupported = BlobBuilder\r\n && BlobBuilder.prototype.append\r\n && BlobBuilder.prototype.getBlob;\r\n\r\n/**\r\n * Helper function that maps ArrayBufferViews to ArrayBuffers\r\n * Used by BlobBuilder constructor and old browsers that didn't\r\n * support it in the Blob constructor.\r\n */\r\n\r\nfunction mapArrayBufferViews(ary) {\r\n return ary.map(function(chunk) {\r\n if (chunk.buffer instanceof ArrayBuffer) {\r\n var buf = chunk.buffer;\r\n\r\n // if this is a subarray, make a copy so we only\r\n // include the subarray region from the underlying buffer\r\n if (chunk.byteLength !== buf.byteLength) {\r\n var copy = new Uint8Array(chunk.byteLength);\r\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\r\n buf = copy.buffer;\r\n }\r\n\r\n return buf;\r\n }\r\n\r\n return chunk;\r\n });\r\n}\r\n\r\nfunction BlobBuilderConstructor(ary, options) {\r\n options = options || {};\r\n\r\n var bb = new BlobBuilder();\r\n mapArrayBufferViews(ary).forEach(function(part) {\r\n bb.append(part);\r\n });\r\n\r\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\r\n};\r\n\r\nfunction BlobConstructor(ary, options) {\r\n return new Blob(mapArrayBufferViews(ary), options || {});\r\n};\r\n\r\nif (typeof Blob !== 'undefined') {\r\n BlobBuilderConstructor.prototype = Blob.prototype;\r\n BlobConstructor.prototype = Blob.prototype;\r\n}\r\n\r\nmodule.exports = (function() {\r\n if (blobSupported) {\r\n return blobSupportsArrayBufferView ? Blob : BlobConstructor;\r\n } else if (blobBuilderSupported) {\r\n return BlobBuilderConstructor;\r\n } else {\r\n return undefined;\r\n }\r\n})();\r\n","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (typeof ArrayBuffer !== 'undefined') {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * <packet type id> [ <data> ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n exports.encodePacket({ type: packet.type, data: fr.result }, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (typeof Blob !== 'undefined' && packet.data instanceof Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * <length>:data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // results of ReactNative environment detection\n this.isReactNative = opts.isReactNative;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n","/* global attachEvent */\n\n/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = (typeof location !== 'undefined' && opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n try {\n var contentType = xhr.getResponseHeader('Content-Type');\n if (self.supportsBinary && contentType === 'application/octet-stream') {\n xhr.responseType = 'arraybuffer';\n }\n } catch (e) {}\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(xhr.status);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (typeof document !== 'undefined') {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (typeof document !== 'undefined') {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return typeof XDomainRequest !== 'undefined' && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (typeof document !== 'undefined') {\n if (typeof attachEvent === 'function') {\n attachEvent('onunload', unloadHandler);\n } else if (typeof addEventListener === 'function') {\n var terminationEvent = 'onpagehide' in self ? 'pagehide' : 'unload';\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * Until https://github.com/tc39/proposal-global is shipped.\n */\nfunction glob () {\n return typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global : {};\n}\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n var global = glob();\n callbacks = global.___eio = (global.___eio || []);\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (typeof addEventListener === 'function') {\n addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\nvar BrowserWebSocket, NodeWebSocket;\nif (typeof self === 'undefined') {\n try {\n NodeWebSocket = require('ws');\n } catch (e) { }\n} else {\n BrowserWebSocket = self.WebSocket || self.MozWebSocket;\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket || NodeWebSocket;\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocket = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n var opts = {\n agent: this.agent,\n perMessageDeflate: this.perMessageDeflate\n };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws = this.usingBrowserWebSocket && !this.isReactNative ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (typeof location !== 'undefined' && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (typeof location !== 'undefined' ? location.hostname : 'localhost');\n this.port = opts.port || (typeof location !== 'undefined' && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // detect ReactNative environment\n this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');\n\n // other options for Node.js or ReactNative client\n if (typeof self === 'undefined' || this.isReactNative) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0),\n isReactNative: this.isReactNative\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n","module.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\nvar hasBin = require('has-binary2');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n this.flags = {};\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = {\n type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,\n data: args\n };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n this.flags = {};\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n var sameNamespace = packet.nsp === this.nsp;\n var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';\n\n if (!sameNamespace && !rootNamespaceError) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags.compress = compress;\n return this;\n};\n\n/**\n * Sets the binary flag\n *\n * @param {Boolean} whether the emitted data contains binary\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.binary = function (binary) {\n this.flags.binary = binary;\n return this;\n};\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n","\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n","const jsQR = require('jsqr');\nconst Peer = require('simple-peer');\nconst io = require('socket.io-client');\nconst state = {\n isConnected: false,\n isCamera: false,\n peerId: '',\n error: {\n show: false,\n message: ''\n },\n qr: {\n output: false,\n data: false\n },\n stream: false,\n video: false,\n log: [],\n socket: false,\n peer: false,\n peerConnected: false,\n searchText: '',\n controls: [\n {\n action: 'play_video',\n icon: 'play_arrow'\n },\n {\n action: 'pause_video',\n icon: 'pause'\n },\n {\n action: 'replay_video',\n icon: 'replay_10'\n },\n {\n action: 'forward_video',\n icon: 'forward_10'\n },\n {\n action: 'next_episode',\n icon: 'fast_forward'\n }\n ]\n};\nconst app = new Vue({\n el: '#app',\n data() {\n return state;\n },\n mounted() {\n const peer = new Peer({ initiator: false, trickle: false });\n const socket = io('https://netflix-signal.herokuapp.com/');\n this.socket = socket;\n this.peer = peer;\n socket.on('incoming-signal', (data) => {\n peer.signal(data);\n });\n peer.on('signal', (data) => {\n socket.emit('set-answer', { signal: data, id: this.peerId });\n });\n peer.on('connect', () => {\n this.peerConnected = true;\n });\n peer.on('data', (data) => {\n this.handleIncoming(data.toString());\n });\n peer.on('error', (e) => {\n this.peerConnected = false;\n this.showError(e.message);\n });\n peer.on('close', function(err) {\n this.peerConnected = false;\n });\n },\n methods: {\n sendPeer(data) {\n this.peer.send(JSON.stringify(data));\n },\n showError(message) {\n this.error.show = true;\n this.error.message = message;\n },\n scanCode() {\n const video = this.$refs.video;\n navigator.mediaDevices\n .getUserMedia({ video: { facingMode: 'environment' } })\n .then((stream) => {\n this.stream = stream;\n this.isCamera = true;\n video.srcObject = stream;\n video.setAttribute('playsinline', true);\n video.play();\n requestAnimationFrame(tick);\n })\n .catch((e) => {\n this.showError(e.message);\n });\n },\n connectRemote() {\n this.socket.emit('get-signal', this.peerId);\n },\n searchNetflix() {\n this.sendPeer({\n action: 'search',\n payload: {\n text: this.searchText\n }\n });\n },\n videoAction(action) {\n this.sendPeer({\n action: 'video_action',\n payload: {\n action\n }\n });\n },\n handleIncoming(dataString) {\n const data = JSON.parse(dataString);\n if (Object.keys(data).includes('error')) {\n this.showError(data.error);\n }\n if (Object.keys(data).includes('success')) {\n this.error.show = false;\n }\n },\n refreshWindow() {\n window.location.reload();\n }\n }\n});\n\nfunction tick() {\n try {\n const video = app.$refs.video;\n if (video.readyState === video.HAVE_ENOUGH_DATA) {\n const canvasElement = app.$refs.canvas;\n const canvas = canvasElement.getContext('2d');\n canvas.drawImage(video, 0, 0, canvasElement.width, canvasElement.height);\n const imageData = canvas.getImageData(0, 0, canvasElement.width, canvasElement.height);\n const code = jsQR(imageData.data, imageData.width, imageData.height, {\n inversionAttempts: 'dontInvert'\n });\n if (code) {\n app.stream.getTracks().forEach((track) => track.stop());\n app.isCamera = false;\n app.qr.output = true;\n app.qr.data = code.data;\n app.peerId = code.data;\n } else {\n app.qr.output = false;\n app.qr.data = '';\n }\n }\n if (!app.qr.output) {\n requestAnimationFrame(tick);\n }\n } catch (e) {\n app.error.show = true;\n app.error.message = e.message;\n }\n}\n"]}